yingyingcui userspace版本demo

23 views
Skip to first unread message

崔莺莺

unread,
Mar 14, 2010, 7:08:57 PM3/14/10
to scholarz...@googlegroups.com
之前发布的west-chamber中的CUI内核模块无法到在发送SYN/ACK之后发送RST,意味着要消除服务器到客户端的深度包检测必须userspace程序的配合。因此用branch/scholarzhang-0.3.2改了一个branch/yingyingcui-0.3.2出来作为demo,写得很糙不可避免。考虑到其它需要,直接在userspace程序中实现了全部功能。

流程是听到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后再发布。

klzgrad

unread,
Mar 14, 2010, 10:01:52 PM3/14/10
to scholarz...@googlegroups.com
2010/3/15 崔莺莺 <yingyingcui....@gmail.com>:

> 之前发布的west-chamber中的CUI内核模块无法到在发送SYN/ACK之后发送RST,意味着要消除服务器到客户端的深度包检测必须userspace程序的配合。因此用branch/scholarzhang-0.3.2改了一个branch/yingyingcui-0.3.2出来作为demo,写得很糙不可避免。考虑到其它需要,直接在userspace程序中实现了全部功能。
>
> 流程是听到SYN/ACK之后发送x个伪造的SYN/ACK在t毫秒后发送原始SYN/ACK和x个RST。
内核态怎么做延时?这是一个问题,暂时没有去解决它。如果延时可以改善丢包的情况,比如发三次每次隔50ms确保不丢包。

> 由于必须让伪造的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。希望有更好的解决方案干净地解决这个问题。

既然丑陋就不评论了。

Reply all
Reply to author
Forward
0 new messages