IPTables规则记录然后丢弃数据包,而不是包含通过TCDUMP找到的十六进制字符串

时间:2016-06-09 17:23:48

标签: iptables tcpdump netfilter

使用TCP转储我捕获了这个数据包,这一直是我的软件不可用的。

18:56:58.979504 IP Ubuntu-1404-trusty-64-minimal.13333 > XXX.XXX.XXX.XXX.60323: Flags [.], ack 47, win 227, options [nop,nop,TS val 26672837 ecr 695829589], length 0
    0x0000:  f4cc 554b 552c 5404 a6a6 8f40 0800 4500  ..UKU,T....@..E.
    0x0010:  0034 0ac8 4000 4006 25aa b009 6f56 bca5  .4..@.@.%...oV..
    0x0020:  2e4d 2f4f eba3 ffa0 f75a aac5 8dfb 8010  .M/O.....Z......
    0x0030:  00e3 72ad 0000 0101 080a 0196 fec5 2979  ..r...........)y
    0x0040:  8455

经过多次检查,我注意到这个数据包有一个固定的部分,在每个捕获的数据包中保持不变,这个部分位于偏移0x0010 exactley:b009 6f56 bca5。 首先,我尝试使用iptables来记录此数据包:

iptables -A INPUT -p tcp --dport 13333 -m string --algo bm --hex-string "|b0096f56bca5|" -j LOG --log-prefix "b009-6f56-bca5:"

不幸的是,这个iptables规则不起作用。但是当我把它改为:

iptables -A INPUT -p tcp --dport 13333 -m string --algo bm --hex-string "|bca5|" -j LOG --log-prefix "b009-6f56-bca5:"

它没有任何问题。 第一条规则有什么问题?我已经尝试"|b009 6f56 bca5|"但没有成功。

任何帮助将不胜感激。 最好的问候。

2 个答案:

答案 0 :(得分:0)

不工作tcpdump命令:

tcpdump -XX src port 13333

糟糕的输出:

18:56:58.979504 IP Ubuntu-1404-trusty-64-minimal.13333 > XXX.XXX.XXX.XXX.60323: Flags [.], ack 47, win 227, options [nop,nop,TS val 26672837 ecr 695829589], length 0
    0x0000:  f4cc 554b 552c 5404 a6a6 8f40 0800 4500  ..UKU,T....@..E.
    0x0010:  0034 0ac8 4000 4006 25aa b009 6f56 bca5  .4..@.@.%...oV..
    0x0020:  2e4d 2f4f eba3 ffa0 f75a aac5 8dfb 8010  .M/O.....Z......
    0x0030:  00e3 72ad 0000 0101 080a 0196 fec5 2979  ..r...........)y
    0x0040:  8455

使用tcpdump命令:

tcpdump -nnSOX "src host XXX.XXX.XXX.XXX" and "dst port 13333"

良好的产出:

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
05:49:49.631211 IP xxx.xxx.xxx.xxx.57625 > xxx.xxx.xxx.xxx.13333: Flags [S],   seq 1036987151, win 29200, options [mss 1460,sackOK,TS val 770422252 ecr 0,nop,wscale 7], length 0
    0x0000:  4514 003c 9ee3 4000 3a06 9772 bca5 2e4d  E..<..@.:..r...M
    0x0010:  b009 6f56 e119 2f4f 3dcf 2b0f 0000 0000  ..oV../O=.+.....
    0x0020:  a002 7210 6e7e 0000 0204 05b4 0402 080a  ..r.n~..........
    0x0030:  2deb b5ec 0000 0000 0103 0307            -...........

对我有用的规则:

iptables -A INPUT -p tcp --dport 13333 -m string --algo bm --hex-string "|bca52e4db0096f56|" -j LOG --log-prefix "Bad Packet:"
iptables -A INPUT -p tcp --dport 13333 -m string --algo bm --hex-string "|bca52e4db0096f56|" -j DROP

答案 1 :(得分:0)

以下是您尝试

的解决方案
iptables -I INPUT -j DROP -p tcp --dport 13333 -m string --algo bm --hex-string "|bca52e4db0096f56|"