Обнюхивание пакетов с помощью 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.