探测远程主机操作系统指纹的全新技术
2010-05-12 20:35:36 来源:WEB开发网三、TCP/IP协议的使用
TCP作为一个数据传输协议是建立在IP协议之上的,它的定义可以在RFC793上找到。而TCP/IP协议则是在Internet上主要使用的网络协议。
TCP的成功在于它的可靠性:对错误的探测和管理,数据流动和阻塞的控制,重传机制等。
为了达到这样的要求,TCP就成为了面向连接的协议。它的运行机制如下:
1. 建立连接
2. 数据传输
3. 终止连接
TCP是建立在IP协议之上的,在发生网络阻塞或路由问题时,IP协议不能够提供可靠的端到端数据传送。而且,IP是一个非连接的协议,所以连接的控制都是建立在TCP层上的。
TCP协议在其头部提供了对连接的多方面控制。序号和确认号是为了更好的管理数据报的重发并能很好的控制各种特别的错误状况。TCP数据报头部码元字段的URG,ACK,PSH,RST,SYN和FIN是为了管理TCP连接状态而设置的。详情请见RFC793。
为了以后更好的理解RING的原理,以下列出TCP建立连接的三次握手:(Client主动向Server发起连接)
Client Server
│--------SYN--------->│
│<------SYN-ACK-------│
│--------ACK--------->│
数据报在网络上传输的过程中,某些分段可能在传输时丢失了,而理论上每一个数据报都必须被接收方所确认。TCP自己就维持了一张已被确认数据报的列表。
注:如果某个数据报没有在期望的时间内被接收到,那么它将被看作丢失处理。
而且,TCP会自动处理各种先后收到的数据报的真实顺序,然后它将会以正确的顺序发送到上层系统。
网络系统的阻塞将会导致数据报的丢失。任何网络容纳能力的大小都归因于物理底层的传输能力或路由的能力。
注:如果网络阻塞发生了,那么可能会有一些数据报被丢失了。而TCP又重发了那些被丢失的数据报,这样网络的阻塞状况将会变的越来越严重。因此,如果网络阻塞发生了,数据报的重传速度将会降低。
虽然TCP强调了这种机制,但在RFC793中并没有利用什么规则去计算确认数据报之间延迟的大小。
四、临时的分析
4.1 原理
数据报的重传为我们提供了另一种分析远程主机操作系统的方式。我们将通过分析目标主机在各次重传数据报之间的延迟来判断远程主机操作系统的指纹。
这种方式已经在RFC793中被定义了,但是却留下了一些利用的余地。而且,一些实现并没有完全遵循目前的标准。
为了让我们了解这种方式,也就是体会超时机制的作用,我们必须强调远程主机的IP栈要处在非标准的状态下。
而这种状况可以容易地被模仿,只须简单的放弃对远程主机SYN-ACK数据报的确认就可以达到。
通过测量重传的两个相邻数据报之间的延迟,或观察一些其他的信息,比如TCP的标记,序号,确认号,这些都可以得到一些关于远程主机操作系统的有用信息。
如果每个操作系统都有其自己的特点,那么建立一个典型的系统标识数据库将会成为一种可能。不管测试的主机或网络状况如何,操作系统将是唯一影响测试结果的因素。因此,探测那些建立在不同主机上却使用相同操作系统而得到的结果,将会是一样的(前提是网络状况比较稳定)
通过将目标主机指纹与操作系统指纹数据库里的相比较,将有可能知道远程主机所运行的操作系统。
新的操作系统的标识将会被很容易的纪录下来,它们将会和操作系统的名字联系起来。
更多精彩
赞助商链接