Библиотека сайта 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-файлы используются в рамках мероприятий, направленных на тестирование безопасности инфраструктуры или при оффлайн-анализе собранных данных, нередко возникает необходимость в выполнении дополнительных манипуляций перед осуществлением инъекции в сеть.
В данной статье я познакомлю вас с полезными инструментами, предназначенными для осуществления различных манипуляций с pcap-файлами, и продемонстрирую примеры их использования.
Editcap и Mergecap
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-файлами, например,
Используете ли вы какие-нибудь инструменты для работы с pcap-файлами? Если да, то какие и для каких целей?