Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Фильтрация содержимого, разделение и объединение pcap-файлов в Linux

Оригинал: How to filter, split or merge pcap files on Linux
Автор: Dan Nanni
Дата публикации: 18 декабря 2014 г.
Перевод: А.Панин
Дата перевода: 18 августа 2016 г.

Фильтрация содержимого, разделение и объединение pcap-файлов в Linux

Если вы являетесь системным администратором и занимаетесь обслуживанием системы обнаружения вторжений или управляете политикой доступа к сети, вы наверняка нередко осуществляете оффлайн-анализ собранных дампов сетевых пакетов. При сохранении дампов с помощью инструментов с открытым исходным кодом для сниффинга и захвата сетевых пакетов наиболее часто используется формат библиотеки libpcap (или формат pcap). В том случае, если pcap-файлы используются в рамках мероприятий, направленных на тестирование безопасности инфраструктуры или при оффлайн-анализе собранных данных, нередко возникает необходимость в выполнении дополнительных манипуляций перед осуществлением инъекции в сеть.

Один из самых популярных снифферов сетевых пакетов с графическим интерфейсом Wireshark

В данной статье я познакомлю вас с полезными инструментами, предназначенными для осуществления различных манипуляций с pcap-файлами, и продемонстрирую примеры их использования.

Editcap и Mergecap

Wireshark, один из самых популярных снифферов сетевых пакетов с графическим интерфейсом, на самом деле, изначально содержит в комплекте поставки набор очень полезных инструментов с интерфейсом командной строки. Среди этих инструментов следует особо выделить утилиты editcap и mergecap. Первая утилита является многофункциональным редактором pcap-файлов, который может фильтровать их содержимое или разделять их на множество частей в зависимости от переданных параметров. Вторая позволяет объединять множество pcap-файлов в рамках одного файла. В данной статье будут рассматриваться именно две перечисленные утилиты.

Если вы уже установили Wireshark в систему, рассматриваемые утилиты должны быть доступны. В противном случае вам придется установить пакет программного обеспечения с инструментами с интерфейсом командной строки из комплекта поставки сниффера сетевых пакетов Wireshark. Обратите внимание на то, что в дистрибутивах, основанных на Debian, вы можете установить его, не устанавливая само приложение Wireshark с графическим интерфейсом, в то время, как в дистрибутивах, основанных на RedHat вам придется установить пакет программного обеспечения со всеми компонентами Wireshark.

Debian, Ubuntu или Linux Mint:

$ sudo apt-get install wireshark-common

Fedora, CentOS или RHEL:

$ sudo yum install wireshark

По окончании процесса установки пакета программного обеспечения с инструментами с интерфейсом командной строки из комплекта поставки Wireshark вы сможете беспрепятственно использовать утилиты editcap и mergecap.

Фильтрация содержимого pcap-файла

Утилита editcap позволяет фильтровать содержимое pcap-файла в зависимости от переданных параметров и сохранять результат в рамках другого pcap-файла.

В первую очередь вы можете отфильтровать содержимое pcap-файла на основе начального и/или конечного времени захвата сетевых пакетов. Параметры "-A <начальное-время>" и "-B <конечное-вермя>" используются для указания интересующего пользователя промежутка времени, захваченные в течение которого дынные сетевых пакетов быть сохранены в результирующем файле (например, от 2:30 пп до 2:35 пп). При составлении команд должен использоваться формат записи времени "ГГГГ-ММ-ДД ЧЧ:ММ:СС".

$ editcap -A '2014-12-10 10:11:01' -B '2014-12-10 10:21:01' input.pcap output.pcap

Если вам нужны данные ровно N сетевых пакетов из pcap-файла, вы также можете получить их с помощью рассматриваемого инструмента. Приведенная ниже команда позволяет извлечь данные 100 пакетов (начиная с 401 и заканчивая 500) из файла input.pcap и сохранить их в файле output.pcap:

$ editcap input.pcap output.pcap 401-500

Если вы хотите отфильтровать дубликаты сетевых пакетов, содержащиеся в pcap-файле, вы можете воспользоваться параметром "-D <окно-поиска-дубликатов>". В этом случае будет осуществляться проверка совпадения длины и контрольной суммы, вычисленной в соответствии с алгоритмом MD5, каждого сетевого пакета с последовательностью предыдущих сетевых пакетов (длиной <окно-поиска-дубликатов> - 1) и отбрасывание пакетов в случае обнаружения совпадений.

$ editcap -D 10 input.pcap output.pcap
37568 packets seen, 1 packets skipped with duplicate window of 10 packets.

Альтернативным решением является использование временного интервала вместо окна для поиска дубликатов сетевых пакетов. Если вы воспользуетесь параметром "-w <временной-интервал-поиска-дубликатов>", будет осуществляться проверка совпадения сетевого пакета с пакетами, которые прибыли в течение заданного временного интервала поиска дубликатов (длительностью <временной-интервал-поиска-дубликатов> секунд).

$ editcap -w 0.5 input.pcap output.pcap
50000 packets seen, 0 packets skipped with duplicate time window equal to or less than 0.500000000 seconds.

Разделение pcap-файла на части

Утилита editcap также может оказаться полезной в том случае, если у вас возникнет потребность в разделении pcap-файла на несколько pcap-файлов меньшего размера.

Команда для разделения pcap-файла на несколько pcap-файлов с одинаковым количеством сетевых пакетов:

$ editcap -c <количество-пакетов-в-каждом-файле> <входной-pcap-файл> <префикс-имен-выходных-pcap-файлов>

Каждый выходной pcap-файл будет содержать данные одного и того же количества сетевых пакетов и иметь имя <префикс-имен-выходных-файлов>-NNNN.

Команда для разделения pcap-файла на множество pcap-файлов, содержащих сетевые пакеты, прибывшие в течение одинаковых временных интервалов:

$ editcap -i <временной-интервал-в-секундах> <входной-pcap-файл> <префикс-имен-выходных-pcap-файлов>

Объединение pcap-файлов

Если вам понадобится объединить несколько pcap-файлов в один, вам поможет утилита mergecap.

При объединении pcap-файлов mergecap по умолчанию использует метки времени сетевых пакетов из переданных pcap-файлов для сортировки этих пакетов в хронологическом порядке.

$ mergecap -w output.pcap input.pcap input2.pcap [input3.pcap . . .]

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

Например, следующая команда позволяет скопировать все сетевые пакеты из файлов input.pcap и input2.pcap в файл output.pcap:

$ mergecap -a -w output.pcap input.pcap input2.pcap

Заключение

В данной статье я представил несколько примеров использования утилит editcap и mergecap для осуществления манипуляций с pcap-файлами. Помимо упомянутых утилит, существует большое количество других утилит для работы с pcap-файлами, например, reordercap, предназначенная для изменения порядка следования сетевых пакетов, text2pcap, предназначенная для преобразования текстового представления сетевых пакетов в файл pcap, pcap-diff, предназначенная для поиска различий в pcap-файлах и другие. Некоторые из этих утилит для работы с pcap-файлами могут оказаться очень полезными в комбинации с утилитами для инъекций пакетов в сеть в процессе тестирования безопасности и поиска неполадок сетей, поэтому стоит как минимум знать об их существовании!

Используете ли вы какие-нибудь инструменты для работы с pcap-файлами? Если да, то какие и для каких целей?