Tcpdump

tcpdump — консольный универсальный анализатор пакетов, представляющий собой систему для перехвата, изучения и фильтрации сетевого трафика компьютера. Позволяет пользователю перехватывать и наблюдать передаваемые и получаемые по сети TCP/IP и другие пакеты данных. Распространяется с открытым исходным кодом под лицензией BSD и является бесплатным программным обеспечением.

tcpdump работает на Unix-подобных операционных системах, включая Linux, Solaris, BSD, Mac OS X, HP-UX и AIX. Для перехвата пакетов tcpdump использует библиотеку libpcap. Версия tcpdump для Windows носит название WinDump и использует WinPcap, порт библиотеки libpcap для Windows.

Общие сведения
tcpdump
Тип программное обеспечение для компьютерной безопасности
Разработчик The Tcpdump team
Написана на Си[1]
Операционные системы Unix, *NIX-системы
Последняя версия 4.99.5 (30 августа 2024)
Репозиторий github.com/the-tcpdump-g…
Лицензия BSD
Сайт tcpdump.org

История

Программа была впервые написана в 1987 году Ваном Якобсоном, Крейгом Лересом и Стивеном МакКэнном в Network Research Group Lawrence Berkeley Laboratory. К концу 1990-х было распространено множество версий tcpdump и многочисленные патчи под разные операционные системы. В 1999 году Майкл Ричардсон и Билл Феннер создали сайт tcpdump.org.

Общие возможности

Tcpdump используется для анализа сетевого поведения, производительности и приложений, создающих сетевой трафик. Программа может применяться для оценки корректности маршрутизации и для изоляции сетевых проблем. С помощью tcpdump возможен и перехват коммуникаций других пользователей, например просмотр незашифрованных данных (логинов, паролей, URL, содержимого посещённых сайтов) через трафик Telnet, HTTP и других открытых протоколов на устройствах с соответствующими привилегиями. Для ограничения количества отображаемых пакетов может использоваться BPF-фильтр, что особенно полезно в сетях с интенсивным трафиком.

Необходимые привилегии

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

Основные параметры

При анализе сетевого поведения, производительности и приложений tcpdump может использовать ряд параметров. Все опции управления задаются ключами командной строки. При запуске без параметров программа слушает первый доступный сетевой интерфейс — это возможно только при запуске от имени root. Большинство параметров tcpdump не требуется заучивать наизусть.[2]

Для приёма пакетов, адресованных не данному компьютеру, требуется режим promiscuous (перехват всех пакетов). Обычно анализаторы сети сами переводят интерфейс в этот режим и обратно.

ifconfig: Показывает параметры Ethernet-карты (сетевого интерфейса) и её текущий режим, позволяет управлять настройками.

promisc: Позволяет принимать пакеты, не предназначенные данному IP-адресу.

Если явно не указать сетевой интерфейс, будет прослушиваться интерфейс с наименьшим номером (например, eth0 из eth0, eth1, eth2).

→ С помощью параметра -i указывается желаемый интерфейс

# tcpdump -i eth2    (слушает 3-ю Ethernet-карту)

→ Список всех доступных к прослушиванию интерфейсов выводится через -D

# tcpdump -D

→ Чтобы не разрешать DNS-имена в перехваченных пакетах, используется параметр -n

# tcpdump -n
  • Недостаток: разрешение имён требует времени и на загруженных сетях может замедлять вывод.

→ Чтобы не разрешать также протоколы и порты, используется -nn

# tcpdump -nn
  • Например, вместо "telnet" сразу отображается порт 23 без попытки разрешения.

→ Для упрощённого вывода без метки времени — параметр -t

# tcpdump -t

→ Чтобы не выводить перехваченные пакеты на экран, их можно записать в файл формата cap:

# tcpdump -w имя_файла
  • Файл, записанный с помощью -w, можно затем прочитать через -r. При этом фильтры можно задавать как при записи, так и при чтении — эти фильтры могут различаться.

→ Чтение файла производится так:

# tcpdump -r имя_файла
  • Пример: при сохранении или чтении возможна фильтрация трафика, например запись только определённых пакетов или без меток времени.

→ Для задания числа пакетов – опция -c

# tcpdump -i eth0 -c 5 TCP
  • Перехватывает 5 TCP-пакетов и завершает работу.

→ Для указания максимального размера пакета (байт) — параметр -s

# tcpdump -s 1500

→ Для детализированного логирования — опция -v

# tcpdump -i eth0 -n -c 5 -v
  • Эта команда покажет значения TTL и ID.

→ Для отключения promiscuous-режима — опция -p

# tcpdump -p -i eth0
  • Преимущество: будут обрабатываться только пакеты, назначенные данному интерфейсу (broadcast или адресные).
  • Обычно используется при локальном анализе трафика собственной машины.

→ Для захвата Ethernet-заголовка — опция -e

# tcpdump -e
  • Показывает MAC-адреса.
# tcpdump greater 42 > файл.txt    — Записывает пакеты размером больше 42 байт в файл.
# tcpdump -c 42 greater 42 -w example.dump    — Записывает первые 42 пакета размером больше 42 байт.
# tcpdump -r example.dump

→ Для фильтрации по назначенному хосту — параметр dst host

# tcpdump -i eth0 dst host 10.0.0.1

→ Для фильтрации по источнику — src host

# tcpdump -i eth0 src host 10.1.0.59
  • Можно комбинировать dst и src в одной команде.
# tcpdump -i eth0 src host 10.1.0.59 and dst host 10.0.0.1

→ Для фильтрации по порту — port, src port, dst port

# tcpdump port 23
  • Пакеты с исходным или конечным портом 23.
# tcpdump src port 23
  • Пакеты с исходным портом 23.

-X: Выводит содержимое пакета в hex и ASCII.

-XX: То же, что и -X, плюс отображение Ethernet-заголовка.

-nS: Анализ пакетов с минимальным набором параметров.

-nnvvXS: Детальный анализ трафика.

-E: Для анализа IPSEC-трафика, зашифрованного ключом.

Примечания

Ссылки