Работа с файлами сетевых дампов

Автор(ы): 
Грубов Юрий
Контакты: 

Введение

Время от времени, при проведении различных работ связанных с сетевым обменом требуется анализ трафика между взаимодействующими системами. В редких случаях он проводится «на лету», однако чаще это делается после сбора данных. При этом анализу могут подвергаться большие объемы данных, файлы содержащие их могут иметь размеры в десятки гигабайт либо наоборот быть большим набором мелких файлов. На сайте Информационная безопасность 7x24 уже публиковалась заметка посвященная "Фильтрация трафика BPF фильтром" (а также на RISSPA по этому адресу), настоящая статья описывает базовые методы работы с файлами сетевым дампов, в основном в формате PCAP: создание, разбиение, объединение и получение информации. Знание этих способов поможет вам подготовить к эффективной обработке сетевые дампы сохраненные в наборе файлов либо в одном файле большой длинны.

Примечание. Фильтрация сетевых данных не исключает разбиение дампов и наоборот. Оба метода могут использоваться одновременно.

Утилиты

Эта статья ориентирована на 2 самых распространенных снифера, это tcpdump и Wireshark. Последний рассматривается в обоих своих реализациях и как одноименная графическая программа (GUI) и как утилита командной строки tshark. Кроме того, описываются утилиты входящие в пакет Wireshark и имеющие отношение к работе с файлами: dumpcap, capinfos, mergecap и editcap.

Примечание. В настоящей статье приведены только некоторые опции программ и утилит. Для получения полного их списка необходимо пользоваться справочной информацией поставляемой с этими программами или опцией -h.

Создание сетевых дампов

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

  • создание одного файла;
  • создание нескольких файлов:
    • с ротацией файлов;
    • с ограничением каждого файла по времени;
    • с ограничением каждого файла по размеру;
  • создание нескольких файлов с обработкой на лету.

Сетевые дампы, в пределах рассмотрения этой статьи, могут собираться программами tcpdump, wireshark, tshark и dumpcap. Выбор конкретной программы обусловлен личными пристрастиями специалиста проводящего анализ, либо их наличием на рабочем месте. Далее приводится краткий перечень их параметров, управляющих созданием файлов.

Программа tcpdump имеет следующие опции:

  • -w <имя файла>: сохраняет перехваченные пакеты в файл с установленным именем;
  • -С <размер>: проверка размера файла дампа перед записью в него очередного пакета. Если файл больше чем установленный размер, то создается следующий файл. К имени новых файлов добавляется порядковый индекс, который начинается с 1. Размер указывается как максимальная длинна файла в миллионах (10 в степени 6) байт;
  • -G <период>: похоже на -C, но периодическая смена файла дампа происходит не из-за его размера, а по прошествии заданного интервала времени, задаваемого аргументом в секундах. При этом к имени файла прибавляется время;

Примечание. Время выводится в формате возвращаемом системной функцией strftime. В случае если ее возвращаемое значение не определено, то файл циклически переписывается (случай на стенде автора).

  • -C и -G: эти параметры могут использоваться одновременно, при этом сначала к имени файла прибавляется индекс, а за тем время;
  • -W <количество>: ограничение количества файлов. Вместе с опцией -C обеспечивает циклическую перезапись файлов (в отличии от чистой -C первый файл также имеет индекс, он равен 0). Вместе с опцией -G ограничивает общее количество файлов. Также может совместно применяться с обоими опциями -G и -C;
  • -z <команда>: вместе с опциями C и G после переключения на новый файл позволяет выполнить команду на лету типа «команда «имя файла»». Командой может выступать скрипт, или простая команда вроде gzip или bzip2. Аргумент — название команды.

Программа tshark имеет следующие опции:

 

  • -w <имя файла>: аналогично tcpdump;
  • -a: прекращение записи в файл по удовлетворению заданного условия. Условие задается в виде test:value:
    • duration:X — прекращение записи после X секунд;
    • filesize:X — прекращение записи в файл после того как его размер превысит X килобайт.
    • files:X — прекращение записи после достижения количества файлов X. Применяется в комбинации с первыми двумя условиями.

Примечание. В случае если надо задать несколько условий, то опцию -a надо писать перед каждым.

  • -b: аналогично -a но запись не прекращается, а продолжается в новый файл. При этом его имя складывается из имени заданного в -w номера и даты. Если указывается параметр files, то запись производится циклически.
  • -a и -b: эти опции могут применяться вместе, при этом циклическая запись в соответствии с опцией -b будет прекращена по условию заданному в -a.

Примечание. В контексте этой статьи аналогом tshark является другая программа из пакета Wireshark, которая называется dumpcap.

Возможности программы Wireshark аналогичны tshark, с той лишь разницей, что настойка производится с помощью графической формы. Окно настроек показано на следующей картинке, обратите внимание на области «Capture File(s)» и «Stop Capture...».


Рисунок — Настройки снифера Wireshark

Получение информации о файлах дампов

Для получения общей информации о файле сетевого дампа необходимо использовать утилиту capinfos, которая позволяет определить следующие характеристики:

  • тип дампа;
  • тип канала в котором производился перехват;
  • количество сохраненных пакетов;
  • размер файла и данных в нем;
  • время начала и конца перехвата пакетов, а также продолжительность перехвата;
  • скорость информационного потока;
  • средний размер пакета.

Тип дампа определяет способ хранения информации в файле. Надо сказать, что Wireshark и входящие в него утилиты поддерживает достаточно большой перечень типов, который, для версии 1.0.2, включает:

  • libpcap - Wireshark/tcpdump/... - libpcap
  • nseclibpcap - Wireshark - nanosecond libpcap
  • modlibpcap - Modified tcpdump - libpcap
  • nokialibpcap - Nokia tcpdump - libpcap
  • rh6_1libpcap - RedHat 6.1 tcpdump - libpcap
  • suse6_3libpcap - SuSE 6.3 tcpdump - libpcap
  • 5views - Accellent 5Views capture
  • dct2000 - Catapult DCT2000 trace (.out format)
  • nettl - HP-UX nettl trace
  • netmon1 - Microsoft NetMon 1.x
  • netmon2 - Microsoft NetMon 2.x
  • ngsniffer - NA Sniffer (DOS)
  • ngwsniffer_1_1 - NA Sniffer (Windows) 1.1
  • ngwsniffer_2_0 - NA Sniffer (Windows) 2.00x
  • niobserverv9 - Network Instruments Observer (V9)
  • lanalyzer - Novell LANalyzer
  • snoop - Sun snoop
  • rf5 - Tektronix K12xx 32-bit .rf5 format
  • visual - Visual Networks traffic capture
  • k12text - K12 text file
  • commview - TamoSoft CommView
  • pcapng - Wireshark - pcapng (experimental)

Другой интересной характеристикой является количество пакетов и временные параметры дампа. Последние могут иметь роль, если в названиях файлов не отражается время их создания.

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

root@grub-book:/home/grub# capinfos file1
File name: file1
File type: Wireshark/tcpdump/... - libpcap
File encapsulation: Ethernet
Number of packets: 2
File size: 236 bytes
Data size: 196 bytes
Capture duration: 0.000028 seconds
Start time: Thu Jun  3 21:14:38 2010
End time: Thu Jun  3 21:14:38 2010
Data rate: 6966810.03 bytes/s
Data rate: 55734480.27 bits/s
Average packet size: 98.00 bytes
root@grub-book:/home/grub# capinfos file4.ln
File name: file4.ln
File type: Novell LANalyzer
File encapsulation: Ethernet
Number of packets: 2
File size: 3270 bytes
Data size: 196 bytes
Capture duration: 0.000028 seconds
Start time: Thu Jun  3 00:00:00 2010
End time: Thu Jun  3 00:00:00 2010
Data rate: 7026355.42 bytes/s
Data rate: 56210843.35 bits/s
Average packet size: 98.00 bytes

Разбиение сетевых дампов

Для разбиения сетевых дампов необходимо пользоваться программой tcpdump. К сожалению использовать Wireshark или tshark не удастся (поправьте меня если ошибаюсь). Но при этом необходимо использовать не перехват с сетевого интерфейса, а чтение из большого файла. Для этого используется аргумент -r. Важно, что при разбиении больших сетевых дампов, времена их создания и перехвата отдельных пакетов не изменяются.

Например, один файл большого размера bigdump может быть разбит на более мелкие фрагменты размером примерно 1 МБ следующей командой:

tcpdump -r bigdump -w smalldump -C 1

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

Примечание. Для чтения файлов дампов нет необходимости иметь права супер-пользователя, достаточно обладать правами на чтение файла сетевого дампа.

Объединение сетевых дампов

В противоположность ранее приведенному сценарию может возникнут необходимость в объединении нескольких файлов дампов в один. Поскольку в файлах дампов также содержится служебная информация (сравните вывод «File size» «Data size» утилиты capinfos), то одной программой cat тут не обойдешься. В этом случае необходимо использовать утилиту mergecap, входящую в состав Wireshark.

Для использования с mergecap необходимо знать только один ключ -w в котором указывается имя объединенного файла, исходные файлы указываются обычным списком в конце команды. В следующем примере из файлов file1 и file2 будет сделан файл mergefile, объединяющий их содержимое:

mergecap -w mergefile file1 file2

Аналогично со случаем разбиения дампов, время перехвата отдельных пакетов остается неизменным.

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

Преобразование файлов PCAP

В случае если необходимо осуществить преобразование от одного формата дампа к другому необходимо использовать утилиту editcap. Она автоматически определяет формат входного файла (в пределах поддерживаемых типов), а с помощью флага -F можно задать формат выходного файла, в том числе может использоваться и формат источник. По умолчанию формат выходного файла PCAP.

Например, следующая команда принимает на вход файл dump и преобразует его в dump.snoop в формате Sun snoop:

editcap -F snoop dump dump.snoop

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