TCP协议通过3次握手和4次挥手建立和断开连接。利用握手和挥手机制,也可以干扰正常的TCP数据传输。本文介绍如何干扰TCP数据传输。
1、重置会话
正常情况下,客户端与服务器端不再通信时,需要通过四次挥手断开连接。利用该机制,用户可以手动发送TCP重置包,断开客户端与服务器之间的连接,干扰正常的数据传输。重置会话可以使用netwox工具提供的编号为78的模块。
已知主机A的IP地址为192.168.59.156,主机B的IP地址为192.168.59.135,主机C的IP地址为192.168.59.133。使用netwox工具重置TCP会话。具体步骤如下:
1)在主机A上建立TCP服务器端,并发送消息ni hao,如下:
root@daxueba:~# netwox 89 -P 80
ni hao
2)在主机B上建立TCP客户端,并回复消息hao,如下:
root@daxueba:~# netwox 87 -i 192.168.59.156 -p 80
ni hao
hao
从以上输出信息可以看到TCP客户端与服务器端的会话消息。
3)在主机C上使用netwox重置TCP会话,指定服务器端IP地址,执行命令如下:
root@daxueba:~# netwox 78 -i 192.168.59.156
执行命令后没有任何输出信息。
4)当在TCP服务器端再次向TCP客户端发送消息时,则TCP会话中断。例如,发送消息hello,如下:
root@daxueba:~# netwox 89 -P 80
ni hao
hao
hello
root@daxueba:~# #中断TCP会话
5)在服务器端进行抓包,将捕获到TCP会话中断的相关数据包,如图1所示。图中第21个数据包为TCP数据包,在Info列中可以看到[TCP ACKed unseen segment]信息,表示该数据包的TCP会话不存在,已经重置了。在Transmission Control Protocol部分中可以看到Flags:的值为(RST,ACK),表示该数据包为重置数据包。
图1 重置TCP会话数据包
2、检查盲注攻击漏洞
发送一个[SYN]请求包,会得到一个包含序列号的[SYN,ACK]响应包。连续发送[SYN]请求包时,会得到一系列的序列号。如果序列号的值是有规律的,那么当请求主机不再发送[SYN]请求包时,攻击者可以利用发现的规律预测到下一个序列号的值。该现象被称为TCP序列号预测漏洞。
为了判断目标主机上是否存在该漏洞,netwox工具提供了编号为77的模块来实现。它可以向目标主机发送大量的[SYN]请求包。如果目标主机端口处于开放状态,可以得到一系列的序列号值。通过比对这些值是否具有规律性,可以判断是否存在该漏洞。
检查目标主机是否存在TCP序列号预测漏洞。
1)对目标主机进行检查,执行命令如下:
root@daxueba:~# netwox 77 -i 192.168.59.135 -p 5228
输出信息如下:
… #省略其他信息
图2 随机序列号的[SYN,ACK]响应包
3)如果目标主机上的端口没有开放,将返回如下信息:
No answer for this SYN (try to increase max-wait)
No answer for this SYN (try to increase max-wait)
No answer for this SYN (try to increase max-wait)
No answer for this SYN (try to increase max-wait)
No answer for this SYN (try to increase max-wait)