- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
漏洞扫描技术应用分析研究
2.3 0S探测
OS探测有双重目的:一是探测目标主机的0S信息,二是探测提供服务的计算机程序的信息。比如OS探测的结果是:OS是Windows XP sp3,服务器平台是IIS 4.0。
2.3.1二进制信息探测
通过登录目标主机,从主机返回的banner中得知OS类型、版本等,这是最简单的0S探测技术。
图1 二进制信息
从图l可以看出,在telnet连上FTP服务器后,服务器返回的banner已经提供了server的信息,在执行ftp的syst命令后可得到更具体的信息。
2.3.2 HTTP响应分析
在和目标主机建立HTTP连接后,可以分析服务器的响应包得出OS类型。比如响应包中可能包含如下信息:
图2 响应包分析
从图2中对响应包中的数据分析,可以得到server的信息。
2.3.3栈指纹分析
网络上的主机都会通过TCP/IP或类似的协议栈来互通互联。由于0S开发商不唯一,系统架构多样,甚至是软件版本的差异,都导致了协议栈具体实现上的不同。对错误包的响应,默认值等都可以作为区分0S的依据。
(1)主动栈指纹探测
主动栈指纹探测是主动向主机发起连接,并分析收到的响应,从而确定OS类型的技术。
1)FIN探测。跳过TCP三次握手的顺序,给目标主机发送一个FIN包。RFC793规定,正确的处理是没有响应,但有些OS,如MS Windows,CISC0,HP/UX等会响应一个RST包。
2)Bogus标志探测。某些OS会设置SYN包中TCP头的未定义位(一般为64或128),而某些0S在收到设置了这些Bogus位的SYN包后,会重置连接。
3)统计ICMP ERROR报文。RFCl812中规定了ICMP ERROR消息的发送速度。Linux设定了目标不可达消息上限为80个/4秒。0S探测时可以向随机的高端UDP端口大量发包,然后统计收到的目标不可达消息。用此技术进行OS探测时时间会长一些,因为要大量发包,并且还要等待响应,同时也可能出现网络中丢包的情况。
4)ICMPERROR报文引用。RFC文件中规定,ICMP ERROR消息要引用导致该消息的ICMP消息的部分内容。例如对于端口不可达消息,某些OS返回收到的IP头及后续的8个字节,Solaris返回的ERROR消息中则引用内容更多一些,而Linux比Solaris还要多。
(2)被动栈指纹探测
被动栈指纹探测是在网络中监听,分析系统流量,用默认值来猜测0S类型的技术。
1)TCP初始化窗口尺寸。通过分析响应中的初始窗口大小来猜测OS的技术比较可靠,因为很多0S的初始窗口尺寸不同。比如AIX设置的初始窗口尺寸是0x3F25,而Windows NT5、OpenBSD、FreeBSD设置的值是0x402E。
2)Don’t Fragment位。为了增进性能,某些0S在发送的包中设置了DF位,可以从DF位的设置情况中做大概的判断。
3)TCPISN采样。建立TCP连接时,SYN/ACK中初始序列号ISN的生成存在规律,比如固定不变、随机增加(Solaris,FreeBSD等),真正的随机(Linux 2.0.*),而Windows使用的是时间相关模型,ISN在每个不同时间段都有固定的增量。
2.4脆弱点扫描
从对黑客攻击行为的分析和脆弱点的分类,绝大多数扫描都是针对特定操作系统中特定的网络服务来进行,即针对主机上的特定端口。脆弱点扫描使用的技术主要有基于脆弱点数据库和基于插件两种。
2.4.1基于脆弱点数据库的扫描
首先构造扫描的环境模型,对系统中可能存在的脆弱点、过往黑客攻击案例和系统管理员的安全配置进行建模与分析。其次基于分析的结果,生成一套标准的脆弱点数据库及匹配模式。最后由程序基于脆弱点数据库及匹配模式自动进行扫描工作。脆弱点扫描的准确性取决于脆弱点数据库的完整性及有效性。
2.4.2基于插件的扫描
插件是由脚本语言编写的子程序模块,扫描程序可以通过调用插件来执行扫描。添加新的功能插件可以使扫描程序增加新的功能,或者增加可扫描脆弱点的类型与数量。也可以升级插件来更新脆弱点的特征信息,从而得到更为准确的结果。插件技术使脆弱点扫描软件的升级维护变得相对简单,而专用脚本语言的使用也简化了编写新插件的编程工作,使弱点扫描软件具有很强的扩展性。
2.5防火墙规则探测
采用类似于traceroute的IP数据包分析法,检测能否给位于过滤设备后的主机发送一个特定的包,目的是便于漏洞扫描后的入侵或下次扫描的顺利进行。通过这种扫描,可以探测防火墙上打开或允许通过的端口,并且探测防火墙规则中是否允许带控制信息的包通过,更进一步,可以探测到位于数据包过滤设备后的路由器。
作者:姚景周 来源:泰尔网