Поиск по сайту:

Обнюхивание пакетов с помощью tcpdump в Linux


Процесс мониторинга всех этих пакетов данных, проходящих через сеть, называется перехватом. Сетевые администраторы обычно используют снифферы для устранения неполадок и мониторинга сетевого трафика. Злоумышленники используют эти анализаторы для перехвата и мониторинга пакетов данных с целью кражи конфиденциальной информации об учетных записях пользователей, такой как пароли, имя пользователя и местоположение.

Сетевые пакеты — это базовые единицы данных, сгруппированные и передаваемые по сетям с коммутацией пакетов, компьютерным сетям, таким как Интернет.

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

Обнюхивание пакетов с помощью tcpdump в Linux

Tcpdump — это инструмент для анализа пакетов и анализа, который системные администраторы Linux используют для устранения проблем с подключением. Иногда вы можете использовать этот инструмент в целях безопасности. Этот инструмент в основном анализирует, фильтрует и захватывает сетевой трафик, например пакеты IP/TCP, проходящие через вашу систему.

Он собирает собранную информацию в файле с расширением .pcap, который можно открыть только с помощью командного инструмента или Wireshark. tcpdump входит в состав предустановленной утилиты в различных дистрибутивах Linux. Однако вы можете установить его с помощью следующей команды –

sudo apt install tcpdump (for Ubuntu/Debian-based distros)
yum install tcpdump (for RedHat-based Linux distros)
sudo pacman -S tcpdump (for Arch Linux)

Вы также можете получить краткую информацию о команде tcpdump на ее странице справки –

~$: tcpdump --h

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

Отображение всех доступных сетевых интерфейсов

Использование опции -D с командой tcpdump выведет список доступных сетевых интерфейсов вашей системы.

~$: sudo tcpdump -D
[sudo] password for prateek: 
1.enp0s3 [Up, Running, Connected] 
2.any (Pseudo-device that captures on all interfaces) [Up, Running] 
3.lo [Up, Running, Loopback] 
4.bluetooth-monitor (Bluetooth Linux Monitor) [Wireless] 
5.nflog (Linux netfilter log (NFLOG) interface) [none] 
6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none] 
7.dbus-system (D-Bus system bus) [none] 
8.dbus-session D-Bus session bus none

Из приведенного выше вывода вы можете увидеть состояние каждого сетевого интерфейса. Tcpdump создает псевдоустройство с именем «любое», а не реальный сетевой интерфейс. Следовательно, прослушивая это псевдоустройство, инструмент перехватывает пакеты, проходящие через все интерфейсы.

Обнюхивать сетевой интерфейс

Вы можете захватить текущие сетевые интерфейсы, используя следующую команду:

~$: sudo tcpdump

Обнюхивание пакетов с использованием различных опций tcpdump

Вы можете захватить сетевые интерфейсы разными способами и в разных форматах, список которых следующий:

  • Если вы хотите перехватить пакет с определенного сетевого интерфейса, используйте опцию -i –

~$: sudo tcpdump -i <network_interface> 
  • Аналогичным образом используйте опцию -c с командой tcpdump, чтобы захватить определенное количество пакетов

~$: sudo tcpdump -c <number of packets> -i <network_interface> 

Например, давайте захватим 2 пакета из интерфейса lo с помощью команды tcpdump —

~$: sudo tcpdump -c 2 -i lo 
  • После имени интерфейса вы можете перехватывать только TCP-пакеты, используя «tcp».

~$: sudo tcpdump -i <network_interface> tcp

Давайте перехватим TCP-пакеты сетей «lo» —

~$: sudo tcpdump -i lo tcp
  • Флаг -XX с командой tcpdump печатает значения в форматах HEX и ASCII.

~$: sudo tcpdump -XX -i <network_interface>
  • Добавьте A с командой печатать пакеты только в формате ASCII.

~$: sudo tcpdump -A -i <network_interface>

Показать информацию о временной метке

Tcpdump добавляет временную метку в первый столбец каждого вывода дампа пакета, чтобы указать, когда пакет был захвачен. С помощью этой команды вы можете использовать флаг -t для поддержки форматирования вывода метки времени.

~$: sudo tcpdump -t

При использовании приведенной выше команды она не печатает никакой информации о временных метках.

  • Вы также можете распечатать временную метку эпохи. В вычислениях это время и дата, относительно которых временная метка и часы компьютера определяют значение. 1 января 1970 года, 00:00:00 UTC, называют эпохой Unix.

    Эти эпохи используются для простоты вычислений как единое число для сохранения привязки ко времени. Используя команду опции -tt, вы можете распечатать временную метку в эпоху —

~$: sudo tcpdump -tt
  • Вы также можете распечатать вывод метки времени в формате дельта-времени. Дельта-время — это время, необходимое для завершения последнего кадра. Вы можете распечатать выходные данные в разном времени, используя флаг -ttt с командой tcpdump.

~$: sudo tcpdump -ttt
  • Используйте флаг -ttt, чтобы напечатать временную метку с датой.

~$: sudo tcpdump -tttt

Захват пакетов IP-адреса на определенном интерфейсе

Вы можете добавить опцию -u к команде для отображения пакетов IP-адресов на определенных интерфейсах следующим образом:

~$: sudo tcpdump -n -i <network_interface>

Например, мы захватываем пакеты IP-адресов в сети «lo».

~$: sudo tcpdump -n -i lo

Захват и сохранение пакетов в файл

Вы можете сохранять пакеты IP/TCP и анализировать их в будущем. С помощью команды tcpdump вы можете сохранить эти пакеты в файлы, используя опцию -w. Помните, что расширение этих файлов всегда должно быть .pcap, что означает Packet Capture.

~$: sudo tcpdump -w <file_name.pcap> -i <network_interface>

В данном случае мы сохранили пакеты интерфейса «enp0s3» в файле с именем «prateek.pcap». (~$: sudo tcpdump -w <имя_файла.pcap> -i <сетевой_интерфейс>)

~$: sudo tcpdump -w prateek.pcap -i enp0s3
[sudo] password for prateek:
tcpdump: listening on ep0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes

Более того, вы можете ограничить или установить конкретный размер каждого файла с помощью опции -c –

~$: sudo tcpdump -w prateek.pcap -i enp0s3 -C 3

Здесь 3 означает 3 МБ, т. е. когда размер файла prateek.pcap достигает 3 МБ, tcpdump будет создавать больше таких файлов на каждые 3 МБ, например prateek pcap1, prateek.pcap2 и т. д.

Чтение захваченных пакетов из сохраненных файлов

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

~$: sudo tcpdump -r <file_name.pcap> -i <network_interface>

В приведенном выше примере мы сохранили файл prateek.pcap. Мы можем читать пакеты из этого файла, используя опцию «-r», следующим образом:

~$: sudo tcpdump -r prateek.pcap -i enp0s3

Заключение

В этом руководстве мы увидели, как перехватывать пакеты с помощью tcpdump в Linux. Вы можете представлять пакеты и файлы, используя разные флаги, многие примеры которых мы привели в этом руководстве.

Это руководство поможет вам использовать tcpdump для захвата и анализа пакетов TCP/IP. Кроме того, если вы хотите узнать больше о дополнительных параметрах команды tcpdump, используйте опцию -h.

Статьи по данной тематике: