Как использовать 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:
man tcpdump
Вы можете запустить базовый захват пакетов, просто введя:
tcpdumpИспользуя команду отдельно и не указывая сетевой интерфейс, инструмент выберет один из доступных интерфейсов на вашей системе.
Если вы не хотите, чтобы tcpdump разрешал имена хостов и хотите, чтобы он выводил только IP-адреса, вы можете использовать флаг -n:
tcpdump -nЕсли вы хотите указать количество пакетов, которые хотите захватить, используйте флаг -c:
tcpdump -c[количество пакетов]Указание сетевого интерфейса
Вы можете указать желаемый сетевой интерфейс, используя флаг -i:
tcpdump -i[интерфейс]Два из самых распространенных имен сетевых интерфейсов на большинстве систем - это eth0 и wlan0:
tcpdump -i eth0
tcpdump -i wlan0Если вы хотите захватить данные на всех интерфейсах, вы можете использовать опцию any:
tcpdump -i anyТакже читайте: Ethernet-коммутатор против концентраторов против сплиттеров: в чем разница?
Указание порта/диапазона портов
Если вы хотите захватить данные, использующие конкретный номер порта, используйте команду:
tcpdump -i[интерфейс] port [номер порта]Допустим, вы хотите захватить трафик на интерфейсе eth0 для порта 443 (HTTPS). Введите следующее:
tcpdump -i eth0 port 443Кроме того, tcpdump позволяет вам указывать диапазон портов:
tcpdump -i[интерфейс] portrange [диапазон портов]Указание хоста или подсети
Иногда вам необходимо ограничить захваченные пакеты только теми, которые отправлены/получены с определенного хоста или подсети. К счастью, tcpdump позволяет вам это сделать.
Вы можете указать хост, используя следующий формат:
tcpdump -i[интерфейс] host [хост]Например, захватите трафик на интерфейсе eth0 и укажите хост как 127.0.0.1 (ваш собственный адрес IP петли):
tcpdump -i eth0 host 127.0.0.1Если вы хотите указать подсеть сети с использованием нотации CIDR, вы можете использовать следующий формат:
tcpdump -i[интерфейс] net [подсеть]Например:
tcpdump -i eth0 net 10.0.0.0/8Вы также можете напрямую указать исходный хост:
tcpdump -i[интерфейс] src [хост]И целевой хост:
tcpdump -i[интерфейс] dst [хост]Также читайте: Как запустить Nmap без прав root или sudo
Указание уровня подробности
tcpdump позволяет вам указывать уровень подробности захвата пакетов. Это очень полезно, когда вы не хотите, чтобы вас перегружало количество информации во время захвата.
Существует три уровня увеличения подробности, флаги -v, -vv и -vvv:
tcpdump -i[интерфейс] -v
tcpdump -i[интерфейс] -vv
tcpdump -i[интерфейс] -vvvПервый вариант указывает на наименьшую подробность, в то время как третий вариант указывает на наибольшую.
Сохранение захвата в файл
Часто полезно сохранять захваченные данные в файл, чтобы можно было их проанализировать и интерпретировать.
Это делается с использованием флага -w:
tcpdump -i[интерфейс] -w [имя файла]Например, вы можете сохранить захваченные данные в файл с именем “capture.txt”:
tcpdump -i eth0 -w capture.txtТакже читайте: Как открыть порты и настроить переадресацию портов на вашем маршрутизаторе
Часто задаваемые вопросы
1. Я получил ошибку “Операция не разрешена”. Как мне это исправить?
Следующая ошибка часто возникает у пользователей при попытке использовать tcpdump:

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