各位跨境伙伴们大家好,今天为大家带来比较重要的网络环境因素:操作系统指纹识别。
网络环境中有各式各样的指纹,如浏览器指纹、Canvas指纹、Webgl指纹等,操作系统指纹也是非常重要的,例如,检测到您正在使用的浏览器是Win10 64位的,操作系统却是一台linux,是不是很郁闷呢。
今天就为大家带来几种小方法来找出自己正在使用的操作系统
1、MTU
通信术语 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。windows:MTU一般都是1484。查看命令:netsh interface ipv4 show subinterfaces
linux:MTU一般都是1500,查看命令:ifconfig
MTU的值可以进行调整以更好的适应网络传输速度。所以这个值目前不太准确了。
2、端口
根据window或者linux一些常用端口进行识别。例如window远端桌面连接端口是3389,而linux的ssh端口是22。
可以通过nmap工具检测系统开放端口
3、数据包分析
这种是最准确的识别方式,正确率也是非常高的,原理就是主动向目标主机发送请求,根据目标主机返回的数据信息来分析识别目标主机系统。
(1)FIN探测识别
发送一个 FIN 包给目标主机某一个打开的端口并等待回应。按照 RFC,正确的行为是不响应 ,但例如 MS Windows、BSDI、CISCO、HP/UX、MVS 和 IRIX 等都会发回一个 RESET从而暴露OS版本特征。
(2) BOGUS 标记探测识别
向目标主机发送一个含有未定义的TCP标记的TCP头的SYN包,某些操作系统的回应将包含这个未定义的标记,而其它一些系统收到SYN+BOGUS包将关闭连接,利用这些特性可以识别一些操作系统。
(3) ISN采样探测识别
这个方法是找出当响应一个连接请求时由 TCP 实现所选择的初始化序列数的式样,这样可以区分一些操作系统。 例如传统的 64K 、随机增量或真“随机”。Windows(和一些其他系统)则使用一个“时间相关”模型,每过一段时间 ISN 就被加上一个小的固定数。
(4) ICMP 消息引用 探测识别
RFC 规定 ICMP 错误消息可以引用一部分引起错误的源数据包。对于目标主机的某个端口不可达消息,几乎所有实现都只送回IP头及其后的8个字节。因此在对方没有开放端口的情况下也是可以探测到对方的系统类型。