流程是听到SYN/ACK之后发送x个伪造的SYN/ACK在t毫秒后发送原始SYN/ACK和x个RST。
由于必须让伪造的SYN/ACK先到达客户端,必须用iptables修改kernel发的SYN/ACK让客户端收不到,但如果直接DROP或者STEAL,pcap会听不到。因此暂时非常丑陋地在iptables
-t mangle中强行修改了ttl为64的SYN/ACK的ttl为0(或者设置为1再丢掉网关返回的icmp type 11
ttl-zero-during-transit),pcap发的伪包则ttl设为255,最后在ipables mangle tables
POSTROUTING chain中将255改回64。希望有更好的解决方案干净地解决这个问题。
总之这就算是个demo。希望使用xt_CUI模块的就修改代码把里面发送伪造SYN/ACK的包替换成RST再删掉延时发包的函数。不方便编译内核模块但是可以iptables的可以直接用这个方案。详细的说明等有个干净的solution后再发布。
> 由于必须让伪造的SYN/ACK先到达客户端,必须用iptables修改kernel发的SYN/ACK让客户端收不到,但如果直接DROP或者STEAL,pcap会听不到。因此暂时非常丑陋地在iptables
> -t mangle中强行修改了ttl为64的SYN/ACK的ttl为0(或者设置为1再丢掉网关返回的icmp type 11
> ttl-zero-during-transit),pcap发的伪包则ttl设为255,最后在ipables mangle tables
> POSTROUTING chain中将255改回64。希望有更好的解决方案干净地解决这个问题。
既然丑陋就不评论了。