会话劫持的第一步要求攻击者找到一个活动的会话。这要求攻击者嗅探在子网上的通讯。攻击者将寻找诸如FTP之类的一个已经建立起来的TCP会话。如果这个子网使用一个集线器,查找这种会话是很容易的。一个交换的网络需要攻击者破坏地址解析协议。
2猜测正确的序列号码
下一步,攻击者必须能够猜测正确的序列号码。请记住,一个基本的TCP协议设计是传输的数据的每一个字节必须要有一个序列号码。这个序列号用来保持跟踪数据和提供可靠性。最初的序列号码是在TCP协议握手的第一步生成的。目的地系统使用这个值确认发出的字节。这个序列号字段长度有32个字节。这就意味着可能有大约4,294,967,295个序列号。一旦这个序列号一致,这个账户就会随着数据的每一个字节逐步增加。
3把合法的用户断开 一旦确定了序列号,攻击者就能够把合法的用户断开。这个技术包括拒绝服务、源路由或者向用户发送一个重置命令。无论使用哪一种技术,这个目的都是要让用户离开通讯路径并且让服务器相信攻击者就是合法的客户机。
如果这些步骤取得成功,攻击者现在就可以控制这个会话。只要这个会话能够保持下去,攻击者就能够通过身份验证进行访问。这种访问能够用来在本地执行命令以便进一步利用攻击者的地位。
图3.5
上机:TCP会话劫持数据分析:
首先用Ethereal打开telnet1_hijacked.cap文件。在分组1和分组2中可以看到SYN和SYNACK标志。分组1是从IP地址为192.168.1.103的客户端发送到IP地址为192.168.1.101服务器的。打开Ethernet可以看到客户端的MAC地址为00:06:5b:d5:1e:e7,服务器端的MAC地址为:00:00:c0:29:36:e8。在SYNACK分组中,源地址和目的地址则正好相反。
图3.6分析分组1和分组2数据
这个TCP连接可用如下显示过滤器分离出来:(ip.addreq 192.168.1.103 and ip.addreq 192.168.1.101) and (tcp.porteq 1073 and tcp.porteq 23)的TCP连接中总共有98125个分组。当使用一下修改过滤规则后只有98123个分组。为了找到丢失的两个分组。将过滤规则改
为:!(eth.srceq00:00:c0:29:36:e8)and !(eth.srceq 00:06:5b:d5:1e:e7)(如图)
图3.7排除非客户端的MAC数据
可以发现,这两个分组的发送方的IP地址都为客户端(192.168.1.103)。但是以太网帧的源地址为00:01:03:87:a8:eb,而客户端的MAC地址
00:06:5b:d5:1e:e7。第一个伪造分组的序号为233,含有10个字节的数据。10个字节的数据代表10个ASCII码字符,前8个ASCII码为0x08字符,后面2个ASCII为0x0a字符。ASCII码0x08代表退格符,ASCII码0x0a代表换行符。当这个分组加入TCP数据流后,服务器会认为用户键入退格符8次,然后回车符两次。虽然看起来可能不会有太大的危害,它的目的仅仅是清空合法用户的输入,然后显示一个空白命令行给用户。但是,这个可以帮组确保攻击者构造的下一组所能实现的功能,不再是简单地在合法用户输入的任何命令行末尾添加一些
信息。如图所示
图3.8 分组1数据信息
第二个伪造分组的序号为243,含有37个字节的数据。主要包括以下的命令:echo “echo HACKED”>>$HOME/.profile。这个命令后紧跟着一个ASCII码为0x0a的字符,提示换行输入新的命令。这个命令会把“echoHACKED”字符添加到用户的根目录下名为.profile的文件中。在一些命令行shell中,用户登录后首先读取:profile文件并执行其中所有命令。用户通常都根据需要为创建他们的工作环境而执行一些列命令。将这些命令放置到.profile文件中意味着用户在每次登录后都不用手动地执行这些设置命令。通过在.profile文件中添加
“echoHACKED”命令,当用户下次登录时,他会在屏幕上看见“HACKED”
相关推荐: