利用TCP/IP的堆栈指纹的方法

目前的技术------利用TCP/IP的堆栈指纹的方法

    我们发现利用尝试登陆的信息有时候尽管可以获取很多有用的资料,但是很难保证它的真实性与正确性。 因此,有人开发了利用网络操作系统里的TCP/IP堆栈作为特殊的“指纹”来确定系统的真正身份。这种 的准确性相当高,因为再精明的管理员都不太可能去修改系统底层的网络的堆栈参数。目前,利用这种 技术实现的工具很多,比较著名有NMAP,CHECKOS,QUESO等。

    利用这一技术,可以精确地区分Solaris 2.6,2.5-2.51,2.4或者LINUX的内核的细微不同! 它的实现手段主要是以下的几种:

1. 利用用FIN探测: 通过向目标机发送一个FIN的包(或者是任何没有ACK或SYN标记的包)到目标主机的一个开放的端口然后 等待回应。许多系统如MS-WINDOWS,BSDI,CISCO,HP/UX,MVS和IRIX会返回一个RESET。
2. 利用BOGUS标记探测: 通过发送一个SYN包,它含有没有定义的TCP标记的TCP头。那么在LINUX系统的回应任就会包含这个没有 定义的标记,而在一些别的系统则会在收到SYN+BOGU包之后关闭连接。利用这些特性,可以区分一些操 作系统。
3. 利用TCP ISN采样: 这是利用寻找初始化序列长度模板与特定的操作系统相匹配的方法。利用它可以对许多系统分类,如较 早的UNIX系统是64K长度。一些新的UNIX系统则是随机增长的长度(Solaris,IRIX,FreeBSD,Digital Unix, Cray等)
4. 使用Don't Fragment位: 许多操作系统在发送的包里使用这个位,由此可以确定操作系统的类型。
5. 使用TCP的初始化窗口: 在这里只是简单地检查返回包里包含的窗口长度。这项技术根据各个操作系统的不同的初始化窗口大小 来唯一确定它们。
6. 利用TCP的可选项: 利用在发送的TCP包里设定一些TCP可选项根据他们返回包的内容来确定对方系统的类型。
原文地址:https://www.cnblogs.com/goodloop/p/251701.html