会话劫持发生在一个攻击者试图控制两台计算机之间建立的一个TCP会话的时候。会话劫持的基本步骤包括: 1.找到一个有主动会话的目标。 2.猜测这个序列号码。 3.把一个用户的连接断开。 4.接管这个会话。 会话劫持并不是新事物。Kevin Mitnick在1994年圣诞节期间实施的一次会话劫持也许是最著名的一次会话劫持。这个事件提高了人们对可能导致会话劫持的安全漏洞的了解。会话劫持的目的是窃取一个活动系统的经过身份识别的连接。如果攻击者获得成功,他就能够在本地执行指令。如果他劫持了一个有优先权限的账户,攻击者就能够以拥有优先权限的用户身份访问同等级别的内容。 使会话劫持如此危险的原因是没有攻击的证据,因为安全漏洞允许控制现有的账户。会话劫持使用的两个工具是Ettercap和Hunt。 会话劫持的步骤 这种攻击的第一步要求攻击者找到一个活动的会话。这要求攻击者嗅探在子网上的通讯。攻击者将寻找诸如FTP之类的一个已经建立起来的TCP会话。如果这个子网使用一个集线器,查找这种会话是很容易的。一个交换的网络需要攻击者破坏地址解析协议。 下一步,攻击者必须能够猜测正确的序列号码。请记住,一个基本的TCP协议设计是传输的数据的每一个字节必须要有一个序列号码。这个序列号用来保持跟踪数据和提供可靠性。最初的序列号码是在TCP协议握手的第一步生成的。目的地系统使用这个值确认发出的字节。这个序列号字段长度有32个字节。这就意味着可能有大约4,294,967,295个序列号。一旦这个序列号一致,这个账户就会随着数据的每一个自己逐步增加。几年前,序列号的预测是很容易的,因为操作系统厂商没有采取足够的措施生成随机的最初序列号吗。现代的操作系统改善了这种状况。如果你对你的系统产生随机的序列号感到好奇,Nmap等工具能够帮助你测量预测任何操作系统的序列号的难度。 一旦确定了序列号,攻击者就能够把合法的用户断开。这个技术包括拒绝服务、源路由或者向用户发送一个重置命令。无论使用哪一种技术,这个目的都是要让用户离开通讯路径并且让服务器相信攻击者就是合法的客户机。 如果这些步骤取得成功,攻击者现在就可以控制这个会话。只要这个会话能够保持下去,攻击者就能够通过身份验证进行访问。这种访问能够用来在本地执行命令以便进一步利用攻击者的地位。 预防和检测会话劫持 处理会话劫持问题有两种机制:预防和检测。预防措施包括限制入网的连接和设置你的网络拒绝假冒本地地址从互联网上发来的数据包。 加密也是有帮助的。如果你必须要允许来自可信赖的主机的外部连接,你可以使用Kerberos或者IPsec工具。使用更安全的协议,FTP和 Telnet协议是最容易受到攻击的。SSH是一种很好的替代方法。SSH在本地和远程主机之间建立一个加密的频道。通过使用IDS或者IPS系统能够改善检测。交换机、SSH等协议和更随机的初始序列号的使用会让会话劫持更加困难。此外,网络管理员不应该麻痹大意,有一种安全感。虽然会话劫持不像以前那样容易了,但是,会话劫持仍是一种潜在的威胁。允许某人以经过身份识别的身份连接到你的一个系统的网络攻击是需要认真对付的。