我来说说局域网扫描如何获取操作系统版本。以NMAP工具为例,NMAP 带有一个数据库,它在你安装 NMAP 的时候就会被安装。这个数据库用于操作系统的探测,它会执行五种不同的测试,每种测试由一个或者多个数据包组成,目标系统对每个数据包作出的响应有助于确定操作系统的类型。这五种不同的测试是:
序列生成(Sequence Generation)、ICMP 回显、TCP 显式拥塞通知(Explicit Congestion Notification)、TCP、UDP
现在让我们分别看看他们各自在做什么:
序列生成
序列生成测试由六个数据包组成,这六个包是每隔 100 毫秒分开发送的,且都是 TCP SYN 包。
每个 TCP SYN 包的结果将有助于 NMAP 确定操作系统的类型。
ICMP 回显
两个有着不同设置的 ICMP 请求包被送到目标系统,由此产生的反应将有助于实现验证操作系统类型。
TCP 显式拥塞通知(Explicit Congestion Notification)
当生成许多包通过路由器时会导致其负载变大,这称之为拥塞。其结果就是系统会变慢以降低拥堵,以便路由器不会发生丢包。
这个包仅为了得到目标系统的响应而发送。因为不同的操作系统以不同的方式处理这个包,所以返回的特定值可以用来判断操作系统。
TCP
在这个测试中会发送六个数据包。
一些带有特定的包设置的包被发送用来到打开的或关闭的端口。结果也将会因为操作系统的不同而不同。
所有 TCP 包都是以如下不同的标志被发送:
1.无标志
2.SYN、FIN、URG 和 PSH
3.ACK
4.SYN
5.ACK
6.FIN、PSH 和 URG
UDP
这个测试由一个被发送给一个关闭的端口的数据包组成。
如果目标系统上的这个端口是关闭的,而且返回一条 ICMP 端口不可达的信息,那么就说明没有防火墙。