Анализатор пакетов: 15 примеров команды tcpdump

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

Анализ

  • tcpdump -n -i eth0 -l | tee
  • ssh [email protected] tcpdump -U -s0 -w — 'not port 22' | wireshark -k -i —

Фильтры

Фильтр Определение
host Служит для указания имени хоста
net Указывает IP подсети и сети
ip Служит для указания адреса протокола
src Выводит пакеты, которые были отправлены с указанного адреса
dst Выводит пакеты, которые были получены указанным адресом
arp, udp, tcp Фильтрация по одному из протоколов
port, portrange Отображает информацию, относящуюся к определенному порту, диапазону портов
and, or Служит для объединения нескольких фильтров в команде
less, greater Вывод пакетов меньше или больше указанного размера

Ключи

Введение

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

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

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

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

Tcpdump — это универсальный инструмент. Таким образом, существует множество способов использовать его для мониторинга трафика в вашей системе Linux или Unix. Тем не менее, есть общие варианты, с которых вы можете начать знакомство с инструментом.

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

sudo tcpdump

Команда будет выполняться бесконечно, поэтому вам нужно будет остановить ее самостоятельно. Когда вы закончите контролировать вывод, нажмите Ctrl + C для выхода.

Теперь вы можете попробовать ограничить вывод с помощью флага -c . Число, которое вы указываете команде, будет таким же, как и количество перехваченных пакетов.

sudo tcpdump -c 25

Возможно, вы заметили другую проблему на этом пути. Что если tcpdump использует неправильный сетевой интерфейс? Вы можете указать тот, на котором вы хотите захватывать трафик, с флагом -i . Итак, если вы хотите захватить двадцать пять пакетов на интерфейсе eth0, вы должны использовать:

sudo tcpdump -c 25 -i eth0

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

sudo tcpdump -c 25 -i eth0 -v

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

sudo tcpdump -c 25 -i eth0 -w

Затем прочитайте это с:

sudo tcpdump -r

Наконец, если вы хотите подать наш журнал в режиме реального времени, вы можете направить вывод в команду ‘ grep ‘. Это очень полезно, если вы ищете соединения с определенным хостом или упоминание определенного ключевого слова или ошибки.

sudo tcpdump -c 25 -i eth0 | grep -i имя хоста

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

Фильтры tcpdump

Фильтры разделяются на следующие классификации

host — адрес узла сети

port – порт на котором нужно ловить пакеты

portrange – диапазон портов

net – сеть

Tcpdump net

захват всего трафика в котором в качестве источника или получателя стоят ip адреса из сети

Tcpdump port 80

Будет захватываться весь трафик на 80-м порту.

Направление трафика по отношению к объекту мониторинга

src – отправитель

dst — получатель

например команда

Src host

Захват трафика у которого отправитель ip адрес

Протокол

ether – базовая сетевая технология Ethernet, как правило указывает на то что в фильтре используется аппаратный MAC адрес

ip – протокол IPv4

ip6 – протокол IPv6

arp – протокол ARP

tcp – протокол TCP

udp – протокол UDP

Если протокол не указан, то будет захвачен трафик по все протоколам

Например команда

Udp port 5060

захват трафика по протоколу udp порт 5060

Составные фильтры

Для того что бы более гибко фильтровать трафик можно использовать логические операции

«И» – and (&&)

«ИЛИ» – or (||)

«НЕ» – not (!) – инверсия значения

При этом приоритет этих операций следующий:

наивысшим приоритетом обладает операция инверсии

потом логическое «И»

наименьшим приоритетом обладает операция «ИЛИ».

Приоритет операций можно менять с помощью круглых скобок.

(net or host ) and tcp port 80

захват трафика протокола TCP и использующего порт 80 принадлежащего сети или хосту , как любому хосту по отдельности так и вместе

(net || host ) && not tcp port 80

захват любого трафика кроме трафика протокола TCP и использующего порт 80 принадлежащего сети или хосту как любому хосту по отдельности так и вместе

Опции 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.
Читайте также:  Способы сброса настроек BIOS до заводских