TCP/IP序列号生成方法
TCP的Initial Sequence Number(ISN)的预测
(图1)
正常的TCP连接基于一个三次握手(3-way handshake),一个客户端(Client)向服务器(Server)发送一个初始化序列号ISNc, 随后,服务器相应这个客户端ACK(ISNc),并且发送自己的初始化序列号ISNs,接着,客户端响应这个ISNs(如下图),三次握手完成。
C ---〉S: (ISNc)
S ---〉C: ACK(ISNc)+ ISNs
C ---〉S: ACK(ISNs)
C ---〉S: data
and / or
S ---〉C: data
下面,我以Windows2000 Advanced Server为例,来说一下两台主机是如何进行三次握手。

(图2)

(图3)
我们可以看到:
1) Smartboy首先发送一个seq:32468329的包给服务器202.116.128.6。
2) 然后, 202.116.128.6响应主机Smartboy, 它送给Smartboy自己的
seq:3333416325 而且响应Smartboy的ack:3240689240。
3) Smartboy再响应服务器202.116.128.6, seq:3240689240, ack:3333416326。
三次握手完毕,两台几建立起连接。
可以看出,在三次握手协议中,Clinet一定要监听服务器发送过来的ISNs, TCP使用的sequence number是一个32位的计数器,从0-4294967295。TCP为每一个连接选择一个初始序号ISN,为了防止因为延迟、重传等扰乱三次握手,ISN不能随便选取,不同系统有不同算法。理解TCP如何分配ISN以及ISN随时间变化的规律,对于成功地进行IP欺骗攻击很重要。
在Unix系统里,基于远程过程调用RPC的命令,比如rlogin、rcp、rsh等等,根据/etc/hosts.equiv以及$HOME/.rhosts文件进行安全校验,其实质是仅仅根据源IP地址进行用户身份确认,以便允许或拒绝用户RPC。这就给与了那些攻击者进行IP地址欺骗的机会。
让我们看X是如何冒充T来欺骗S,从而建立一个非法连接 :
X---->S: SYN(ISNx ) , SRC = T
S---->T: SYN(ISNs ) , ACK(ISNT) (*)
X---->S: ACK(ISNs+1 ) , SRC = T (**)
X---->S: ACK(ISNs +1) , SRC = T, 攻击命令(可能是一些特权命令)
但是,T必须要在第(**)中给出ISNs, 问题是ISNs在第(*)步中发给了T(X当然很难截取到),幸运的是,TCP协议有一个约定: ISN变量每秒增加250,000次,这个增加值在许多版本比较旧的操作系统中都是一个常量,在FreeBSD4.3中是125000次每秒,这就给X一个可乘之机。URL:http://www.qqread.com/net-saft/x281705.html
更多内容请看路由安全配置专题、DoS 拒绝服务攻击专题、互联网安全专题,或进入讨论组讨论。
【深 度 阅 读】 相 关 文 章
TCP的Initial Sequence Number(ISN)的预测
(图1)
正常的TCP连接基于一个三次握手(3-way handshake),一个客户端(Client)向服务器(Server)发送一个初始化序列号ISNc, 随后,服务器相应这个客户端ACK(ISNc),并且发送自己的初始化序列号ISNs,接着,客户端响应这个ISNs(如下图),三次握手完成。
C ---〉S: (ISNc)
S ---〉C: ACK(ISNc)+ ISNs
C ---〉S: ACK(ISNs)
C ---〉S: data
and / or
S ---〉C: data
下面,我以Windows2000 Advanced Server为例,来说一下两台主机是如何进行三次握手。

(图2)
(图3)
我们可以看到:
1) Smartboy首先发送一个seq:32468329的包给服务器202.116.128.6。
2) 然后, 202.116.128.6响应主机Smartboy, 它送给Smartboy自己的
seq:3333416325 而且响应Smartboy的ack:3240689240。
3) Smartboy再响应服务器202.116.128.6, seq:3240689240, ack:3333416326。
三次握手完毕,两台几建立起连接。
可以看出,在三次握手协议中,Clinet一定要监听服务器发送过来的ISNs, TCP使用的sequence number是一个32位的计数器,从0-4294967295。TCP为每一个连接选择一个初始序号ISN,为了防止因为延迟、重传等扰乱三次握手,ISN不能随便选取,不同系统有不同算法。理解TCP如何分配ISN以及ISN随时间变化的规律,对于成功地进行IP欺骗攻击很重要。
在Unix系统里,基于远程过程调用RPC的命令,比如rlogin、rcp、rsh等等,根据/etc/hosts.equiv以及$HOME/.rhosts文件进行安全校验,其实质是仅仅根据源IP地址进行用户身份确认,以便允许或拒绝用户RPC。这就给与了那些攻击者进行IP地址欺骗的机会。
让我们看X是如何冒充T来欺骗S,从而建立一个非法连接 :
X---->S: SYN(ISNx ) , SRC = T
S---->T: SYN(ISNs ) , ACK(ISNT) (*)
X---->S: ACK(ISNs+1 ) , SRC = T (**)
X---->S: ACK(ISNs +1) , SRC = T, 攻击命令(可能是一些特权命令)
但是,T必须要在第(**)中给出ISNs, 问题是ISNs在第(*)步中发给了T(X当然很难截取到),幸运的是,TCP协议有一个约定: ISN变量每秒增加250,000次,这个增加值在许多版本比较旧的操作系统中都是一个常量,在FreeBSD4.3中是125000次每秒,这就给X一个可乘之机。URL:http://www.qqread.com/net-saft/x281705.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- 基础知识 黑客域名劫持攻击详细步骤 (0次浏览)
- CISSP的成长之路(十八):详述网络威胁类型 (0次浏览)
- 个人用户的网络安全防范 (0次浏览)
- 驱逐威胁 六把安全利剑清除僵尸网络 (0次浏览)
- CISSP的成长之路(十九):详述安全威胁控制手 (0次浏览)
- 07年电脑安全大盘点:蠕虫网络威胁Web 2.0 (0次浏览)
- Web应用安全的全新探索 (0次浏览)
- 到底谁需要网络访问控制 (NAC)? (0次浏览)
- 针对性的防御手段 十招应对邮件欺诈 (0次浏览)
- 跨站打印攻击 网络打印机成攻击新途径 (0次浏览)



