当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 网络安全讲座之:攻击与渗透(5)

安全基础
入侵常用TCP端口作用及其操作建议之二十九
玩转XP系统中的一些另类卸载
移动硬盘常见问题的解决(1)
移动硬盘常见问题的解决(2)
使用RSS能做的十六件事
Win XP系统19例常见问题(1)
Win XP系统19例常见问题(2)
Win XP系统19例常见问题(3)
Win XP系统19例常见问题(4)
企业安全管理从IP地址开始
计算机取证常识
深入剖析EFS
WinXP另类垃圾的清理(1)
WinXP另类垃圾的清理(2)
WinXP另类垃圾的清理(3)
WinXP另类垃圾的清理(4)
给Windows XP标题栏瘦瘦身
体验Windows XP的网络视频会议(1)
体验Windows XP的网络视频会议(2)
交换网络中的嗅探和ARP欺骗

安全基础 中的 网络安全讲座之:攻击与渗透(5)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 73 ::
收藏到网摘: n/a

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一个可乘之机。

   看一下X是如何猜出ISNs : 

   a、首先, X发送一个SYN包来获取服务器现在的ISNs

     X ---〉S: (ISNx)

     S ---〉X: ACK(ISNx)+ ISNs# (1)

   b、紧接着,X冒充T向服务器发送SYN包

        X ---〉S: SYN(ISNx ) , SRC = T (2)

   c、于是,服务器发出一个响应包给T(这个包X是收不到的)

     S ---〉T: SYN(ISNs$) , ACK(ISNT ) (3)

   d、X计算ISNs$:

       ISNs$ = ISNs# + RTT×Increment of ISN (4)

  其中,RTT(Round Trip Time),是一个包往返X和S所用的时间,可以通过Ping 来得到。



(图4)

  上图显示了round trip times (RTT) 大概是0。

  Increment of ISN是协议栈的初始序列号每秒钟增加的值,以Unix为例,当没有外部连接发生时,服务器的ISN每秒增加128,000,有连接的时候,服务器的ISN每秒增加64,000。

   e、于是,

    X ---> S : ACK(ISNs$)   (冒充可信主机成功了)

    X ---> S : 恶意的命令或窃取机密消息的命令

  在评价以下的解决方案时有几点要注意:

  1.该解决方案是否很好地满足TCP的稳定性和可操作性的要求?
  2.该解决方案是否容易实现?
  3.该解决方案对性能的影响如何?
  4.该解决方案是否经得起时间的考验?

  以下的几种方案各有各的优点和缺点,它们都是基于增强ISN生成器的目标提出的。

  配置和使用密码安全协议

  TCP的初始序