操作系统侦测
- 目标:识别目标主机操作系统的类型
- 侦测方法:网络协议栈指纹识别技术
常用的网络协议栈指纹识别方法
TTL(存活时间)
TTL:Time To Live,即数据包的“存活时间”,表示一个数据包在被丢弃之前可以通过多少跃点(Hop)。不同操作系统的缺省TTL值往往是不同的。
常见操作系统的TTL值
- Windows 9x/NT/2000 Intel TTL=128
- Digital Unix 4.0 Alpha TTL= 60
- Linux 2.2.x Intel TTL= 64
- Netware 4.11 Intel TTL= 128
- AIX 4.3.x IBM/RS6000 TTL= 60
- Cisco 12.0 2514 TTL= 255
- Solaris 8 Intel/Sparc TTL= 64
Windows系统修改TTL值的方法
打开注册表,在“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Par
ameters”新建一个“DefaultTTL”Dword键值进行自定义
DF位
DF(不分段)位识别:不同OS对DF位有不同的处理方式,有些OS设置DF位,有些不设置DF位;还有一些OS在特定场合设置DF位,在其它场合不设置DF位。
Window Size
- Window Size:TCP接收(发送)窗口大小。它决定了接收信息的机器在收到多少数据包后发送ACK包。
- 特定操作系统的缺省Window Size基本是常数,例如AIX 用0x3F25,Windows、OpenBSD 、FreeBSD用0x402E。
- 一般地,UNIXd的Window Size较大。Windows、路由器、交换机等的较小。
ACK 序号
不同的OS处理ACK序号时是不同的。如果发送一个FIN+PSH+URG的数据包到一个关闭的TCP端口,大多数OS会把回应ACK包的序号设置为发送的包的初始序号,Windows和一些打印机则会发送序号为初始序号加1的ACK包。
对FIN包的响应
发送一个只有FIN标志位的TCP数据包给一个打开的端口,Linux等系统不响应;有些系统如 Windows、CISCO、HP/UX等,发回一个RST。
ISN (初始化序列号)
- 不同的OS在选择TCP ISN时采用不同的方法:一些UNIX系统采用传统的64K递增方法;
- 较新的Solaris、IRIX、FreeBSD、Digital Unix、Cray等系统采用随机增量的方法;
- Linux 2.0、OpenVMS、AIX等系统采用真随机方法;
- Windows系统采用一种时间相关的模型;
- 还有一些系统使用常数,如3Com集线器使用0x803,Apple LaserWriter,打印机使用0xC7001。
主机使用的端口
一些OS会开放特殊的端口,如Windows的137、139;一些网络设备,如入侵检测系统、防火墙等也开放自己特殊的端口。
操作系统的侦测
nmap-os-db(操作系统数据库文件)
- 该数据库包含了超过2600种操作系统的指纹信息,Nmap把TCP和UDP报文发送到目标机器上,然后将检查结果和nmap-os-db数据库进行比对
- 默认路径:/usr/share/nmap/nmap-os-db
操作系统侦测相关的命令选项