一、阻断未建立起来的连接
我们知道TCP的建立要经过3次握手,假设客户端C向服务器S请求连接
1、C发送带有SEQ_C(随机)初始序列号的SYN报文给S
2、S回复带有SEQ_S(随机)初始序列号和确认序列号ACK_S(必须是SEQ_C+1)的SYN报文给C
3、C回复确认序列号ACK_C(取值为SEQ_S)给S
整个过程如果正确的话,连接将会建立。
通常需要进行阻断的情况是审计控制系统旁路监听内网。旁路监听的方式一般是将主交换机的数据镜像到控制系统,控制系统可以采用
libpcap捕获数据包。
在这种情况下要阻断tcp连接的建立只要在监听到第一次握手的时候,控制系统伪造服务器发起第二次握手回应,就能阻断客户端与服务器连接的建立。因为我们的系统在内网,发出的报文肯定比服务器快,这样客户端接收到我们伪造的报文以后会回应第三次握手,当服务器真正的报文到达的时候客户端将不再处理,此时客户端再向服务器请求数据,因为seq号和ack号出错,服务器不会受理客户端的请求。

本文介绍了如何通过TCP三次握手的特性来阻断未建立的连接。在审计控制系统旁路监听内网时,可以通过伪造服务器的第二次握手响应来实现。同时,展示了C语言实现伪造TCP报文的代码示例,包括设置IP和TCP头部,以及校验和的计算。此外,还提及了阻断已建立连接的方法,如发送RST或FIN包。
最低0.47元/天 解锁文章
6946

被折叠的 条评论
为什么被折叠?



