热卖商品
新闻详情
从一次 Connection Reset 说起,TCP 半连接队列与全连接队列 - new...
来自 : 开源中国
发布时间:2021-03-24
IP 127.0.0.1.ftp-data 127.0.0.1.8877: Flags [S], seq 0, win 8192, length 0IP 127.0.0.1.8877 127.0.0.1.ftp-data: Flags [S.], seq 2150811556, ack 1, win 43690, options [mss 65495], length 0IP 127.0.0.1.ftp-data 127.0.0.1.8877: Flags [R], seq 1, win 0, length 0
前进的道路总是崎岖的,这次又是为什么???
这次问题比较好回答了,Scapy 运行在用户空间,SYN/ACK 这个包内核会先收到。因为我们用的是 RawSocket,内核不知道我们在进行三次握手,内核突然收到了一个 SYN/ACK 包,同时这个包对应的端口没有相关的 Socket,那么内核会认为这是一个无效的数据包,返回 RST 断开连接。正常情况下,三次握手都是由内核完成,内核知道我们在握手,此时内核并不知道。
因为我们要测试 SYN Flood,这个 RST 包会使得 Server 断开连接,将连接从半连接队列中清除,使得我们的攻击无效。
解决这个问题的方法有两个。第一,我们不用 Loopback Network Interface,换一个,比如 en0,IP 地址是 192.168.10.2。我们构造数据包发给 en0,src IP 随便填写,比如 192.168.100.2,因为返回的 SYN/ACK 不会由我们自己的系统接收,自然也不存在内核发送 RST 的问题。
第二,我们继续使用 Loopback,但是我们使用 iptables 将 RST 包直接丢弃,这里我们选择使用这个方法。
CentOS 7 默认使用的是 firewalld 而不是 iptables,我们需要手动安装。
$ systemctl stop firewalld$ yum install -y iptables-services$ systemctl start iptables# 添加规则,丢弃所有的 RST 包$ iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
现在终于可以编写我们的攻击脚本了
本文链接: http://polyresyn.immuno-online.com/view-690929.html
发布于 : 2021-03-24
阅读(0)
最新动态
2021-03-24
2021-03-25
2021-03-24
2021-03-24
2021-03-24
2021-03-25
2021-03-25
2021-03-25
2021-03-24
2021-03-24
2021-03-25
2021-03-25