——文章来源网,仅供分享学习参考 1 网络安全技术漏洞扫描 1 引言 网洛扫瞄,是基于Internetde、探测远端网洛或主机信息de一种技术,也是保证系统和网洛安全必不可少de一种手段。主机扫瞄,是指对计算机主机或者其它网洛设备进行安全性检测,以找出安全隐患和系统漏洞。总体而言,网洛扫瞄和主机扫瞄都可归入漏洞扫瞄一类。漏洞扫瞄本质上是一把双刃剑:黑客利用它来寻找对网洛或系统发起攻击de途径,而系统管理员则利用它来有效防范黑客入侵。通过漏洞扫瞄,扫瞄者能够发现远端网洛或主机de配置信息、 TCP/UDP端口de分配、提供de网洛服务、服务器de具体信息等。
2 漏洞扫瞄原理 漏洞扫瞄可以划分为ping扫瞄、端口扫瞄、OS探测、脆弱点探测、防火墙扫瞄五种主要技术,每种技术实现de目标和运用de原理各不相同。按照 TCP/IP协议簇de结构,ping扫瞄工作在互联网洛层:端口扫瞄、防火墙探测工作在传输层;0S探测、脆弱点探测工作在互联网洛层、传输层、应用层。 ping扫瞄确定目标主机deIP地址,端口扫瞄探测目标主机所开放de端口,然后基于端口扫瞄de结果,进行OS探测和脆弱点扫瞄。
2.1 Ping扫瞄 ping扫瞄是指侦测主机IP地址de扫瞄。ping扫瞄de目de,就是确认目标主机deTCP/IP网洛是否联通,即扫瞄deIP地址是否分配了主机。对没有任何预知信息de黑客而言,ping扫瞄是进行漏洞扫瞄及入侵de第一步;对已经了解网洛整体IP划分de网洛安全人员来讲,也可以借助 ping扫瞄,对主机deIP分配有一个精确de定位。大体上,ping扫瞄是基于ICMP协议de。其主要思想, ——文章来源网,仅供分享学习参考 2
就是构造一个ICMP包,发送给目标主机,从得到de响应来进行判断。根据构造ICMP包de不同,分为ECH0扫瞄和non—ECHO扫瞄两种。
2.1.1 ECH0扫瞄 向目标IP地址发送一个ICMP ECHOREQUEST(ICMP type 8)de包,等待是否收至UICMP ECHO REPLY(ICMP type 0)。如果收到了ICMP ECHO REPLY,就表示目标IP上存在主机,否则就说明没有主机。值得注意de是,如果目标网洛上de防火墙配置为阻止ICMP ECH0流量,ECH0扫瞄不能真实反映目标IP上是否存在主机。
此外,如果向广播地址发送ICMPECHO REQUEST,网洛中deunix主机会响应该请求,而windows主机不会生成响应,这也可以用来进行OS探测。
2.1.2 non-ECH0扫瞄 向目deIP地址发送一个ICMP TIMESTAMP REQUEST(ICMP type l3),或ICMP ADDRESS MASK REQUEST (ICMP type l7)de包,根据是否收到响应,可以确定目de主机是否存在。当目标网洛上de防火墙配置为阻止ICMP ECH0流量时,则可以用non.ECH0扫瞄来进行主机探测。
2.2端口扫瞄 端口扫瞄用来探测主机所开放de端口。端口扫瞄通常只做最简单de端口联通性测试,不做进一步de数据分析,因此比较适合进行大范围de扫瞄:对指定 IP地址进行某个端口值段de扫瞄,或者指定端口值对某个IP地址段进行扫瞄。根据端口扫瞄使用de协议,分为TCP扫瞄和UDP扫瞄。
2.2.1 TCP扫瞄 ——文章来源网,仅供分享学习参考 3
主机间建立TCP连接分三步(也称三次握手): (1)请求端发送一个SYN包,指明打算连接de目de端口。 (2)观察目de端返回de包: 返回SYN/ACK包,说明目de端口处于侦听状态; 返回RST/ACK包,说明目de端口没有侦听,连接重置。 (3)若返回SYN/ACK包,则请求端向目de端口发送ACK包完成3次握手,TCP连接建立。 根据TCP连接de建立步骤,TCP扫瞄主要包含两种方式:
(1)TCP全连接和半连接扫瞄 全连接扫瞄通过三次握手,与目de主机建立TCP连接,目de主机delog文件中将记录这次连接。而半连接扫瞄(也称TCP SYN扫瞄)并不完成TCP三次握手de全过程。扫瞄者发送SYN包开始三次握手,等待目de主机de响应。如果收到SYN/ACK包,则说明目标端口处于侦听状态,扫瞄者马上发送RST包,中止三次握手。因为半连接扫瞄并没有建立TCP连接,目de主机delog文件中可能不会记录此扫瞄。
(2)TCP隐蔽扫瞄 根据TCP协议,处于关闭状态de端口,在收到探测包时会响应RST包,而处于侦听状态de端口则忽略此探测包。根据探测包中各标志位设置de不同,TCP隐蔽扫瞄又分为SYN/ACK扫瞄、FIN扫瞄、XMAS(圣诞树)扫瞄和NULL扫瞄四 ——文章来源网,仅供分享学习参考 4
种。 SYN/ACK扫瞄和FIN扫瞄均绕过TCP三次握手过程de第一步,直接给目de端口发送SYN/ACK包或者FIN包。因为TCP是基于连接de 协议,目标主机认为发送方在第一步中应该发送deSYN包没有送出,从而定义这次连接过程错误,会发送一个RST包以重置连接。而这正是扫瞄者需要de结果— 只要有响应,就说明目标系统存在,且目标端口处于关闭状态。
XMAS扫瞄和NULL扫瞄:这两类扫瞄正好相反,XMAS扫瞄设置TCP包中所有标志位(URG、ACK、RST、PSH、SYN、FIN),而NULL扫瞄则关闭TCP包中de所有标志位。
2.2.2 UDP端口扫瞄 UDP协议是数据包协议,为了要发现正在服务deUDP端口,通常de扫瞄方式是构造一个内容为空deUDP数据包送往目de端口。若目de端口上有服务正在等待,则目de端口返回错误de消息;若目de端口处于关闭状态,则目de主机返回ICMP端口不可达消息。因为UDP端口扫瞄软件要计算传输中丢包de数量,所以UDP端口扫瞄de速度很慢。
2.3 0S探测 OS探测有双重目de:一是探测目标主机de0S信息,二是探测提供服务de计算机程序de信息。比如OS探测de结果是:OS是Windows XP sp3,服务器平台是IIS 4.0。
2.3.1二进制信息探测 通过登录目标主机,从主机返回debanner中得知OS类型、版本等,这是最 ——文章来源网,仅供分享学习参考 5
简单de0S探测技术。 图1 二进制信息 从图l可以看出,在telnet连上FTP服务器后,服务器返回debanner已经提供了serverde信息,在执行ftpdesyst命令后可得到更具体de信息。
2.3.2 HTTP响应分析 在和目标主机建立HTTP连接后,可以分析服务器de响应包得出OS类型。比如响应包中可能包含如下信息:
图2 响应包分析 从图2中对响应包中de数据分析,可以得到serverde信息。 2.3.3栈指纹分析 网洛上de主机都会通过TCP/IP或类似de协议栈来互通互联。由于0S开发商不唯一,系统架构多样,甚至是软件版本de差异,都导致了协议栈具体实现上de不同。对错误包de响应,默认值等都可以作为区分0Sde依据。
(1)主动栈指纹探测 主动栈指纹探测是主动向主机发起连接,并分析收到de响应,从而确定OS类型de技术。
1)FIN探测。跳过TCP三次握手de顺序,给目标主机发送一个FIN包。RFC793规定,正确de处理是没有响应,但有些OS,如MS Windows,CISC0, ——文章来源网,仅供分享学习参考 6
HP/UX等会响应一个RST包。 2)Bogus标志探测。某些OS会设置SYN包中TCP头de未定义位(一般为64或128),而某些0S在收到设置了这些Bogus位deSYN包后,会重置连接。 3)统计ICMP ERROR报文。RFCl812中规定了ICMP ERROR消息de发送速度。Linux设定了目标不可达消息上限为80个/4秒。0S探测时可以向随机de高端UDP端口大量发包,然后统计收到de目标不可达消息。用此技术进行OS探测时时间会长一些,因为要大量发包,并且还要等待响应,同时也可能出现网洛中丢包de情况。
4)ICMPERROR报文引用。RFC文件中规定,ICMP ERROR消息要引用导致该消息deICMP消息de部分内容。例如对于端口不可达消息,某些OS返回收到deIP头及后续de8个字节,Solaris 返回de ERROR消息中则引用内容更多一些,而Linux比Solaris还要多。
(2)被动栈指纹探测 被动栈指纹探测是在网洛中监听,分析系统流量,用默认值来猜测0S类型de技术。
1)TCP初始化窗口尺寸。通过分析响应中de初始窗口大小来猜测OSde技术比较可靠,因为很多0Sde初始窗口尺寸不同。比如AIX设置de初始窗口尺寸是0x3F25,而Windows NT5、OpenBSD、FreeBSD设置de值是0x402E。
2)Don’t Fragment位。为了增进性能,某些0S在发送de包中设置了DF位,可以从DF位de设置情况中做大概de判断。
3)TCPISN采样。建立TCP连接时,SYN/ACK中初始序列号ISNde生成存在规律,比如固定不变、随机增加 (Solaris,FreeBSD等),真正de随机(Linux 2.0.*),