Правило IPTables для регистрации, а затем отбрасывания пакетов, чем содержит шестнадцатеричную строку, найденную с помощью TCDUMP.

Используя TCP Dump, я захватил этот пакет, который все время делает мое программное обеспечение недоступным.

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,[email protected].
    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 в точности: 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:"

Работает без проблем. Что не так с 1-м правилом? Я уже пробовал "|b009 6f56 bca5|" безуспешно.

Любая помощь будет оценена. С наилучшими пожеланиями.


person user3072470    schedule 09.06.2016    source источник
comment
Что произойдет, если вы установите шестнадцатеричную строку в шестнадцатеричной паре, например, b0 09 6f ..   -  person BugFinder    schedule 09.06.2016
comment
даже это правило не работает! iptables -A INPUT -p tcp --dport 13333 -m string --algo bm --hex-string "|b0 09 6f 56 bc a5|" -j LOG --log-prefix "b009-6f56-bca5: : "   -  person user3072470    schedule 09.06.2016
comment
Я, возможно, хватаюсь за соломинку, но что, если вы измените алгоритм на kmp   -  person BugFinder    schedule 09.06.2016
comment
iptables -A INPUT -p tcp --dport 13333 -m string --algo kmp --hex-string "|b0 09 6f 56 bc a5|" -j LOG --log-prefix "b009-6f56-bca5: " Тот же результат. Не работает   -  person user3072470    schedule 09.06.2016
comment
Очень странно.. Я слышал, что иногда строки не совпадают с первыми двумя пакетами, но у меня нет идей.. Извините   -  person BugFinder    schedule 09.06.2016
comment
У меня тоже нет идей, я потратил день, чтобы понять, почему правило работает для bca5, но не для b0096f56bca5   -  person user3072470    schedule 09.06.2016
comment
Он явно находит какую-то причину, чтобы не сопоставлять его, но это паршиво, он не может / не хочет объяснять, почему!   -  person BugFinder    schedule 09.06.2016
comment
Я проверил, что все пакеты имеют одинаковую структуру и размер, только вышеуказанная часть остается неизменной.   -  person user3072470    schedule 09.06.2016
comment
Я попробовал этот синтаксис iptables в «Ubuntu 14.04.1 LTS», он отлично работает. Содержимое захваченного вами IP-пакета кажется мне странным, вы внесли некоторые изменения, учитывая проблему конфиденциальности? Вы пробовали |6f56 bca5| или |b009 6f56| ?   -  person sel-fish    schedule 10.06.2016


Ответы (2)


Не работает команда 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,[email protected].
    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
person user3072470    schedule 13.06.2016

Вот решение для вас, чтобы попробовать

iptables -I INPUT -j DROP -p tcp --dport 13333 -m string --algo bm --hex-string "|bca52e4db0096f56|"
person китайец ИзКитая    schedule 24.09.2017