KCheshireCat
2016-05-16 14:41:09 +08:00
我建议可以去看下 iptables 的 u32 模块
移动这边的 DNS 抢答,http 抢答,302 劫持跳转,单向 RST,BT-DHT, 都是有一定包构造特征的
比如移动在抢答 DNS 的时候一定会带 dns.flags.authoritative 标志位,
但是又和正常的包不一样一定不带 dns.flags.authenticated 标志。
302 劫持也是,tcp 包会标记 ACK ,FIN , PSH.而通常 http 并不使用 PSH 且 FIN 也不和 PSH 同时使用
还有 http 抢答,抢答的报文是有分包的,但是每个包大小都不到 MTU,且 tcp 窗口实际值恒为 0xFFFF
再者 BT-DHT 干扰,抢答包里面协议版本是个没人使用的版本号了,所有抢答包还都是一样长,非常好过滤
我目前都是用 u32 模块进行匹配来 DROP 的,这种抓异常包构造的方法一向很有效