Лично я бы не стал этого делать. Я бы перехватил все пакеты, а затем отфильтровал флаги SYN и ACK. Если вы устраняете неполадки TCP, вы почти всегда хотите видеть весь разговор, а не просто рукопожатие или ACK. Если вас не интересует фактическая полезная нагрузка данных, вы можете ограничить размер пакета с помощью tcpdump -s SIZE. Заголовок TCP может иметь переменную длину, поэтому при захвате -s 128будут получены все возможные заголовки и, возможно, немного данных.
suprjami
4
Может быть, вы не устраняете неполадки TCP. Может быть, вы хотите посмотреть, насколько болтливой является программа, и вы хотите сосчитать ее исходящие соединения. Как я, сейчас.
Дэн Притц
Ответы:
81
Синтаксис PCAP фильтра используется для ТСРйитра должен работать точно так же , как на захват Wireshark фильтра.
Обязательно ознакомьтесь с разделами в Wireshark Wiki о фильтрах захвата и отображения. К сожалению, два типа фильтров используют совершенно разный синтаксис и разные имена для одной и той же вещи.
Если вы хотите использовать фильтр отображения вместо фильтра захвата, вам, вероятно, потребуется создать выражение, объединяющее tcp.flags.ack и tcp.flags.syn. Я гораздо лучше знаком с фильтрами захвата, так что вам придется решить это самостоятельно.
Мне нравится ваш ответ лучше. Похоже, вы пошли на усилие. Upvote для вас.
Абле
4
Это отличный ответ с хорошими ссылками, но имейте в виду, что этот синтаксис будет захватывать любые пакеты, для которых установлены флаги SYN или ACK, даже если установлены и другие флаги. Это может или не может быть тем, что задумал ОП. Пожалуйста, смотрите мой ответ ниже для более строгого фильтра, если желательны только пакеты TCP SYN или ACK. Приветствия.
JJC
14
Хотя ответ @ Zoredache хорош и полон, обратите внимание, что этот синтаксис приведет к любым пакетам с установленным флагом TCP SYN или TCP ACK, включая пакеты, которые не являются просто простыми пакетами «TCP SYN» или «TCP ACK», поскольку они также есть другие флаги. Это может или не может быть тем, что вы (или будущие читатели) намеревались. Например, этот синтаксис также будет захватывать пакеты TCP SYN-ACK, TCP FIN-ACK и т. Д. Если вы хотите использовать только пакеты TCP SYN или TCP ACK (т. Е. Просто установить один из этих флагов), правильный синтаксис фильтра захвата:
'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'
Я сделал скрипт, чтобы увидеть топ "синерз". Для этого я рассматриваю только начальный пакет синхронизации (первый пакет из трех пакетов рукопожатия). То есть syn = 1, ack = 0
Это хороший пример. Вы можете еще больше упростить свой фильтр захвата tcpdump, заменив "'tcp [tcpflags] & (tcp-syn)! = 0' и 'tcp [tcpflags] & (tcp-ack) == 0'" просто на "tcp [tcpflags" ] == tcp-syn '. Это автоматически исключит пакеты с установленным ACK. Ура!
Вы также можете фильтровать на основе определенных частей пакета, а также объединить несколько условий в группы. Первый полезен, например, при поиске только SYNs или RSTs, а второй - для еще более сложной изоляции трафика.
UAP RSF
[Подсказка: анаграмма для флагов TCP: неопытные злоумышленники Pester Real Security Folk]
ваша записка: ...
Показать мне все СРОЧНЫЕ ( URG) пакеты ...
tcpdump 'tcp[13] & 32 != 0'
Показать все ACKпакеты ACKNOWLEDGE ( ) ...
tcpdump 'tcp[13] & 16 != 0'
Покажите мне все PSHпакеты PUSH ( ) ...
tcpdump 'tcp[13] & 8 != 0'
Показать все RSTпакеты RESET ( ) ...
tcpdump 'tcp[13] & 4 != 0'
Показать все SYNпакеты SYNCHRONIZE ( ) ...
tcpdump 'tcp[13] & 2 != 0'
Показать все FINпакеты FINISH ( ) ...
tcpdump 'tcp[13] & 1 != 0'
Показать все SYNACKпакеты SYNCHRONIZE / ACKNOWLEDGE ( ) ...
tcpdump 'tcp[13] = 18'
[ Примечание: Только PSH, RST, SYN, и FINфлаги отображаются в поле вывода флага TCPDUMP в. URGs и ACKs отображаются, но они отображаются в другом месте вывода, а не в поле флагов]
На Stack Exchange не разрешено плагиат . Пожалуйста, отредактируйте этот пост, чтобы было ясно, что вы скопировали контент со связанного сайта. Спасибо.
Крис С
4
Я хотел получить только пакеты SYN самостоятельно, я использовал следующую команду:
Это будет захватывать любые пакеты с установленным флагом SYN, включая SYN, SYN-ACK и т. Д. Если вы хотите только пакеты SYN, используйте вместо этого «tcp [13] == 2». Ура!
JJC
1
он должен показывать их без каких-либо фильтров или аргументов.
tcpdump -s SIZE
. Заголовок TCP может иметь переменную длину, поэтому при захвате-s 128
будут получены все возможные заголовки и, возможно, немного данных.Ответы:
Синтаксис PCAP фильтра используется для ТСРйитра должен работать точно так же , как на захват Wireshark фильтра.
С tcpdump я бы использовал такой фильтр.
Посетите справочную страницу tcpdump и обратите пристальное внимание на флаги tcpdump.
Обязательно ознакомьтесь с разделами в Wireshark Wiki о фильтрах захвата и отображения. К сожалению, два типа фильтров используют совершенно разный синтаксис и разные имена для одной и той же вещи.
Если вы хотите использовать фильтр отображения вместо фильтра захвата, вам, вероятно, потребуется создать выражение, объединяющее tcp.flags.ack и tcp.flags.syn. Я гораздо лучше знаком с фильтрами захвата, так что вам придется решить это самостоятельно.
источник
Хотя ответ @ Zoredache хорош и полон, обратите внимание, что этот синтаксис приведет к любым пакетам с установленным флагом TCP SYN или TCP ACK, включая пакеты, которые не являются просто простыми пакетами «TCP SYN» или «TCP ACK», поскольку они также есть другие флаги. Это может или не может быть тем, что вы (или будущие читатели) намеревались. Например, этот синтаксис также будет захватывать пакеты TCP SYN-ACK, TCP FIN-ACK и т. Д. Если вы хотите использовать только пакеты TCP SYN или TCP ACK (т. Е. Просто установить один из этих флагов), правильный синтаксис фильтра захвата:
Эквивалентное:
Ура!
источник
Я сделал скрипт, чтобы увидеть топ "синерз". Для этого я рассматриваю только начальный пакет синхронизации (первый пакет из трех пакетов рукопожатия). То есть syn = 1, ack = 0
источник
http://danielmiessler.com/study/tcpdump/
продвинутый
Вы также можете фильтровать на основе определенных частей пакета, а также объединить несколько условий в группы. Первый полезен, например, при поиске только
SYN
s илиRST
s, а второй - для еще более сложной изоляции трафика.UAP RSF
[Подсказка: анаграмма для флагов TCP: неопытные злоумышленники Pester Real Security Folk]
ваша записка: ...
Показать мне все СРОЧНЫЕ (
URG
) пакеты ...Показать все
ACK
пакеты ACKNOWLEDGE ( ) ...Покажите мне все
PSH
пакеты PUSH ( ) ...Показать все
RST
пакеты RESET ( ) ...Показать все
SYN
пакеты SYNCHRONIZE ( ) ...Показать все
FIN
пакеты FINISH ( ) ...Показать все
SYNACK
пакеты SYNCHRONIZE / ACKNOWLEDGE ( ) ...[ Примечание: Только
PSH
,RST
,SYN
, иFIN
флаги отображаются в поле вывода флага TCPDUMP в.URG
s иACK
s отображаются, но они отображаются в другом месте вывода, а не в поле флагов]источник
Я хотел получить только пакеты SYN самостоятельно, я использовал следующую команду:
tcpdump -i eth7 'tcp[13] & 2 != 0'
Это должно работать для вас сразу.
источник
он должен показывать их без каких-либо фильтров или аргументов.
источник