会话劫持由若干步骤组成,这里先简要地描述一下,随后再做详尽地解释。

先做以下假定:

首先,目标主机已经选定。其次,信任模式已被发现,并找到了一个被目标主机信任的主机。***为了进行IP欺骗,进行以下工作:使得被信任的主机丧失工作能力,同时采样目标主机发出的TCP 序列号,猜测出它的数据序列号。然后,伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,***可以使用一种简单的命令放置一个系统后门,以进行非授权操作。




1
使被信任主机丧失工作能力

一旦发现被信任的主机,为了伪装成它,往往使其丧失工作能力。由于***者将要代替真正的被信任主机,他必须确保真正被信任的主机不能接收到任何有效的网络数据,否则将会被揭穿。有许多方法可以做到这些。可以用上面介绍的任一种 DoS ***方法。这里介绍 SYN
***往往向被进攻目标的 TCP 端口发送大量 SYN 请求,这些请求的源地址是使用一个合法的但是虚假的 IP 地址(可能使用该合法 IP 地址的主机没有开机)。而受***的主机往往是会向该 IP 地址发送响应的,但可惜是杳无音信。与此同时 IP 包会通知受***主机的 TCP :该主机不可到达,但不幸的是 TCP 会认为是一种暂时错误,并继续尝试连接(比如继续对该 IP 地址进行路由,发出 SYN/ACK 数据包等等),直至确信无法连接。

2
序列号取样和猜测

要对目标主机进行***,必须知道目标主机使用的数据包序列号。现在,我们来讨论***是如何进行预测的。他们先与被***主机的一个端口( SMTP 是一个很好的选择)建立起正常的连接。通常,这个过程被重复若干次,并将目标主机最后所发送的 ISN 存储起来。***还需要估计他的主机与被信任主机之间的 RTT 时间(往返时间),这个 RTT 时间是通过多次统计平均求出的。 RTT 对于估计下一个 ISN 是非常重要的。前面已经提到每秒钟 ISN 增加 128000 ,每次连接增加 64000 。现在就不难估计出 ISN 的大小了,它是 128000 乘以 RTT 的一半,如果此时目标主机刚刚建立过一个连接,那么再加上一个 64000 。再估计出 ISN 大小后,立即就开始进行***。当***的虚假 TCP 数据包进入目标主机时,根据估计的准确度不同,会发生不同的情况: ·如果估计的序列号是准确的,进入的数据将被放置在接收缓冲器以供使用。 ·如果估计的序列号小于期待的数字,那么将被放弃。 ·如果估计的序列号大于期待的数字,并且在滑动窗口(前面讲的缓冲)之内,那么,该数据被认为是一个未来的数据, TCP 模块将等待其它缺少的数据。如果估计的序列号大于期待的数字,并且不在滑动窗口(前面讲的缓冲)之内,那么, TCP 将会放弃该数据并返回一个期望获得的数据序列号。下面将要提到,***的主机并不能收到返回的数据序列号。

***者伪装成被信任主机的 IP 地址,此时,该主机仍然处在停顿状态(前面讲的丧失处理能力),然后向目标主机的 513 端口 (rlogin 的端口号 ) 发送连接请求。目标主机对连接请求作出反应,发送 SYN/ACK 数据包给被信任主机(如果被信任主机处于正常工作状态,那么会认为是错误并立即向目标主机返回 RST 数据包,但此时它处于停顿状态)。按照计划,被信任主机会抛弃该 SYN/ACK 数据包。***者向目标主机发送 ACK 数据包,该 ACK 使用前面估计的序列号加 1 (因为是在确认)。如果***者估计正确的话,目标主机将会接收该 ACK 。数据开始传输。

防范措施

SPF检查

正确的ACL

对通信进行加密