Tcpdump http запросы. Tcpdump инструкция и примеры. Показать только трафик ip6

22.05.2023 Новости

This tutorial will show you how to isolate traffic in various ways—from IP, to port, to protocol, to application-layer traffic—to make sure you find exactly what you need as quickly as possible.

tcpdump is the tool everyone should learn as their base for packet analysis.

Install tcpdump with apt install tcpdump (Ubuntu), or yum install tcpdump (Redhat/Centos)

Let’s start with a basic command that will get us HTTPS traffic:

tcpdump -nn S X port 443

04:45:40.573686 IP 78.149.209.110.27782 > 172.30.0.144 .443 : Flags [.], ack 278239097, win 28, options , length 0 0x0000: 4500 0034 0014 0000 2e06 c005 4e8e d16e E..4........N..n 0x0010: ac1e 0090 6c86 01bb 8e0a b73e 1095 9779 ....l......>...y 0x0020: 8010 001c d202 0000 0101 080a 3803 7b55 ............8.{U 0x0030: 4801 8100

You can get a single packet with -c 1 , or n number with -c n .

This showed some HTTPS traffic, with a hex display visible on the right portion of the output (alas, it’s encrypted). Just remember—when in doubt, run the command above with the port you’re interested in, and you should be on your way.

Examples

PacketWizard™ isn’t really trademarked, but it should be.

a practitioner preparing to run tcpdump

Now that you are able to get basic traffic, let’s step through numerous examples that you are likely to need during your job in networking, security, or as any type of PacketWizard™.

Everything on an interface

Just see what’s going on, by looking at what’s hitting your interface.

Or get all interfaces with -i any .

tcpdump -i eth0

Find Traffic by IP

One of the most common queries, using host , you can see traffic that’s going to or from 1.1.1.1.

Expression Types:

host , net , and port .

src and dst .

host , net , and port .

tcp , udp , icmp , and many more.

tcpdump host 1.1.1.1

06:20:25.593207 IP 172.30.0.144.39270 > one.one.one.one .domain : 12790+ A? google.com. (28) 06:20:25.594510 IP one.one.one.one .domain > 172.30.0.144.39270: 12790 1/0/0 A 172.217.15.78 (44)

If you only want to see traffic in one direction or the other, you can use src and dst .

tcpdump src 1.1.1.1
tcpdump dst 1.0.0.1

Finding Packets by Network

To find packets going to or from a particular network or subnet, use the net option.

You can combine this with the src and dst options as well.

tcpdump net 1.2.3.0/24

Get Packet Contents with Hex Output

Hex output is useful when you want to see the content of the packets in question, and it’s often best used when you’re isolating a few candidates for closer scrutiny.

tcpdump -c 1 -X icmp

Summary

Here are the takeaways.

  1. tcpdump is a valuable tool for anyone looking to get into networking or .
  2. The raw way it interfaces with traffic, combined with the precision it offers in inspecting packets make it the best possible tool for learning TCP/IP.
  3. Protocol Analyzers like Wireshark are great, but if you want to truly master packet-fu, you must become one with tcpdump first.

Well, this primer should get you going strong, but the man page should always be handy for the most advanced and one-off usage scenarios. I truly hope this has been useful to you, and feel free to if you have any questions.

Notes

  1. I’m currently (sort of) writing a book on tcpdump for No Starch Press.
  2. The leading image is from SecurityWizardry.com .
  3. Some of the isolation filters borrowed from

Если вам необходимо проанализировать или перехватить сетевые пакеты в Linux, то лучше всего для этого использовать консольную утилиту tcpdump . Но проблема возникает в довольно сложном ее управлении. Рядовому пользователю покажется, что работать с утилитой неудобно, но это только на первый взгляд. В статье будет рассказано, как устроена tcpdump, какой синтаксис она имеет, как ей пользоваться, а также будут приведены многочисленные примеры ее использования.

Читайте также: Руководства по настройке интернет-соединения в Ubuntu , Debian , Ubuntu Server

Большинство разработчиков операционных систем на базе Linux включают утилиту tcpdump в список предустановленных, но если по какой-то причине она в вашем дистрибутиве отсутствует, ее можно всегда скачать и установить через «Терминал» . Если у вас ОС основана на Debian, а это Ubuntu, Linux Mint, Kali Linux и им подобные, нужно выполнить эту команду:

sudo apt install tcpdump

При установке вам нужно ввести пароль. Обратите внимание, что при наборе он не отображается, также для подтверждения установки нужно ввести символ «Д» и нажать Enter .

Если у вас Red Hat, Fedora или CentOS, то команда для установки будет иметь следующий вид:

sudo yam install tcpdump

После того как утилита будет установлена, ей сразу же можно пользоваться. Об этом и о многом другом будет рассказано дальше по тексту.

Синтаксис

Как и любая другая команда, tcpdump имеет свой синтаксис. Зная его, вы сможете задавать все необходимые параметры, которые будут учитываться при выполнении команды. Синтаксис имеет следующий вид:

tcpdump опции -i интерфейс фильтры

При использовании команды вам обязательно необходимо указывать интерфейс для отслеживания. Фильтры и опции - это не обязательные переменные, но они позволяют выполнить более гибкую настройку.

Опции

Хоть опцию и не обязательно указывать, перечислить доступные все же нужно. В таблице продемонстрирован не весь их список, а только наиболее популярные, но их с лихвой хватит, чтобы решить большинство поставленных задач.

Опция Определение
-A Позволяет отсортировать пакеты с форматом ASCII
-l Добавляет функцию прокрутки
-i После ввода нужно указать сетевой интерфейс, который будет отслеживаться. Чтобы начать отслеживать все интерфейсы, впишите после опции слово «any»
-c Завершает процесс отслеживания после проверки указанного количества пакетов
-w Генерирует текстовый файл с отчетом проверки
-e Показывает уровень интернет-соединения пакета данных
-L Выводит только те протоколы, которые поддерживает указанный сетевой интерфейс
-C Создает другой файл во время записи пакета, если его размер больше заданного
-r Открывает файл для чтения, который был создан с помощью опции -w
-j Для записи пакетов будет использоваться формат TimeStamp
-J Позволяет просмотреть все доступные форматы TimeStamp
-G Служит для создания файла с логами. Опция требует также указания временного значения, по истечении которого будет создаваться новый лог
-v, -vv, -vvv В зависимости от количества символов в опции, вывод команды будет становиться подробнее (увеличение прямо пропорционально количеству символов)
-f В выводе показывает имя домена адресов IP
-F Позволяет считывать информацию не из сетевого интерфейса, а из указанного файла
-D Демонстрирует все сетевые интерфейсы, которые можно использовать
-n Деактивирует отображение доменных имен
-Z Задает пользователя, под учетной записью которого будут созданы все файлы
-K Пропуск анализа контрольных сумм
-q Демонстрация краткой информации
-H Позволяет обнаружить заголовки 802.11s
-I Используется при захвате пакетов в режиме монитора

Разобрав опции, чуть ниже мы перейдем непосредственно к их применениям. А пока что будут рассмотрены фильтры.

Фильтры

Как говорилось в самом начале статьи, вы можете добавлять в синтаксис tcpdump фильтры. Сейчас будут рассмотрены наиболее популярные из них:

Все вышеперечисленные фильтры можно комбинировать между собой, таким образом, в выдаче команды вы будете наблюдать только ту информацию, которую желаете увидеть. Чтобы более детально разобраться в использовании вышеперечисленных фильтров, стоит привести примеры.

Примеры использования

Сейчас будут приведены часто используемые варианты синтаксиса команды tcpdump. Все их перечислить не получится, так как их вариаций может быть бесконечное множество.

Просмотр списка интерфейсов

Рекомендуется каждому пользователю изначально проверить список всех его сетевых интерфейсов, которые можно отследить. Из вышеприведенной таблицы мы знаем, что для этого нужно использовать опцию -D , поэтому в терминале выполните следующую команду:

Как вы можете заметить, в примере есть восемь интерфейсов, которые можно просмотреть с помощью команды tcpdump. В статье будут приводиться примеры с ppp0 , вы же можете использовать любой другой.

Обычный захват трафика

Если нужно отследить один сетевой интерфейс, то сделать это вы можете с помощью опции -i . Не забудьте после ее ввода указать наименование интерфейса. Вот пример выполнения такой команды:

sudo tcpdump -i ppp0

Обратите внимание: перед самой командой нужно вписать «sudo», так как она требует права суперпользователя.

Примечание: после нажатия Enter в «Терминале» беспрерывно будут отображаться перехваченные пакеты. Чтобы остановить их поток, нужно нажать комбинацию клавиш Ctrl+C.

Если вы выполняете команду без дополнительных опций и фильтров, то увидите следующий формат отображения отслеженных пакетов:

22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482 : Flags , seq 1:595, ack 1118, win 6494, options , length 594

Где цветом выделено:

  • синим - время получения пакета;
  • зеленым - адрес отправителя;
  • фиолетовым - адрес получателя;
  • серым - дополнительная информация о tcp;
  • красным - размер пакета (отображается в байтах).

Этот синтаксис имеет возможность вывода в окне «Терминала» без использования дополнительных опций.

Захват трафика с опцией -v

Как известно из таблицы, опция -v позволяет увеличить количество информации. Разберем на примере. Проверим тот же интерфейс:

sudo tcpdump -v -i ppp0

Здесь можно заметить, что появилась следующая строка в выводе:

IP (tos 0x0, ttl 58 , id 30675, offset 0, flags , proto TCP (6) , length 52

Где цветом выделено:

  • оранжевым - версия протокола;
  • синим - продолжительность жизни протокола;
  • зеленым - длина заголовка поля;
  • фиолетовым - версия пакета tcp;
  • красным - размер пакета.

Также в синтаксис команды вы можете прописать опцию -vv или -vvv , что позволит еще больше увеличить объем выводимой информации на экран.

Опция -w и -r

В таблице опций упоминалось о возможности сохранять все выводимые данные в отдельный файл, чтобы позже их можно было просмотреть. За это отвечает опция -w . Пользоваться ей довольно просто, всего-навсего укажите ее в команде, а затем впишите название будущего файла с расширением «.pcap» . Рассмотрим все на примере:

sudo tcpdump -i ppp0 -w file.pcap

Обратите внимание: во время записи логов в файл на экране «Терминала» не отображается никакой текст.

Когда вы захотите просмотреть записанный вывод, необходимо использовать опцию -r , после которой написать название ранее записанного файла. Применяется она без других опций и фильтров:

sudo tcpdump -r file.pcap

Обе эти опции отлично подойдут в тех случаях, когда необходимо сохранить большие объемы текста для последующего разбора.

Фильтрация по IP

Из таблицы фильтров мы знаем, что dst позволяет вывести на экран консоли только те пакеты, которые были получены адресом, что указан в синтаксисе команды. Таким образом очень удобно просматривать пакеты, полученные вашим компьютером. Для этого в команде нужно всего лишь указать свой IP-адрес:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Как можно заметить, помимо dst , в команде мы прописали также фильтр ip . Другими словами, мы сказали компьютеру, чтобы при отборе пакетов он обращал внимание на их IP адрес, а не на другие параметры.

По IP можно отфильтровать и отправляемые пакеты. В примере приведем снова наш IP. То есть сейчас мы отследим, какие пакеты отправляются с нашего компьютера на другие адреса. Для этого нужно выполнить следующую команду:

sudo tcpdump -i ppp0 ip src 10.0.6.67

Как можно заметить, в синтаксисе команды мы изменили фильтр dst на src , тем самым сказав машине, чтобы она искала отправителя по IP.

Фильтрация по HOST

По аналогии с IP в команде мы можем указать фильтр host , чтобы отсеять пакеты с интересующим хостом. То есть в синтаксисе вместо IP-адреса отправителя/получателя нужно будет указывать его хост. Выглядит это следующим образом:

sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com

На изображении можно увидеть, что в «Терминале» отображаются только те пакеты, которые были отправлены с нашего IP на хост google.com. Как можно понять, вместо хоста google, можно вписать любой другой.

Как и в случае с фильтрацией по IP, в синтаксисе dst можно заменить на src , чтобы увидеть пакеты, которые отправляются на ваш компьютер:

sudo tcpdump -i ppp0 src host google-public-dns-a.google.com

Обратите внимание: фильтр host должен стоять после dst или src, иначе команда выдаст ошибку. В случае с фильтрацией по IP, наоборот, dst и src стоят перед фильтром ip.

Применение фильтра and и or

Если у вас появляется необходимость использовать сразу несколько фильтров в одной команде, то для этого нужно применять фильтр and или or (зависит от случая). Указывая фильтры в синтаксисе и разделяя их этими оператором, вы «заставите» работать их как один. На примере это выглядит следующим образом:

sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254

Из синтаксиса команды видно, что мы хотим вывести на экран «Терминала» все пакеты, которые были отправлены на адрес 95.47.144.254 и пакеты, полученные этим же адресом. Также вы можете изменять некоторые переменные в этом выражении. Например, вместо IP указать HOST или заменить непосредственно сами адреса.

Фильтр port и portrange

Фильтр port отлично подойдет в тех случаях, когда нужно получить информацию о пакетах с определенным портом. Так, если вам нужно увидеть лишь ответы или запросы DNS, нужно указать порт 53:

sudo tcpdump -vv -i ppp0 port 53

Если вы хотите просмотреть пакеты http, нужно ввести порт 80:

sudo tcpdump -vv -i ppp0 port 80

Помимо прочего, есть возможность отследить сразу диапазон портов. Для этого применяется фильтр portrange :

sudo tcpdump portrange 50-80

Как можно заметить, в связке с фильтром portrange не обязательно указывать дополнительные опции. Достаточно всего лишь задать диапазон.

Фильтрация по протоколам

Вы также можете вывести на экран только тот трафик, который соответствует какому-либо протоколу. Для этого нужно использовать в качестве фильтра наименование этого самого протокола. Разберем на примере udp :

sudo tcpdump -vvv -i ppp0 udp

Как можно увидеть на изображении, после выполнения команды в «Терминале» отобразились лишь пакеты с протоколом udp . Соответственно, вы можете осуществить фильтрацию и по другим, например, arp :

sudo tcpdump -vvv -i ppp0 arp

или tcp :

sudo tcpdump -vvv -i ppp0 tcp

Фильтр net

Оператор net помогает отфильтровать пакеты, беря за основу обозначение их сети. Пользоваться им так же просто, как и остальными - нужно в синтаксисе указать атрибут net , после чего вписать адрес сети. Вот пример такой команды:

sudo tcpdump -i ppp0 net 192.168.1.1

Фильтрация по размеру пакета

Мы не рассмотрели еще два интересных фильтра: less и greater . Из таблицы с фильтрами мы знаем, что они служат для вывода пакетов данных больше (less ) или меньше (greater ) размера, указанного после ввода атрибута.

Допустим мы хотим следить лишь за пакетами, которые не превышают отметку в 50 бит, тогда команда будет иметь следующий вид:

sudo tcpdump -i ppp0 less 50

Теперь давайте отобразим в «Терминале» пакеты, размер которых больше 50 бит:

sudo tcpdump -i ppp0 greater 50

Как можно заметить, применяются они одинаково, разница лишь в названии фильтра.

Заключение

По окончании статьи можно сделать вывод, что команда tcpdump - это отличный инструмент, с помощью которого можно отследить любой передаваемый по интернету пакет данных. Но для этого недостаточно просто ввести саму команду в «Терминал» . Добиться желаемого результата получится только в случае, если использовать всевозможные опции и фильтры, а также их комбинации.

tcpdump — мощный анализатор командной строки и Libpcap, портативная библиотека для захвата сетевого трафика. Tcpdump выводит описание содержимого пакетов на сетевом интерфейсе, которые соответствуют логическое выражение. Он также может быть запущен с ключом -w, который вызывает его, чтобы сохранить пакетные данные в файл для последующего анализа, и / или с -r флагом, который вызывает его для чтения из сохраненного файла пакета. С помощью этой утилиты можно перехватывать и так же анализировать сетевой трафик который проходит через ПК на котором запущенна данная программа.

Хотелось бы поговорить в данной теме «установка и использование tcpdump» об установке tcpdump, а так же как им пользоваться и для чего он нужен.

С помощью tcpdump можно:

  • Можно делать отладку сетевых приложений.
  • Можно производить отладку сети или сетевого оборудования в целом.

Чтобы установить tcpdump на debian/ubuntu/linux mint нужно выполнить:

# sudo apt-get install tcpdump

Для того чтобы установить tcpdump на RedHat/CentOS/Fedora используйте:

# sudo yum install tcpdump

Для того чтобы установить tcpdump на MacOS используйте.

# brew install tcpdump

Использование tcpdump.

Чтобы проверить работает ли у нас tcpdump можно выполнить команду:

# tcpdump -i eth0 port 80

Существует довольно много ключей для использования самой утилиты tcpdump, приведу список распространенных:

Если нужно узнать какими пакетами обменивается 21 сервера (например your_server_1 и your_server_2), то для этого служит команда:

# tcpdump host your_server_1 and your_server_2

Если нужно отслеживать только исходящие пакеты из хоста, то выполните:

# tcpdump src host your_server

Если нужно отслеживать только входящие пакеты из хоста, то выполните:

# tcpdump dst host your_server

Так же можно прослушивать исходящие или входящие пакеты с сервера и по определенному порту для этого просто добавьте порт который нужно прослушивать (в основном используется 80, 8080).

См. список интерфейсов, по которым tcpdumt можете слушать:

# tcpdump -D

Слушать интерфейс eth0:

# tcpdump -i eth0

Слушать на любом доступном интерфейсе (Требуется ядро Linux версии 2.2 или выше):

# tcpdump -i any

Вывод всего на экран (все что выполняется программой):

# tcpdump -v

Вывод много чего на экран (все что выполняется программой):

# tcpdump -vv

Вывод очень много всего на экран (все что выполняется программой):

# tcpdump -vvv

Выводить не сильно много информации когда идет захват пакетов (не как стандартный):

# tcpdump -q

Ограничить захват пакетов до 100:

# tcpdump -c 100

Записать все данные (перехваченные пакеты) в файл с именем capture.cap:

# tcpdump -w capture.cap

Записать все данные (перехваченные пакеты) в файл с именем capture.cap и вывести на экран в режиме реального времени:

# tcpdump -v -w capture.cap

Вывод пакетов с файла capture.cap:

# tcpdump -r capture.cap

Вывод пакетов с файла capture.cap используя максимально много информации:

# tcpdump -vvv -r capture.cap

Вывод IP и порты вместо доменов идет захват пакетов:

# tcpdump -n

Захват любых пакетов, где хост назначения — 192.138.1.1. Вывод ИП и порты на экран:

# tcpdump -n dst host 192.138.1.1

# tcpdump -n src host 192.138.1.1

Захват любых пакетов c хоста 192.138.1.1. Вывод ИП и порты на экран:

# tcpdump -n host 192.138.1.1

Захват пакетов где сеть 192.138.1.0/24. Вывод ИП и порты на экран:

# tcpdump -n dst net 192.138.1.0/24

# tcpdump -n src net 192.138.1.0/24

Захват пакетов с сети 192.138.1.0/24. Вывод ИП и порты на экран:

# tcpdump -n net 192.138.1.0/24

Захват пакетов с порта 23. Вывод ИП и порты на экран:

# tcpdump -n dst port 23

Захват пакетов с портов 1 по 1023. Вывод ИП и порты на экран:

# tcpdump -n dst portrange 1-1023

Захватывать только TCP пакеты где destination на портах 1 по 1023. Вывод ИП и порты на экран:

# tcpdump -n tcp dst portrange 1-1023

Захватывать только UDP пакеты где destination на портах 1 по 1023. Вывод ИП и порты на экран:

# tcpdump -n udp dst portrange 1-1023

Захват пакетов с destination где ИП 192.138.1.1 и destination порт которого 23. Вывод на экран:

# tcpdump -n "dst host 192.138.1.1 and dst port 23"

Захват пакетов с destination где ИП 192.138.1.1 и destination по портам 80 или 443. Выводим на экран:

# tcpdump -n "dst host 192.138.1.1 and (dst port 80 or dst port 443)"

Захват любых ICMP пакетов:

# tcpdump -v icmp

Захват любых ARP пакетов:

# tcpdump -v arp

Захват любых ICMP или ARP пакетов:

# tcpdump -v "icmp or arp"

Захват любых пакетов которые broadcast или multicast:

# tcpdump -n "broadcast or multicast"

Захват больших пакетов (500 байт) а не стандартных 68б:

# tcpdump -s 500

Захват всех байт данных в пакете:

# tcpdump -s 0

Просмотр «тяжелых пакетов»:

# tcpdump -nnvvXSs 1514

Захват пакетов ICMP с ping и pong:

# tcpdump -nnvXSs 0 -c2 icmp

Вывод без многих вариантов:

# tcpdump -nS

Основные коммуникации (очень подробный режим), можно увидеть хороший объем трафика, с многословием:

# tcpdump -nnvvS

Глубокий взгляд на трафик, добавляет -X для полезной нагрузки:

# tcpdump -nnvvXS

Просмотр тяжелого пакета и увеличивает snaplength, захватывая весь пакет:

# tcpdump -nnvvXSs 1514

Вы можете также фильтровать на основе определенных частей пакета, а также объединить несколько условий в группы. Это полезно при поиске только SYNs или РСТ, например, и последний для еще более расширенный изоляцией трафика.

Показать мне все URGENT (URG) пакеты:

# tcpdump "tcp & 32!=0"

Показать мне всеACKNOWLEDGE (ACK) пакеты:

# tcpdump "tcp & 16!=0"

Показать мне все PUSH (PSH) пакеты:

# tcpdump "tcp & 8!=0"

Показать мне все RESET (RST) пакеты:

# tcpdump "tcp & 4!=0"

Показать мне все SYNCHRONIZE (SYN) пакеты:

# tcpdump "tcp & 2!=0"

Показать мне все FINISH (FIN) пакеты:

# tcpdump "tcp & 1!=0"

Показать мне все SYNCHRONIZE/ACKNOWLEDGE (SYNACK) пакеты:

# tcpdump "tcp=18"

Захват TCP Flags используя tcpflags:

# tcpdump "tcp & & tcp-syn != 0"

Пакеты с RST и SYN флагами (проверка):

# tcpdump "tcp = 6"

Траффик с ‘Evil Bit"(проверка):

# tcpdump "ip & 128 != 0"

На этом я завершу свою статью «установка и использование tcpdump», надеюсь все ясно и понятно.

Для UNIX-систем есть множество самых разнообразных снифферов и анализаторов трафика с удобным графическим интерфейсом и богатым набором функций. Но ни один из них не может сравниться в гибкости, универсальности и распространенности со старым как мир tcpdump. Эта утилита входит в состав многих дистрибутивов Linux и всех BSD-систем из коробки и сможет выручить тебя, когда другие средства будут недоступны.

Введение

Утилита tcpdump - это сниффер сетевых пакетов с интерфейсом командной строки, не имеющий ни графического, ни псевдографического интерфейса. Новичкам он может показаться неуклюжим и слишком старомодным, однако в умелых руках превращается в настоящий швейцарский нож для вскрытия любых сетевых пакетов и протоколов. Опытные сисадмины всегда рекомендуют начинающим использовать tcpdump вместо любых других утилит из-за наглядности и прямолинейности его отчетов.

Tcpdump появился на свет почти 25 лет назад в университете Беркли, до сих пор активно развивается и продолжает оставаться эталоном среди подобных инструментов для операционной системы UNIX. Разработанная специально для него библиотека захвата пакетов libpcap сегодня используется чуть ли не каждым сниффером для UNIX-систем и многими аналогичными программами для Windows.

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

Наедине с консолью

Попробуем разобраться, как работает tcpdump и с какой стороны следует к нему подходить. Открой терминал и запусти программу с правами пользователя root (как и любой сниффер, tcpdump должен иметь полный доступ к сетевым интерфейсам), указав имя сетевого интерфейса и ограничив количество выводимых пакетов десятью:

# tcpdump -i wlan0 -c 10 -n

Ключ -n отключает преобразование IP-адресов в DNS-имена. Теперь попытаемся отследить обмен только с конкретным хостом, например с домашним роутером:

# tcpdump -i wlan0 -c 10 -n host 192.168.0.1 and port 53

Давай посмотрим, что же нам вывел tcpdump, на примере двух строк, представленных на скриншоте «DNS-запрос глазами tcpdump». Можно легко понять, что это DNS-запрос (порт 53) с хоста 192.168.0.101 хосту 192.168.0.1 и последующий за ним ответ. Но что значат все остальные цифры и знаки?


Цифры 16:22:41.340105 - это время отправки пакета, включая миллионные доли секунды (так называемый frac). Две буквы IP, как нетрудно догадаться, идентифицируют используемый протокол сетевого уровня, далее следуют адрес: порт отправки и адрес: порт назначения пакета. Все, что идет после двоеточия, напрямую зависит от используемого протокола транспортного или прикладного уровня. С некоторыми протоколами tcpdump знаком и умеет расшифровывать их до понятного человеку вида, другие он оставляет как есть и просто приводит содержимое пакета. В данном случае tcpdump расшифровал DNS-сообщения и вернул строку 49244+ A? ya.ru. (23) , что означает: был послан запрос (A?) адреса, ассоциированного с именем ya.ru., общая длина пакета за вычетом TCP/IP-заголовков составила 23 байт. Первая цифра - это идентификатор запроса.

В следующей строке мы видим ответ, формат представления которого практически аналогичен запросу, с той лишь разницей, что теперь после идентификатора запроса идет информация о количестве найденных записей (8/2/3) и сами записи (A 213.180.204.3, A 77.88.21.3, A 87.250.250.3...).

В арсенале tcpdump есть поддержка многих протоколов, благодаря чему он может представить в читаемом виде информацию о протоколах TCP, UDP и ICMP, SMB/CIFS, NFS, AFS, AppleTalk. Но что, если tcpdump ничего не знает об используемом протоколе прикладного уровня или не может определить его? В обычной ситуации он просто выведет информацию о пакете. Она может выглядеть примерно так:

Flags [.], seq 3666073194:3666074622, ack 3281095139, win 2000, options , length 1428

Это TCP-пакет, формат представления информации о котором в tcpdump следующий (поля разделяются запятыми):

  • flags - установленные флаги. Обозначаются символами S (SYN), F (FIN), P (PUSH) и R (RST), точка означает отсутствие установленных флагов;
  • data-seqno - описывает данные, содержащиеся в пакете, в таком формате: first:last, где first и last - номер последовательности первого и последнего байта передаваемых данных, nbytes;
  • ack - следующий номер последовательности (ISN + 1);
  • window - размер окна;
  • options - здесь могут указываться дополнительные сведения, например (максимальный размер сегмента);
  • length - длина пакета.

Все эти данные могут быть очень полезны во время изучения или отладки протоколов и сетевых приложений, однако они ничего нам не говорят о его содержимом. Чтобы увидеть содержимое пакета в шестнадцатеричном формате, следует применить флаг -X:

# tcpdump -i wlan0 -c 10 -n -X host 192.168.0.1 and port 80

Эту функцию очень удобно использовать для анализа протоколов, в которых передача данных идет открытым текстом, например HTTP. Для бинарных протоколов и протоколов с шифрованием она, конечно же, будет бесполезна.
Кроме того, для получения дополнительных сведений о пакете можно использовать флаг -v. Тогда после IP в скобках появится подробная информация об IP-пакете:

(tos 0x0, ttl 64, id 8339, offset 0, flags , proto UDP (17), length 51)

В общем-то, здесь все довольно прозаично. Вначале идет тип обслуживания (TOS), далее время жизни пакета (TTL), идентификатор пакета, смещение от начала первого пакета в цепочке, флаги, используемый прокол транспортного уровня (TCP, UDP, ICMP) и длина.


Продвинутые возможности

Мы уже рассмотрели большинство самых важных возможностей tcpdump, но его функциональность намного шире. Например, мы использовали операторы host и port для указания нужных нам адреса и порта для фильтрации вывода, но что, если нам надо увидеть только пакеты, идущие к указанному адресу, но не исходящие с него? Для этого можно использовать оператор src:

# tcpdump -i wlan0 -c 10 -n src 192.168.0.1

Есть и его обратный вариант dst, предназначенный для указания адреса назначения. Как было показано выше, все операторы можно комбинировать с помощью оператора and (мониторинг сетевого трафика, исключая SSH-сессии и DNS-запросы):

# tcpdump -i wlan0 port not 22 and port not 53

Также можно использовать or (или) и except (не). Кроме того, tcpdump понимает диапазоны портов:

# tcpdump -i wlan0 -c 10 -n portrange 21-23

Умеет отфильтровывать пакеты по их размеру:

# tcpdump -i wlan0 -c 10 -n > 32 and <= 128

И понимает маски подсетей:

# tcpdump -i wlan0 c 10 -n src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16

Одна из самых интересных возможностей tcpdump - это умение фильтровать пакеты по содержанию конкретных битов или байтов в заголовках протоколов. Для этого используется такой формат: proto, где proto - протокол, expr - смещение в байтах от начала заголовка пакета, а size - необязательное поле, указывающее на длину рассматриваемых данных (по умолчанию 1 байт). Например, чтобы отфильтровать только пакеты с установленным флагом SYN (инициация TCP-рукопожатия), следует использовать такую запись:

# tcpdump "tcp==2"

Как это работает? Очень просто. 13 байт TCP-заголовка содержит флаги, ровно восемь штук, по биту на каждый. Под флаг SYN отведен второй бит. Приведенная запись просто проверяет факт установки этого бита. Кстати, более читаемый вид этой записи будет выглядеть так:

# tcpdump "tcp & tcp-syn != 0"

Практическое использование

Утилиту tcpdump принято использовать для двух целей: для отладки сети, сетевых приложений и новых протоколов и для обучения основам TCP/IP. Мы пойдем другим путем и воспользуемся возможностями tcpdump для выявления фактов сканирования хоста и проведения сетевых атак.

На рис. 1 показано, как выглядит классический TCP-скан портов, выполненный утилитой Nmap, в логах tcpdump. Хорошо видно, как Nmap с адреса 192.168.0.100 пытается установить TCP-соединение с разными портами, посылая SYN-пакет (S в поле флагов). Сначала идет проба порта 8888, в ответ приходит RST-пакет, а это значит, что порт не прослушивается ни одним сервисом, далее проба порта 587 с тем же результатом. Наконец, Nmap посылает SYN-пакет на 22-й порт (SSH) и получает ответ в виде пакета SYN-ACK:

192.168.0.100.43337 > 192.168.0.111.22: Flags [S], seq 2610024277, ... 192.168.0.111.22 > 192.168.0.100.43337: Flags , seq 3496707239, ack 2610024278, ... 192.168.0.100.43337 > 192.168.0.111.22: Flags [.], ack 1, ...

Порт открыт, и теперь Nmap может успешно закрыть соединение с помощью отправки RST-пакета и перейти к следующим портам. Однако он поступает умнее: посылает подтверждение приема ACK-пакета и сразу переходит к следующим портам. Такое поведение позволяет обойти некоторые системы обнаружения вторжений, но человека, вооруженного сниффером, так просто не проведешь.

Обрати внимание также на номера перебираемых портов, они не генерируются рандомно, а подбираются с учетом наибольшей распространенности. Это значит, что производится быстрое сканирование, а если точнее, Nmap, скорее всего, запущен вообще без каких-либо флагов.



Теперь рассмотрим другой метод обнаружения открытых портов - SYN-сканирование (nmap -sS). Такой вид скана принято называть скрытым, потому что во время его никогда не устанавливается полное TCP-соединение, а значит, информация о факте соединения не попадает в логи. Вывод tcpdump для такого вида скана представлен на рис. 2. Он очень похож на лог обычного TCP-сканирования, однако реакция сканера на открытые порты теперь другая:

192.168.0.100.48585 > 192.168.0.111.22: Flags [S], seq 1679394613, ... 192.168.0.111.22 > 192.168.0.100.48585: Flags , seq 625029896, ack 1679394614, ... 192.168.0.100.48585 > 192.168.0.111.22: Flags [R], seq 1679394614, ...

Видно, что после получения одобрительного пакета SYN-ACK сканер не завершает установку соединения, а сразу обрывает его, уходя от попадания в логи. На рис. 3 можно видеть результат UDP-сканирования. Здесь все очень просто, Nmap перебирает порты с возможными UDP-сервисами, посылая на каждый из них пакет нулевой длины. Если порт закрыт, ОС посылает в ответ сообщение ICMP unreachable:

16:41:48.798310 IP 192.168.0.100.61020 > 192.168.0.111.18869: UDP, length 0 16:41:48.798346 IP 192.168.0.111 > 192.168.0.100: ICMP 192.168.0.100 udp port 18869 unreachable, length 36

В противном случае порт считается открытым. Еще один метод сканирования: null-сканирование с помощью отправки пакетов, не содержащих ни одного установленного флага (nmap -sN). Реакция на такие пакеты может быть разной в зависимости от используемой ОС, но, как видно по следующему листингу, Linux отвечает на них посылкой RST-пакетов:

192.168.0.100.39132 > 192.168.0.111.256: Flags , win 3072, length 0 192.168.0.111.256 > 192.168.0.100.39132: Flags , ...

Также атакующий может применять Xmas-сканирование, при котором пакеты имеют установленные флаги FIN, URG и PUSH (пакет как бы светится флагами, как новогодняя елка):

192.168.0.100.35331 > 192.168.0.111.5544: Flags , seq 3998959601, win 4096, urg 0, length 0 192.168.0.111.5544 > 192.168.0.100.35331: Flags , seq 0, ack 3998959602

Как видно, реакция на такие пакеты идентичная. ACK-сканирование (-sA) будет выглядеть в логах tcpdump как отправка множества пакетов с установленным флагом ACK и ответ на них в виде посылки пакетов RST. Однако, если в системе установлен брандмауэр, ответных сообщений приходить не будет, и Nmap сможет понять, фильтруется ли порт.

С помощью tcpdump можно также отследить и различные виды флуда. Например, классический ICMP-флуд в логах будет выглядеть так:

16:43:06.008305 IP 192.168.0.100 > 192.168.0.111: ICMP type-#68, length 1032 16:43:06.008383 IP 192.168.0.100 > 192.168.0.111: ICMP type-#34, length 1032 16:43:06.008714 IP 192.168.0.100 > 192.168.0.111: ICMP type-#183, length 1032 16:43:06.008831 IP 192.168.0.100 > 192.168.0.111: ICMP type-#192, length 1032

Особую важность здесь имеет поле, содержащее время приема пакета. Ни одно нормальное приложение не будет слать множество ICMP-сообщений за промежуток времени, равный одной тысячной секунды. Другие виды флуда (например, SYN) определяются точно таким же образом.

Взаимодействие с другими программами

Одно из самых важных достоинств tcpdump заключается в том, что формат его отчетов за время существования программы фактически стал стандартом для всех снифферов и сегодня его понимают все более или менее серьезные инструменты анализа трафика. Например, tcpdump можно использовать для генерации дампа на удаленной машине, а затем отправить его на локальную и провести анализ с помощью wireshark:

$ ssh [email protected] tcpdump -w - "port !22" | wireshark -k -i -

Здесь мы использовали опцию -w - для записи дампа в стандартный вывод и перенаправили его wireshark, работающему на локальной машине. Таким же образом можно проанализировать трафик с помощью snort:

$ ssh [email protected] "tcpdump -nn -i eth1 -w -" | snort -c /etc/snort/snort.conf -r -

Перенаправив вывод программы на вход grep, можно найти различные проблемы в работе сети, например выявить пакеты с неправильной контрольной суммой, вывести информацию о которой можно с помощью флага -vv:

# tcpdump -nnvv -r dump.cap tcp | grep -v "tcp sum ok" | wc –l

Админские штучки

Возможность фильтрации пакетов по данным, содержащимся в заголовке, которую мы рассмотрели в начале первого раздела, очень удобно использовать для отладки различных протоколов и поиска сетевых проблем. Например, мы можем применить ее для отлова сетевых пакетов, передаваемых по протоколу Cisco Discovery Protocol, по которому маршрутизаторы Cisco обмениваются информацией о топологии и состоянии сети:

# tcpdump -nn -v -i eth0 -s 1500 -c 1 "ether == 0?2000"

Таким же образом можно отловить все пакеты, передаваемые по протоколу DHCP (DISCOVER, REQUEST, INFORM), чтобы выявить проблемы подключения клиентов:

# tcpdump -i eth0 -vvv -s 1500 "((port 67 or port 68) and (udp = 0x1))"

Или поймать пакеты, передаваемые в рамках POP3-аутентификации:

# tcpdump -i eth0 "tcp port pop3 and ip = 85 and ip = 83" -s 1500 -n

Сетевой grep

Сниффер tcpdump хорош своей универсальностью и разнообразием возможностей, однако для поиска конкретных данных внутри передаваемых пакетов его использовать не так просто и удобно. С этой задачей гораздо лучше справляется ngrep, предназначенный для отображения проходящих сетевых пакетов, удовлетворяющих заданной маске.

Например, чтобы найти параметры, передаваемые методами GET и POST в рамках HTTP-сессии, можно использовать следующую команду:

# ngrep -l -q -d eth0 "^GET |^POST " tcp and port 80

Выявляем бездельников:

# ngrep -i "game*|p0rn|adult" -W byline -d eth0 > slackers.txt

Анализируем SMTP-трафик на всех сетевых интерфейсах:

# ngrep -i "rcpt to|mail from" tcp port smtp

Опции tcpdump

Таблица наиболее интересных и полезных флагов tcpdump.

  • -i [интерфейс] - прослушиваемый сетевой интерфейс, для всех следует указать any.
  • -n - не преобразовывать IP-адреса в DNS-имена.
  • -nn - не преобразовывать IP-адреса и номера портов.
  • -X - показывать содержимое пакета в текстовом и шестнадцатеричном форматах.
  • -XX - то же самое плюс содержимое Ethernet-фрейма.
  • -v, -vv, -vvv - увеличить количество показываемой информации и пакетов (больше, еще больше, все).
  • -c [n] - показывать только первые n пакетов.
  • -s [n] - количество байтов, отображаемых для каждого пакета (можно уменьшить для удобства чтения или увеличить для получения большей информации).
  • -S - показывать абсолютные номера TCP-последовательности (TCP sequence numbers).
  • -e - показывать заголовки Ethernet-фреймов.
  • -q - показывать меньше информации (для удобства чтения).
  • -E - расшифровать IPsec-трафик с помощью указанного ключа.
  • -w - сохранить дамп программы в файл, аргумент - используется для указания stdout.

Выводы

В руках знающего пользователя tcpdump превращается в мощнейший инструмент не только отладки, но и исследования аномалий. Благодаря богатому набору операторов и флагов с его помощью можно вытащить из сетевого эфира и исследовать то, что действительно нужно.

tcpdump инструкция на русском и примеры.

-A задает вывод каждого пакета (без заголовков канального уровня) в формате ASCII. Этот режим удобен для сбора трафика HTTP.

-c <число пакетов> задает завершение работы программы после захвата заданного числа пакетов.

-C <размер файла> задает необходимость проверки размера файла захвата перед записью в него каждого нового пакета. Если размер файла превышает значение параметра file_size, этот файл закрывается
и создается новый файл для записи в него пакетов. Для файлов захвата используется имя, заданное параметром -w и, начиная со второго файла к имени добавляется в качестве
суффикса номер файла. Переменная file_size задает размер файла в миллионах байтов (не в мегабайтах = 1 048 576 байт).

-d задает вывод дампа скомпилированного кода соответствия пакетов (packet-matching code) в понятном человеку формате и завершение работы программы.

-dd выводит дамп кода соответствия в виде фрагмента C-программы.

-ddd выводит дамп кода соответствия в виде строки десятичных значений, перед которой следует строка со значением счетчика.

-D выводит список сетевых интерфейсов системы, с которых tcpdump может собирать пакеты. Для каждого сетевого интерфейса указывается имя и номер, за которыми может следовать
текстовое описание интерфейса. Имя и номер интерфейса могут использоваться с флагом -i для задания сбора пакетов с одного интерфейса.

Эта опция может быть весьма полезна для систем, не дающих информации об имеющихся сетевых интерфейсах3.

Флаг -D не поддерживается, если программа tcpdump была скомпилирована со старой версией libpcap, которая не поддерживает функцию pcap_findalldevs().

-e выводит заголовок канального уровня в каждой строке дампа.

-E задает использование алгоритма и секрета spi@ipaddr для расшифровки пакетов IPsec ESP, направленных по адресу ipaddr и содержащих and в поле Security Parameter Index значение
spi. Комбинация spi и адреса может быть повторена с использованием в качестве разделителя запятой или новой строки. Отметим, что установка секрета для пакетов IPv4 ESP в
настоящее время поддерживается.

В качестве алгоритмов могут использоваться des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc или none. По умолчанию применяется алгоритм des-cbc. Возможность дешифровки
пакетов обеспечивается только в тех случаях, когда при компиляции tcpdump были включены опции поддержки криптографии.

Параметр secret содержит ASCII-текст секретного ключа ESP. Если секрет начинается с символов 0x, будет считываться шестнадцатеричное значение. Опция предполагает использование
ESP в соответствии с RFC 2406, а не RFC 1827. Эта опция поддерживается только для отладки и использовать ее с реальными секретными ключами не следует, поскольку введенный в
командной строке ключ IPsec доступен другим пользователям системы4.

Кроме явного указания параметров в командной строке их можно задать в файле опций, который tcpdump будет читать при получении первого пакета ESP.

-f задает вывод чужих адресов IPv4 в числовом формате. Использование этой опции позволяет избавиться от проблем, возникающих на серверах Sun NIS при попытках трансляции
нелокальных адресов. Проверка чужеродности адреса IPv4 осуществляется с использованием адреса и маски принявшего пакет интерфейса. Если адрес и маска интерфейса недоступны
(например, при использовании unnumbered-интерфейсов или при захвате пакетов со всех адресов в Linux с использованием фиктивного интерфейса any), эта опция будет работать
некорректно.

-F <файл> задает использование фильтров, содержащихся в указанном файле. В этом случае заданные в командной строке фильтры игнорируются.

-i <интерфейс> задает сбор пакетов с указанного интерфейса. Если интерфейс не задан, tcpdump ищет в системе список доступных интерфейсов и выбирает в нем активное устройство с минимальным
номером (исключая loopback).

В системах Linux, начиная с ядра 2.2 поддерживается фиктивный интерфейс с именем any, обеспечивающий сбор пакетов со всех активных интерфейсов системы. Отметим, что сбор
пакетов с устройства any осуществляется в обычном (не promiscuous) режиме.

Если в системе поддерживается флаг -D, можно в качестве аргумента задавать номер интерфейса, выводимый при использовании этого флага.

-l задает буферизацию строк stdout. Эта опция полезна в тех случаях, когда вы хотите просматривать данные во время сбора пакетов. Например, команды

tcpdump -l | tee dat

tcpdump -l > dat & tail -f dat

обеспечивают запись пакетов в файл dat и одновременный вывод на консоль.

-L задает вывод списка известных типов канального уровня и завершение работы программы.

-m <файл> загружает модуль определений SMI MIB из указанного файла. Эта опция может использоваться неоднократно для загрузки нескольких модулей MIB.

-n отключает преобразование адресов и номеров портов в символьные имена.

-N задает использование только имен хостов, а не полных доменных имен. Например, вместо lhotze.bilim-systems.net при использовании этой опции моя рабочая станция будет
обозначаться как lhotze.

-O отключает оптимизатор кода проверки соответствия пакетов условиям фильтрации. Используйте эту опцию, если вам покажется, что оптимизатор работает с ошибками.

-p указывает программе, что интерфейс не нужно переводить в режим захвата5. Опцию -p нельзя использовать вместе с фильтром ether host {local-hw-addr} or ether broadcast.

-q задает вывод минимального объема информации.

-R при установке этого флага предполагается, что пакеты ESP/AH используют старый вариант спецификации6 и tcpdump не будет выводить поля replay prevention (защита от
воспроизведения). Поскольку спецификация ESP/AH не включает поля с номером версии, tcpdump не может определить версию протокола ESP/AH по заголовкам пакетов.

-r <файл> задает чтение данных из файла, созданного ранее с использованием команды tcpdump -w или с помощью другой программы, поддерживающей формат tcpdump (например, Ethereal). Если в
качестве имени файла задан символ -, используется поток данных от стандартного устройства ввода (stdin).

-S задает вывод абсолютных порядковых номеров TCP взамен относительных.

-s задает захват из каждого пакета snaplen байтов вместо отбираемых по умолчанию 68 байтов7. Значение 68 подходит для протоколов IP, ICMP, TCP и UDP но может приводить к потере
протокольной информации для некоторых пакетов DNS и NFS. Потеря части пакетов по причине малого размера кадра захвата (snapshot) указывается в выходных данных полями вида
[|proto]’, где proto – имя протокольного уровня, на котором произошло отсечение части пакета8. Отметим, что увеличение кадра захвата приведет к дополнительным временным
затратам на обработку пакетов и уменьшению числа буферизуемых пакетов, что может привести к потере части пакетов. Используйте минимальное значение snaplen, которое позволит
обойтись без потери информации об интересующем вас протоколе. Установка snaplen = 0 приведет к захвату полных пакетов.

-T <тип> задает интерпретацию пакетов, выбранных с помощью фильтра, как пакетов указанного параметром типа. В настоящее время поддерживаются типы aodv9, cnfp10, rpc11, rtp12, rtcp13,
snmp14, tftp15, vat16 и wb17.

-t отключает вывод временных меток в каждой строке дампа.

-tt задает вывод в каждой строке дампа неформатированных временных меток.

-ttt задает вывод временных интервалов (в микросекундах) между захватом предыдущего и данного пакетов в каждой строке дампа.

-tttt задает вывод временных меток в принятом по умолчанию формате для каждой строки дампа.

-u задает вывод манипуляторов (handle) NFS без декодирования.

-U задает режим “буферизации на уровне пакетов” для файлов, сохраняемых с помощью опции -w. В этом режиме каждый пакет записывается в выходной файл как только он будет захвачен
(не дожидаясь заполнения выходного буфера). Флаг -U не будет поддерживаться, если программа tcpdump была скомпилирована со старой опцией libpcap, не поддерживающей функцию
pcap_dump_flush().

-v задает вывод дополнительной информации при захвате файлов. К такой информации может относиться значение TTL (время жизни), идентификация, общий размер, опции IP и т. п. При
использовании этого флага также выполняется дополнительная проверка целостности пакетов с помощью контрольных сумм (например, для протоколов IP и ICMP).

-vv задает дополнительное увеличение объема выводимой информации (например, полное декодирование пакетов SMB, вывод дополнительных полей откликов NFS и т. п.).

-vvv задает максимальный объем выводимой информации (например, полностью выводятся опции telnet SB … SE). При использовании вместе с ключом -X опции Telnet выводятся также в
шестнадцатеричном представлении.

-w <файл> задает запись необработанных (raw) пакетов. Собранные в файл пакеты можно впоследствии просматривать с использованием флага -r или передавать для анализа другим программам
(например, Ethereal). Если в качестве имени файла указан символ -, запись осуществляется на стандартное устройство вывода (stdout).

-x задает вывод шестнадцатеричного дампа (без заголовка канального уровня) для каждого захваченного пакета. Объем выводимой информации определяется меньшим из двух значений —
размер пакета и значение параметра snaplen. Отметим, что при захвате полных кадров канального уровня дамп может включать также байты заполнения, если пакет сетевого уровня
имеет малый размер.

-xx задает вывод шестнадцатеричного дампа для каждого пакета с включением заголовков канального уровня.

-X задает вывод дампа в шестнадцатеричном и ASCII-формате без заголовков канального уровня. Эта опция может быть очень удобна при анализе новых протоколов.

-XX задает вывод дампа в шестнадцатеричном и ASCII-формате с включением заголовков канального уровня.

-y <тип> задает тип канального уровня, используемого при захвате пакетов. Поддерживаемые значения можно посмотреть с помощью флага -L.

Примеры.

  • Ловим весь исходящий трафик

tcpdump -i re0 -n -nn -ttt dst host 192.168.1.2

  • Ловим весь исходящий трафик кроме нашей ssh сессии ибо очень большой поток данных получается.

tcpdump -i re0 -n -nn -ttt ‘dst host 192.168.1.110 and not (src host 192.168.1.2 and dst port 22)’

  • Просмотр общения dns

tcpdump -i re0 -n -nn -ttt ‘host 192.168.1.110 and port 53’

  • Просмотр icmp пакетов

tcpdump -i re0 -n -nn -ttt ‘ip proto \icmp’

  • Трафик переходящий из сети 10.7.20 с назначением на сети 10.7.0. или 10.7.24.:

tcpdump -nvX src net 10.7.20.0.0/16 and dst net 10.7.0.0/8 or 10.7.24.0/16

  • Трафик идущий с сети 10.7.0.0 на порты назначения 22 или 4589:

tcpdump ’src 10.7.0.0 and (dst port 22 or 4589)’

  • Посмотреть трафик на интерфейсе:
  • посмотреть трафик одного хоста:

tcpdump host 192.168.1.1

  • Посмотреть трафик на порте:

tcpdump src port 80

  • Посмотреть IP трафик на хост:

tcpdump ip host 192.168.1.2

  • Посмотреть ARP трафик на хост:

tcpdump arp host 192.168.1.2

  • Смотрим RARP трафик на хост:

tcpdump rarp host 192.168.1.2

  • Смотрим трафик, кроме хоста pav253

tcpdump not host pav253

  • Смотрим трафик на pav253 и pav210

tcpdump host pav253 or host pav210

  • Смотрим содержимое пакетов на интерфейсе re0 на хост сайт

tcpdump -X -i re0 host сайт

  • icq трафик

tcpdump -X -i re0 port aol

  • Смотрим содержимое пакетов на интерфейсе tun0 на хост ya.ru, при этом прочитать из каждого пакета по 1500 байт и не преобразовывать IP в имя хоста

tcpdump -X -s 1500 -n -i re0 host сайт

  • Top активных взимодействий

tcpdump -tn -c 10000 -i re0 tcp or udp | awk -F «.» ‘{print $1″.»$2″.»$3″.»$4}’ | \ sort | uniq -c | sort -nr | awk ‘$1 > 100’

  • Смотрим все TCP пакеты с флагом SYN (начало сессии).

tcpdump -i eth0 -nn tcp == 2 and src net 192.168.1.0/24

  • Просмотр syn и fin пакетов из вне

tcpdump ‘tcp & (tcp-syn|tcp-fin) != 0 and not src and dst net 192.168.1.0’

  • Просмотр все ipv4 http пакеты с порта 80, кроме syn / fin / ack данных

tcpdump ‘tcp port 80 and (((ip — ((ip&0xf)<>2)) != 0)’

  • Просмотр только syn пакеты