网络安全知识:会话劫持攻击
来源:eNet硅谷动力 更新时间:2012-04-13
 攻击原理

  会话劫持(Session Hijack)是一种结合了嗅探以及欺骗技术在内的攻击手段。广义上说,会话劫持就是在一次正常的通信过程中,黑客作为第三方参与到其中,或者是在数据流(例如基于TCP的会话)里注射额外的信息,或者是将双方的通信模式暗中改变,即从直接联系变成有黑客联系。

  会话劫持利用了TCP/IP工作原理来设计攻击。TCP使用端到端的连接,即TCP用(源IP,源TCP端口号,目的IP,目的TCP端号)来唯一标识每一条已经建立连接的TCP链路。另外,TCP在进行数据传输时,TCP报文首部的两个字段序号(seq)和确认序号(ackseq)非常重要。序号(seq)和确认序号(ackseq)是与所携带TCP数据净荷(payload)的多少有数值上的关系:序号字段(seq)指出了本报文中传送的数据在发送主机所要传送的整个数据流中的顺序号,而确认序号字段(ackseq)指出了发送本报文的主机希望接收的对方主机中下一个八位组的顺序号。因此,对于一台主机来说,其收发的两个相临TCP报文之间的序号和确认序号的关系为:它所要发出的报文中的seq值应等于它所刚收到的报文中的ackseq的值,而它所要发送报文中ackseq的值应为它所收到报文中seq的值加上该报文中所发送的TCP净荷的长度。图-2是两台主机进行TCP数据传输时序号(seq)、确认序号(ackseq)以及所携带TCP数据净荷(payload)之间的数值关系的一个例子(以八位组octet为单位)。

  TCP会话劫持的攻击方式可以对基于TCP的任何应用发起攻击,如HTTP、FTP、Telnet等。对于攻击者来说,所必须要做的就是窥探到正在进行TCP通信的两台主机之间传送的报文,这样攻击者就可以得知该报文的源IP、源TCP端口号、目的IP、目的TCP端号,从而可以得知其中一台主机对将要收到的下一个TCP报文段中seq和ackseq值的要求。这样,在该合法主机收到另一台合法主机发送的TCP报文前,攻击者根据所截获的信息向该主机发出一个带有净荷的TCP报文,如果该主机先收到攻击报文,就可以把合法的TCP会话建立在攻击主机与被攻击主机之间。带有净荷的攻击报文能够使被攻击主机对下一个要收到的TCP报文中的确认序号(ackseq)的值的要求发生变化,从而使另一台合法的主机向被攻击主机发出的报文被被攻击主机拒绝。TCP会话劫持攻击方式的好处在于使攻击者避开了被攻击主机对访问者的身份验证和安全认证,从而使攻击者直接进入对被攻击主机的的访问状态,因此对系统安全构成的威胁比较严重。

  当黑客劫持会话时有可能带来负面的影响,其中之一就被成为ACK风暴。

  会话劫持攻击程序

  Juggernaut

  Juggernaut是一个可以被用来进行TCP会话攻击的网络sniffer程序。可以运行于LINUX操作系统的终端机上,安装和运行都很简单。可以设置值、暗号或标志这三种不同的方式来通知Juggernaut程序是否对所有的网络流量进行观察。例如,一个典型的标记就是登录暗号。无论何时Juggernaut发现这个暗号,就会捕获会话,这意味着黑客可以利用捕获到的用户密码再次进入系统。

  Hunt

  是一个用来听取、截取和劫持网络上的活动会话的程序。

  TTY Watcher

  是一个免费的程序,允许人们监视并且劫持一台单一主机上的连接。

  IP Watcher

  IP Watcher是一个商用的会话劫持工具,它允许监视会话并且获得积极的反会话劫持方法。它基于TTY Watcher此外还提供一些额外的功能,IPWatcher可以监视整个网络。