Как использовать tcpdump для захвата пакетов

Как использовать 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

Это покажет вам список флагов, которые вы можете использовать при работе с инструментом.

Команда помощи Tcpdump

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

man tcpdump

Страница 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

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

sudo tcpdump -i eth0

2. Как узнать, какие сетевые интерфейсы доступны?

tcpdump имеет встроенную функцию, которая позволяет вам проверить доступные сетевые интерфейсы на вашей системе.

Чтобы проверить интерфейсы, используйте флаг -D:

tcpdump -D