При криминалистической экспертизе, а в частности при создании дампа сетевого трафика в Linux используются несколько утилит: прежде всего — консольная tcpdump, классика жанра Wireshark и опенсорсный фреймворк Xplico, хотя последний больше используется для последующего анализа данных, чем для их первоначального сбора.
Дамп сетевого трафика в Linux с помощью tcpdump
Базовый вызов команды tcpdump выглядит следующим образом:
1 |
$ tcpdump <опции> <фильтр> |
А вот команды и параметры запуска tcpdump:
- -i интерфейс — задает интерфейс, с которого необходимо анализировать трафик;
- -n — отключает преобразование IP в доменные имена;
- -e — включает вывод данных канального уровня (например, MAC-адреса);
- -v — вывод дополнительной информации (TTL, опции IP);
- -w имя_файла — задает имя файла, в который нужно сохранять собранную информацию (дамп);
- -r имя_файла — чтение (загрузка) дампа из заданного файла;
- -q — переводит tcpdump в «бесшумный режим», в котором пакет анализируется на транспортном уровне (протоколы TCP, UDP, ICMP), а не на сетевом (протокол IP);
- -c количство — захват только определенного количества пакетов;
- host ip_адрес — захват пакетов с определенным IP-адресом;
- port номер_порта — захват пакетов с определенным портом;
- icmp — захват пакетов с определенным протоколом;
- -nn — вывод IP-адресов вместе с номерами портов;
- -A — отображение каждого пакета в ASCII;
- -X — отображение содержимого пакета в HEX;
- -w имя_файла — запись захваченных пакетов в файл;
- -D — вывод списка всех доступных сетевых интерфейсов, с которых tcpdump может собирать пакеты;
- -V — чтение списка сохраненных файлов;
- -Q out — просмотр всех запросов, которые отправляются на сервер;
- -f фильтр — использование фильтров для сбора только нужных данных;
Дамп всего входящего трафика, идущий из интернета на наш сервер:
1 |
$ tcpdump -s 0 -i eth0 -n -nn -ttt dst host <ip-адрес нашего хоста> -w forensic_cap.pcap |
Пример создания дампа сетевого трафика по протоколам FTP или SSH на интерфейсе eth0:
1 |
$ tcpdump -s 0 port ftp or ssh -i eth0 -w forensic_cap.pcap |
Дампим вообще все, что идет на интерфейс eth0:
1 |
$ tcpdump -w forensic_cap -i eth0 |
Еде одна годная для наших целей утилита — это TCPflow. По сути, более продвинутый вариант tcpdump, который поддерживает еще больше параметров фильтрации и возможность восстанавливать «сломанные» пакеты.
Если TCPflow по умолчанию нет в системе, то для начала ставь пакет tcpflow.
Далее базовый синтаксис команды выглядит так:
1 |
$ tcpflow [опции] [выражение] [хост] |
А вот описание опций:
- -c — только консольная печать (не создавать файлы);
- -d — уровень отладки (по умолчанию 1);
- -e — выводить каждый поток чередующимися цветами (синий — клиент-сервер, красный — сервер-клиент, зеленый — неизвестно);
- -i — сетевой интерфейс для прослушивания;
- -r — чтение пакетов из выходного файла tcpdump;
- -s — удалить непечатаемые символы (будут заменяться точками).
Пример сбора данных, идущих из внешней сети на наш сервер:
1 |
$ tcpflow -ce host <IP-адрес нашего хоста> |
Собираем весь трафик HTTP в нашей сети:
1 |
$ tcpflow -ce port 80 |
Дамп данных сетевого потока в локальную папку:
1 2 3 |
$ mkdir tcpflowdata $ cd tcpflowdata $ tcpflow host <IP-адрес целевой машины> |
Теперь в директорию /tcpflowdata будут складываться файлы с содержанием сетевых подключений. Все, что нам потом останется сделать, — это перекинуть их для анализа в парсер.
Еще по теме: Дистрибутивы для криминалистического анализа