Для анализа сетевых пакетов и просмотра их содержимого одним из самых мощных методов считают именно захват этих самых пакетов. С помощью такой операции можно многое узнать о том, что и как происходит в сети. Достаточно изучить сырые данные, которые передаются таким образом. Потоки данных не просто захватываются – можно получить их интерпретацию в виде, доступном для понимания человека. В Linux сделать это можно с помощью утилиты TCPdump.
Что это такое?
Для специалистов по компьютерной безопасности утилита TCPdump может стать главным инструментом. Это важное приложение, связанное с большим количеством нюансов. Многим нравятся инструменты более высокого уровня, но такой подход часто воспринимают как ошибочный.
Программу создали для прослушивания и анализа работы сети. Благодаря дополнительным настройкам программа может проводить анализ для разных пакетов – предназначенных не только для конкретного Mac-адреса. Допустим широковещательный тип.
Доступна утилита TCPdump не только в Linux, но и Windows. Скачать оригинальный клон можно с официального сайта, но продукт платный.
Оборудование для подключения к сети определяет набор возможностей, доступных пользователю. Вот некоторые из них:
- «Трюки» с концентраторами. Коммутаторный порт, прослушка которого необходима, соединяют с участием концентратора. Узел-монитор тоже соединяют с коммутатором. Сетевое подключение отличается низкой производительностью, но результаты всё равно есть.
- Использование специальных средств или ответвителей. Они включаются в разрыв сетевых подключений. Передают трафик на отдельный порт, в результате чего становится доступным его прослушивание.
- Копирование трафика. Поддерживается только некоторыми коммутаторами.
- Наблюдение за коммутаторами или свичами, образующие сеть. Коммутатору доступен не только трафик сети, но и весь широковещательный трафик, связанный с сегментом.
- Работа в сетях на основе концентраторов.
Принцип работы
Перед началом использования утилиты TCPdump надо разобраться в том, какие она поддерживает сетевые интерфейсы. Для выполнения основных задач понадобятся права суперпользователя. Потому в первых командах важно указывать параметр, который обозначается как sudo и имя администратора, после нажатия Enter ввести пароль.
Сочетание клавиш Ctrl + C останавливает работу того или иного заданного параметра. Все перехваченные пакеты будут отображаться в выводе практически сразу.
Формат перехвата имеет следующий вид:
Такой формат поддерживает большинство пакетов, содержащих данные. Текст, выделенный чёрным цветом, может отличаться в каждом случае, в зависимости от используемого протокола. Элементы кода идут в такой последовательности:
- временные метки;
- протокол;
- IP адрес отправителя;
- адрес адресата;
- характеристики других разновидностей;
- измеряемый байтами размер пакетов.
—V – опция, позволяющая легко контролировать подробность вывода информации. Например, дополнительно отображаются сведения, связанные с протоколом IP.
Что может узнать пользователь конкретно:
- Длина поля заголовка.
- Версия протокола TCP.
- Время жизни пакета TLL.
Проверка контрольных сумм выводится при использовании команды –vv. В некоторых случаях подробно отображается содержимое пакетов.
После использования опций легко указывать фильтры, которые применяют для тех или иных пакетов. Вот лишь основные параметры, используемые при отсеивании:
- Несколько видов протоколов, включая udp, tcp, decnet, rarp, arp, ip6, ip. wlan, tr, fddi, ether.
- DST – параметр, связанный с получателем.
- SRC – отправитель.
- Port – указание адреса порта.
- Net – адреса сетей, подсетей.
- Proto – указание протокола.
- IP – ip адрес.
- Host – имя хоста.
Для получения желаемого результата разрешается комбинировать различные команды друг с другом.
Установка TCPdump
Необходимо выполнить следующие шаги, когда речь идёт о системах Debian/Ubuntu/Linux Mint: прописывают команду sudo apt – get install tcpdump.
По-другому будет выглядеть сочетание для RedHat/CentOS/Fedora: sudo yum install tcpdump.
Описание синтаксиса
Приведём несколько примеров использования TCPdump в Linux, способных заметно упростить использование приложения, для пользователей любого уровня.
Из пакета приложение принимает стандартно только первые 6896 байт. Добавление опции –s <число> позволяет получить более подробную информацию, когда возникает необходимость. Число обозначает, сколько байтов планирует перехватить тот или иной пользователь. Захват всех производится при указании комбинации –s 0 (ноль).
У самой команды синтаксис такой: $ tcpdump опции -i интерфейс фильтры
Главное – не забывать о передаче интерфейса, который будет использован. Если указания по этому отсутствуют – автоматически программа использует первый элемент из списка. Благодаря фильтрам становится проще отсеивать пакеты, не представляющие интереса для конечного пользователя. Программа поддерживает следующий набор основных ключей:
- Z – обозначение пользователя, от имени которого происходит создание для всех файлов.
- W – запись в файл для вывода.
- Q – команда, позволяющая вывести минимальное количество информации.
- Более подробный вывод предполагает применение команд –v, —vv, —vvv.
- R – для считывания пакетов, созданных с помощью команды w.
- N – отменяет отображение доменных имён.
- L – для вывода поддерживаемых протоколов, через которые подключают интерфейс.
- L – к выводу добавляют функцию прокрутки.
- K – после использования контрольные суммы проверяться не будут.
- J – просмотр доступных временных меток (TimeStamp).
- Маленькая j устанавливает формат Time Stamp в отношении созданных пакетов.
- I – переключение режима монитора, который будет действовать для всех пакетов.
- Маленькая i задаёт имя интерфейса при перехвате пакетов. Пакеты могут захватываться со всех интерфейсов, достаточно задать параметр any.
Основные команды и фильтры
Вставка фильтров – главная особенность, характерная для синтаксиса tcpdump. Следующее описание приводят для самых популярных вариантов:
- Less, greater – пакеты выводятся больше или меньше по сравнению с указанным размером.
- And, Or – объединение сразу нескольких фильтров внутри одной команды.
- Port – для отображения информации, связанной с определённым портом.
- Arp, upd, tcp – фильтрация с использованием одного из протоколов.
- Dst – для вывода с указанным адресом.
- SRC – выводит пакеты, отправителем которых признан конкретный адрес.
- IP – описание адреса протокола.
- NET – описание IP главной сети и подсети.
- HOST – чтобы указать имя хоста.
Допустимо создавать комбинации, включающие сразу несколько фильтров. Благодаря этому в выдаче информации пользователь видит только то, что действительно представляет интерес.
Примеры использования
Вариантов применения утилиты множество. Можно рассмотреть лишь наиболее интересные и популярные.
Просмотр списка с интерфейсами
Каждому пользователю рекомендуют с самого начала смотреть списки текущих интерфейсов. Вариант актуален для всех отслеживаемых компонентов. Стандартно для решения вопроса применяют опцию –D. Следующая команда, внесённая в терминал, позволит получить список:
Sudo tcdump –D.
Об обычном захвате трафика
—i – вот опция, облегчающая захват трафика. После ввода команды следует точное указание используемого интерфейса. На практике применение команд имеет примерно такой вид:
Sudo tcpdump –I ppp0
Права суперпользователя обязательны, потому вначале и вводят sudo.
Нажатие клавиши Enter приводит к отображению пакетов, перехваченных в терминале. Комбинация клавиш Ctrl+C останавливает этот процесс.
При отсутствии дополнительных пакетов с фильтрами следующим образом выглядит формат, в котором отображаются пакеты:
Основные моменты выделены при помощи различных цветов:
- Красным цветом выделяют размеры, с единицей измерения в виде байтов.
- Дополнительная информация по TCP выделяется серым.
- Фиолетовым – адрес, по которому находят получателей.
- Отправитель и его адрес — зелёный.
- Протокол с его версией обозначают оранжевым.
- Время получения – синий цвет.
Захват трафика с помощью –V
Опция способствует увеличению количества сведений, показанных пользователю. За вводом команды ниже следует проверка по всему интерфейсу:
Sudo tcpdump –v –I ppp0
В выводе может появиться такая строка:
Расшифровать ее можно так:
- Красный – обозначение размера пакета.
- Фиолетовым обозначают версию для TCP.
- Зелёный – длина заголовка у полей.
- Синим обозначают, сколько времени живёт протокол.
- Оранжевый – версия протокола.
Добавление букв vv, vvv увеличит объёмы информации по протоколу.
-w и -r
Команды w и r используют для сохранения в отдельный файл всех выводимых сведений. Потом это упрощает просмотр. Удобный вариант, чтобы сохранить большие объёмы текстов для просмотра.
Есть и другие сочетания, которые используются владельцами устройств для максимально эффективной работы. Возможности этого инструмента отличаются широтой. Главное – запомнить буквенные сочетания, применимые в том или ином случае. Со временем на выполнение действий будет уходить минимум времени.