操作系统指纹识别
1 Banner抓取
2 TCP 和 ICMP 常规指纹识别技术
TCP数据报格式
ICMP首部格式
TTL与TCP窗口大小
FIN探测
BOGUS flag 探测
TCP ISN 抽样
IPID 抽样
TCP Timestamp
ACK值
ICMP错误信息
DHCP
3 数据包重传延时技术
4 使用Nmap进行操作系统探测..
一般性探测
指定网络扫描类型.
设置扫描条件
推测结果.
5 使用Xprobe2进行操作系统探测
6 使用p0f进行操作系统探测
7 使用miranda进行操作系统探测
1 操作系统指纹识别
识别目标主机的操作系统,首先,可以帮助我们进一步探测操作系统级别的漏洞从而可以从这一级别进行渗透测试。其次,操作系统和建筑在本系统之上的应用一般是成套出现的,例如LAMP或者LNMP。操作系统的版本也有助于我们准确定位服务程序或者软件的版本,比如windows server 2003 搭载的IIS为6.0,windows server 2008 R2 搭载的是IIS7.5。
操作系统指纹识别技术多种多样,这里我简要介绍我所知道的几种常用技术,不会具体深入到细节中,若您感兴趣可自己查阅资料。
1 Banner抓取
Banner抓取是最基础、最简单的指纹识别技术,而且在不需要其他专门的工具的情况下就可以做。操作简单,通常获取的信息也相对准确。
严格的讲,banner抓取是应用程序指纹识别而不是操作系统指纹识别。Banner信息并不是操作系统本身的行为,是由应用程序自动返回的,比如apache、exchange。而且很多时候并不会直接返回操作系统信息,幸运的话,可能会看到服务程序本身的版本信息,并以此进行推断。
凡事皆有利弊,越是简单的方法越容易被防御,这种方法奏效的成功率也越来越低了。
先来看一个直接Banner抓取的例子。
在上图中,直接telnet 80端口,在返回的服务器banner信息中,看到“Server: Microsoft-HTTPAPI/2.0”的字样。
在IIS中使用ISAPI扩展后,经常会看到这样的Banner。下表可以帮助我们识别操作系统:
Server Header Value | Windows Server Version |
---|---|
Microsoft-HTTPAPI/2.0 | Windows 2003 Sp2, Windows 7, Windows 2008, Windows 2008 R2 |
Microsoft-HTTPAPI/1.0 | Windows 2003 |
如果没有ISAPI拦截,我们可能会看到如下图的信息,
准确的IIS版本,会帮助我们更准确的判断操作系统,可以参考下表:
IIS Version | Windows Server Version |
---|---|
IIS 5.0 | Windows 2000 |
IIS 5.1 | Windows XP |
IIS 6.0 | Windows 2003 |
IIS 7.0 | Windows 2008, Windows Vista |
IIS 7.5 | Windows 2008 R2, Windows 7 |
对于asp.net站点,通常会看到“X-Powered-By”字样,会指示.net 版本,但是这对判断操作系统版本帮助不大。
其他web服务器如apache、nginx,除非直接输出操作系统版本,否则根据服务程序版本无法推断操作系统版本。配置不当的服务可能会输出如下信息:
HTTP/1.1 200 OK
Date: Mon, 16 Jun 2003 02:53:29 GMT
Server: Apache/1.3.3 (Unix) (Red Hat/Linux)
Last-Modified: Wed, 07 Oct 1998 11:18:14 GMT
ETag: “1813-49b-361b4df6”
Accept-Ranges: bytes
Content-Length: 1179
Connection: close
Content-Type: text/html
有经验的管理员都