Как использовать tcpdump для захвата пакетов
Перехват пакетов — очень полезный способ анализа внутренней работы сети. Для этой цели разработано множество различных инструментов. Один из них — tcpdump. Здесь мы покажем вам, как наилучшим образом использовать этот замечательный инструмент как для сетевых инженеров, так и для тестеров на проникновение.
Содержание
- Что такое tcpdump?
- Монтаж
- Основы
- Указание сетевого интерфейса
- Указание порта/диапазона портов
- Указание хоста или подсети
- Указание многословности
- Сохранение снимка в файл
- Часто задаваемые вопросы
Также читайте: Tor против VPN: один лучше другого?
Что такое tcpdump?
tcpdump — это инструмент для анализа сетевых пакетов, который был разработан и выпущен в 1988 году группой ученых-компьютерщиков, работающих в лаборатории Лоуренса Беркли и ее группой сетевых исследований. Он используется для отображения содержимого пакетов, которые отправляет и получает компьютер. Утилита поставляется с множеством опций, позволяющих сделать захват пакетов более конкретным и целенаправленным. Некоторые из этих опций включают различные сетевые протоколы и сетевые интерфейсы.
Монтаж
Многие дистрибутивы Linux поставляются с утилитой, установленной прямо из коробки. Однако, если выбранный вами дистрибутив этого не поддерживает, установка, к счастью, будет быстрой и простой.
Например, если вы используете Ubuntu или Debian, его можно установить с помощью apt
:
sudo apt install tcpdump
В CentOS то же самое делается с помощью yum
:
sudo yum install tcpdump
А в Arch Linux с помощью pacman
:
sudo pacman -S tcpdump
Также читайте: Что такое луковая маршрутизация и как вернуть конфиденциальность
Основы
Установив tcpdump, вы можете просмотреть руководство, используя флаг -h
:
tcpdump -h
Здесь показан список флагов, которые вы можете использовать при использовании этого инструмента.
Если вы хотите просмотреть более полное и подробное руководство, вы можете просмотреть справочную страницу (страницу руководства) с помощью команды man
:
man tcpdump
Вы можете запустить базовый захват пакетов, набрав:
tcpdump
Используя команду отдельно и не указывая сетевой интерфейс, инструмент выберет один из доступных интерфейсов в вашей системе.
Если вы не хотите, чтобы tcpdump разрешал имена хостов, а вместо этого выводил только IP-адреса, вы можете использовать флаг -n
:
tcpdump -n
Если вы хотите указать количество пакетов, которые хотите перехватить, используйте флаг -c
:
tcpdump -c [number of packets]
Указание сетевого интерфейса
Вы можете указать свой выбор сетевого интерфейса, используя флаг -i
:
tcpdump -i [interface]
Два наиболее распространенных имени сетевых интерфейсов в большинстве систем — eth0 и wlan0:
tcpdump -i eth0 tcpdump -i wlan0
Если вы хотите собирать данные на всех интерфейсах, вы можете использовать опцию any
:
tcpdump -i any
Также читайте: Ethernet-коммутатор, концентратор и сплиттер: в чем разница?
Указание порта/диапазона портов
Если вы хотите собирать только данные, использующие определенный номер порта, используйте команду:
tcpdump -i [interface] port [port number]
Допустим, вы хотите перехватывать трафик на интерфейсе eth0
и на порту 443 (HTTPS). Введите следующее:
tcpdump -i eth0 port 443
Кроме того, tcpdump позволяет указать диапазон портов:
tcpdump -i [interface] portrange [port range]
Указание хоста или подсети
Бывают случаи, когда вы захотите ограничить перехваченные пакеты только теми, которые отправлены/получены с определенного хоста или подсети. К счастью, tcpdump позволяет вам это сделать.
Вы можете указать хост, используя следующий формат:
tcpdump -i [interface] host [host]
В качестве примера захватите трафик на интерфейсе eth0 и укажите хост как 127.0.0.1 (ваш собственный IP-адрес обратной связи):
tcpdump -i eth0 host 127.0.0.1
Если вы хотите указать сетевую подсеть, используя нотацию CIDR, вы можете использовать следующий формат:
tcpdump -i [interface] net [subnet]
Например:
tcpdump -i eth0 net 10.0.0.0/8
Вы также можете напрямую указать исходный хост:
tcpdump -i [interface] src [host]
И хост назначения:
tcpdump -i [interface] dst [host]
Также читайте: Как запустить Nmap без root или Sudo
Указание многословности
tcpdump позволяет указать степень детализации захвата пакетов. Это очень полезно, если вы не хотите, чтобы вас перегружал объем информации во время захвата.
Существует три дополнительных параметра подробностей: флаги -v
, -vv
и -vvv
:
tcpdump -i [interface] -v tcpdump -i [interface] -vv tcpdump -i [interface] -vvv
Первый вариант определяет наименьшую многословность, а третий вариант — наибольшую.
Сохранение снимка в файл
Часто бывает полезно сохранить собранные данные в файл, чтобы их можно было далее анализировать и интерпретировать.
Это делается с помощью флага -w
:
tcpdump -i [interface] -w [filename]
Например, вы можете сохранить захваченные данные в файл с именем «capture.txt»:
tcpdump -i eth0 -w capture.txt
Также читайте: Как открыть порты и настроить переадресацию портов на маршрутизаторе
Часто задаваемые вопросы
1. Я получил ошибку «Операция не разрешена». Как мне решить эту проблему?
Ниже приведена распространенная ошибка, которую пользователи могут получить при попытке использовать tcpdump:
tcpdump выдает эту ошибку, если у вас нет необходимых разрешений для захвата пакетов. В большинстве случаев эту проблему можно решить с помощью sudo
. Например:
sudo tcpdump -i eth0
2. Как узнать, какие сетевые интерфейсы доступны?
tcpdump имеет встроенную функцию, позволяющую проверять доступные сетевые интерфейсы в вашей системе.
Чтобы проверить интерфейсы, используйте флаг -D
:
tcpdump -D