
网络安全 端口 扫描器简介.doc
8页网络安全扫描器简介 迅速发展的 Internet 给人们的生活、工作带来了巨大的方便,但同时,也带来了一些不容忽视的问题,网络信息的安全保密问题就是其中之一 网络的开放性以及黑客的攻击是造成网络不安全的主要原因科学家在设计 Internet 之初就缺乏对安全性的总体构想和设计,我们所用的 TCP/IP 协议是建立在可信的环境之下,首先考虑的是网络互连,它是缺乏对安全方面的考虑的而且 TCP/IP 协议是完全公开的,远程访问使许多攻击者无须到现场就能够得手,连接的主机基于互相信任的原则等等这一些性质使网络更加不安全 先进的技术是实现网络信息安全的有力武器,这些技术包括:密码技术、身份验证技术、访问控制技术、安全内核技术、网络反病毒技术、信息泄漏防治技术、防火墙技术、网络安全漏洞扫描技术、入侵检测技术等而在系统发生安全事故之前对其进行预防性检查,及时发现问题并予以解决不失为一种很好的办法,于是网络安全漏洞扫描技术应运而生 1. 扫描器基本工作原理 扫描器是一种自动检测远程或本地主机安全脆弱点的程序,通过使用扫描器可以不留痕迹的发现远程服务器的各种 TCP 端口的分配及提供的服务和它们的软件版本,这就能让我们间接的或直观的了解到远程主机所存在的安全问题。
扫描器采用模拟攻击的形式对目标可能存在的已知安全漏洞进行逐项检查目标可以是工作站、服务器、交换机、数据库应用等各种对象然后根据扫描结果向系统管理员提供周密可靠的安全性分析报告,为提高网络安全整体水平产生重要依据在网络安全体系的建设中,安全扫描工具花费低、效果好、见效快、与网络的运行相对对立、安装运行简单,可以大规模减少安全管理员的手工劳动,有利于保持全网安全政策的统一和稳定 扫描器并不是一个直接的攻击网络漏洞的程序,它仅仅能帮助我们发现目标机的某些存在的弱点一个好的扫描器能对它得到的数据进行分析,帮助我们查找目标主机的漏洞但它不会提供进入一个系统的详细步骤 扫描器应该有三项功能:发现一个主机和网络的能力;一旦发现一台主机,有发现什么服务正运行在这台主机上的能力;通过测试这些服务,发现这些漏洞的能力 扫描器对 Internet 安全很重要,因为它能揭示一个网络的脆弱点在任何一个现有的平台上都有几百个熟知的安全脆弱点在大多数情况下,这些脆弱点都是唯一的,仅影响一个网络服务人工测试单台主机的脆弱点是一项极其繁琐的工作,而扫描程序能轻易的解决这些问题扫描程序开发者利用可得到的常用攻击方法并把它们集成到整个扫描中,这样使用者就可以通过分析输出的结果发现系统的漏洞。
2.端口扫描介绍 真正的扫描器是 TCP 端口扫描器,这种程序可以选通 TCP/IP 端口和服务(比如,Telnet 或 FTP),并记录目标的回答通过这种方法,可以搜集到关于目标主机的有用信息(比如,一个匿旬用户是否可以登录等等)而其他所谓的扫描器仅仅是 UNIX 网络应用程序,这些程序一般用于观察某一服务是否正在一台远程机器上正常工作,它们不是真正的扫描器,但也可以用于收集目标主机的信息(UNIX 平台上通用的 rusers 和 host 命令就是这类程序的很好的例子) 2.1 TCP SYN 扫描 扫描程序发送的 SYN 数据包,好像准备打开一个新的连接并等待反映一样一个 SYN|ACK 的返回信息表示端口处于侦听状态一个 RST 返回表示端口没有处于侦听状态如果收到一个SYN|ACK,扫描程序必须再发送一个 RST 信号,来关闭这个连接过程 优点:不会在目标计算机上留下纪录 缺点:扫描程序必须要有 root 权限才能建立自己的 SYN 数据包 2.2 TCP FIN 扫描 关闭的端口会用适当的 RST 来回复 FIN 数据包,而打开的端口会忽略对 FIN 数据包的回复 优点:FIN 数据包可以不惹任何麻烦的通过。
缺点:这种方法和系统的实现有一定的关系,有些系统不论是打开的或关闭的端口对 FIN 数据包都要给以回复,这种情况下该方法就不实用了 2.3 TCP connect()扫描 操作系统提供 connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接如果端口处于侦听状态,那么 connect()就能成功否则,这个端口是不能用的,即没有提供服务 优点:系统中的任何用户都有权利使用这个调用;如果对每个目标端口以线性的方式扫描,将会花费相当长的时间,但如果同时打开多个套接字,就能加速扫描 缺点:很容易被发现,目标计算机的 logs 文件会显示一连串连接和连接出错的消息,并且能很快的将它关闭 3.扫描程序介绍 目前存在的扫描器产品主要可分为基于主机的和基于网络的两种,前者主要关注软件所在主机上面的风险漏洞,而后者则是通过网络远程探测其它主机的安全风险漏洞 国外,基于主机的产品主要有:AXENT 公司的 ESM,ISS 公司的 System Scanner 等,基于网络的产品包括 ISS 公司的 Internet Scanner、AXENT 公司的 NetRecon、NAI 公司的 CyberCops Scanner、Cisco 的 NetSonar 等。
目前国内 有中科院网威工作室开发的 NetPower 产品出现,另外北方计算机公司(***) 也有类似产品 下面介绍一些可以在 Internet 上免费获得的扫描程序常用的端口扫描技术 TCP connect() 扫描 这是最基本的 TCP 扫描操作系统提供的 connect()系统调用,用来与每一个感兴趣的目标 计算机的端口进行连接如果端口处于侦听状态,那么 connect()就能成功否则,这个端 口是不能用的,即没有提供服务这个技术的一个最大的优点是,你不需要任何权限系 统中的任何用户都有权利使用这个调用另一个好处就是速度如果对每个目标端口以线 性的方式,使用单独的 connect()调用,那么将会花费相当长的时间,你可以通过同时打开 多个套接字,从而加速扫描使用非阻塞 I/O 允许你设置一个低的时间用尽周期,同时观 察多个套接字但这种方法的缺点是很容易被发觉,并且被过滤掉目标计算机的 logs 文 件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭 TCP SYN 扫描 这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的 TCP 连接 扫描程序发送的是一个 SYN 数据包,好象准备打开一个实际的连接并等待反应一样(参考 TCP 的三次握手建立一个 TCP 连接的过程) 。
一个 SYN|ACK 的返回信息表示端口处于侦听状 态一个 RST 返回,表示端口没有处于侦听态如果收到一个 SYN|ACK,则扫描程序必须 再发送一个 RST 信号,来关闭这个连接过程这种扫描技术的优点在于一般不会在目标计 算机上留下记录但这种方法的一个缺点是,必须要有 root 权限才能建立自己的 SYN 数据 包 TCP FIN 扫描 有的时候有可能 SYN 扫描都不够秘密一些防火墙和包过滤器会对一些指定的端口进行监 视,有的程序能检测到这些扫描相反,FIN 数据包可能会没有任何麻烦的通过这种扫 描方法的思想是关闭的端口会用适当的 RST 来回复 FIN 数据包另一方面,打开的端口会 忽略对 FIN 数据包的回复这种方法和系统的实现有一定的关系有的系统不管端口是否 打开,都回复 RST,这样,这种扫描方法就不适用了并且这种方法在区分 Unix 和 NT 时, 是十分有用的 IP 段扫描 这种不能算是新方法,只是其它技术的变化它并不是直接发送 TCP 探测数据包,是将数 据包分成两个较小的 IP 段这样就将一个 TCP 头分成好几个数据包,从而过滤器就很难探 测到但必须小心一些程序在处理这些小数据包时会有些麻烦。
TCP 反向 ident 扫描 ident 协议允许(rfc1413)看到通过 TCP 连接的任何进程的拥有者的用户名,即使这个连接不 是由这个进程开始的因此你能,举个例子,连接到 http 端口,然后用 identd 来发现服务 器是否正在以 root 权限运行这种方法只能在和目标端口建立了一个完整的 TCP 连接后才能看到 FTP 返回攻击 FTP 协议的一个有趣的特点是它支持代理(proxy)FTP 连接即入侵者可以从自己的计算 机 和目标主机 的 FTP server-PI(协议解释器)连接,建立一个控制通信连接 然后,请求这个 server-PI 激活一个有效的 server-DTP(数据传输进程)来给 Internet 上任何地 方发送文件对于一个 User-DTP,这是个推测,尽管 RFC 明确地定义请求一个服务器发送文 件到另一个服务器是可以的但现在这个方法好象不行了这个协议的缺点是“能用来发 送不能跟踪的邮件和新闻,给许多服务器造成打击,用尽磁盘,企图越过防火墙” 我们利用这个的目的是从一个代理的 FTP 服务器来扫描 TCP 端口这样,你能在一个防火 墙后面连接到一个 FTP 服务器,然后扫描端口(这些原来有可能被阻塞) 。
如果 FTP 服务器 允许从一个目录读写数据,你就能发送任意的数据到发现的打开的端口 对于端口扫描,这个技术是使用 PORT 命令来表示被动的 User DTP 正在目标计算机上的某 个端口侦听然后入侵者试图用 LIST 命令列出当前目录,结果通过 Server-DTP 发送出去 如果目标主机正在某个端口侦听,传输就会成功(产生一个 150 或 226 的回应) 否则,会 出现““425 Can build data connection: Connection refused.““然后,使用另一个 PORT 命令, 尝试目标计算机上的下一个端口这种方法的优点很明显,难以跟踪,能穿过防火墙主 要缺点是速度很慢,有的 FTP 服务器最终能得到一些线索,关闭代理功能 这种方法能成功的情景: 220 FTP server (Version wu-2.4(3) Wed Dec 14 ...) ready. 220 xxx.xxx.xxx.edu FTP server ready. 220 xx.Telcom.xxxx.EDU FTP server (Version wu-2.4(3) Tue Jun 11 ...) ready. 220 lem FTP server (SunOS 4.1) ready. 220 xxx.xxx.es FTP server (Version wu-2.4(11) Sat Apr 27 ...) ready. 220 elios FTP server (SunOS 4.1) ready 这种方法不能成功的情景: 220 FTP server (Version DG-2.0.39 Sun May 4 ...) ready. 220 xxx.xx.xxxxx.EDU Version wu-2.4.2-academ[BETA-12](1) Fri Feb 7 220 ftp Microsoft FTP Service (Version 3.0). 220 xxx FTP server (Version wu-2.4.2-academ[BETA-11](1) Tue Sep 3 ...) ready. 220 xxx.unc.edu FTP server (Version wu-2.4.2-academ[BETA-13](6) ...) ready. UDP ICMP 端口不能到达扫描 这种方法与上面几种方法的不同之处在于使用的是 UDP 协议。
由于这个协议很简单,所以 扫描变得相对比较困难这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口 也并不需要发送一个错误数据包。












