主机指纹识别及host name探测技术总结

1.1ICMP
Ping同一局域网内的不同主机,屏幕上回显的TTL值会因不同主机操作系统的不同而不同,甚至是由于系统版本、防火墙、补丁等细节不同,在不同的主机,即使相同的操作系统,回显的TTL值也会有所不同
Win xp:
主机指纹识别及host name探测技术总结
Ubuntu:

主机指纹识别及host name探测技术总结
1.2TCP/IP协议栈实现差异
这些差异通常表现在数据包头的标志字段中,如窗口大小(Window Size)、ACK序号等的不同取值。通过对这些差别进行归纳总结,可以比较准确地识别出远程系统的类型
1.2.1 NMAP
主机指纹识别及host name探测技术总结
指纹库如下所示
主机指纹识别及host name探测技术总结
会首先一次性发送6个tcp syn包
主机指纹识别及host name探测技术总结
然后据此计算出指纹中的SEQ,OPS,WIN,T1行
(计算及分析过程见公众号之前的推文)
然后会发送其他包以此类推,得到受试者的指纹后与指纹库进行比对

1.2.2 Ettercap
在ettercap上有一个插件,如下图所示,用于指纹识别
主机指纹识别及host name探测技术总结
使用插件识别win的结果
主机指纹识别及host name探测技术总结
识别kali的结果
主机指纹识别及host name探测技术总结
还是有很高的误报率(当然,结果自己也说明了,实际上没有判断出来,给出的结果是最接近判断的)

1.3DHCP
1.3.1Satori
主要是通过得到的指纹在指纹库中根据权重相加,这儿以一个权重为例
数据包如下

主机指纹识别及host name探测技术总结
Option55展开,分别是1,15,3,6,44,46,47,31,33,121,249,43,252
命中指纹库中的
主机指纹识别及host name探测技术总结
所以推测目标系统属于windows vista的权重+5

1.4http
通常是user-agent。使用Web浏览器访问某个站点时,它会向该站点发送一小块信息,称为“user agent”。 user agent有一些关于浏览器,平台和操作系统版本的次要信息。 使用此信息可以猜测使用的操作系统
比如我的ua:
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
比如这个网站(https://developers.whatismybrowser.com/useragents/explore/)据称收集超过百万不同的user-agent,可以精细识别操作系统等
通过user-agent可以分析出如下的详细信息

主机指纹识别及host name探测技术总结
1.5查询开放端口及版本
比如探测到135是msrpc,则是windows;一些应用程序的banner会暴露关键信息

主机指纹识别及host name探测技术总结
1.6 open port patterns
指开放端口的关联,比如发现某主机开放139,445,一般是window可能性较大

主机指纹识别及host name探测技术总结

2.探测hostname
2.1 DHCP
Option 12,明确客户端的名字
主机指纹识别及host name探测技术总结
2.1.1 Satori
在satori使用时抓到的包的dhcp inform中如下所示
主机指纹识别及host name探测技术总结

2.2 NBNS
注:当计算机名长度少于等于15个字符时,NetBIOS名字与计算机名一样,当计算机名超过15个字符时,NetBIOS名字只取前15个字符。我这里默认netbios name 与hostname同。
主机指纹识别及host name探测技术总结
或者使用下列命令查看远程计算机的netbios名称表
主机指纹识别及host name探测技术总结
抓包如下

主机指纹识别及host name探测技术总结
2.2.1 NetworkMiner
主机指纹识别及host name探测技术总结
2.2.2nbtscan

主机指纹识别及host name探测技术总结