
Генерирует уникальные отпечатки HTTP-запросов вредоносного ПО из файлов pcap с помощью Tshark, что позволяет идентифицировать и группировать семейства вредоносного ПО на основе анализа структуры запросов, заголовков и характеристик полезной нагрузки.
Инструмент для фингерпринтинга HTTP-запросов вредоносного ПО. Основан на Tshark и написан на Python3. Стадия рабочего прототипа :-)
Его основная цель — предоставлять уникальные представления (отпечатки) запросов вредоносного ПО, которые помогают в их идентификации. Уникальный означает здесь, что каждый отпечаток должен встречаться только в одном конкретном семействе вредоносных программ, но одно семейство может иметь несколько отпечатков. Hfinger представляет запрос в более короткой форме, чем вывод всего запроса, но при этом интерпретируемой человеком.
Hfinger может использоваться как при ручном анализе вредоносного ПО, так и в песочницах или SIEM. Сгенерированные отпечатки полезны для группировки запросов, привязки запросов к конкретным семействам вредоносных программ, идентификации различных операций одного семейства или обнаружения неизвестных вредоносных запросов, пропущенных другими системами безопасности, но имеющих общий отпечаток.
Научная статья сопровождает работу над этим инструментом, описывая, например, мотивацию выбора дизайна и оценку инструмента по сравнению с p0f, FATT и Mercury.
Основное предположение этого проекта заключается в том, что HTTP-запросы разных семейств вредоносного ПО более или менее уникальны, поэтому их можно фингерпринтировать для обеспечения некоторой идентификации. Hfinger сохраняет информацию о структуре и значениях некоторых заголовков, чтобы предоставить средства для дальнейшего анализа. Например, группировка похожих запросов — на данный момент это еще находится в разработке.
После анализа HTTP-запросов и заголовков вредоносного ПО мы определили некоторые части запросов как наиболее отличительные. К ним относятся:
Кроме того, были учтены некоторые стандартные особенности URL запроса.
Все эти части были преобразованы в набор признаков, подробно описанных здесь.
Вышеуказанные признаки преобразуются в представление переменной длины, которое и является фактическим отпечатком. В зависимости от режима отчета используются разные признаки для фингерпринтинга запросов. Более подробная информация об этих режимах представлена ниже. Процесс выбора признаков будет описан в предстоящей научной статье.
Минимальные требования, необходимые перед установкой:
Python >= 3.3,Tshark >= 2.2.0.Установка доступна из PyPI:
pip install hfinger
Hfinger был протестирован на Xubuntu 22.04 LTS с пакетом tshark версии 3.6.2, но должен работать с более старыми версиями, такими как 2.6.10 на Xubuntu 18.04 или 3.2.3 на Xubuntu 20.04.
Обратите внимание, что, как и в случае с любым PoC, запускать Hfinger следует в изолированной среде, по крайней мере, с виртуальным окружением Python. Его настройка здесь не рассматривается, но вы можете попробовать этот учебник.
После установки вы можете вызывать инструмент непосредственно из командной строки с помощью hfinger или как модуль Python с помощью python -m hfinger.
Например:
foo@bar:~$ hfinger -f /tmp/test.pcap
[{"epoch_time": "1614098832.205385000", "ip_src": "127.0.0.1", "ip_dst": "127.0.0.1", "port_src": "53664", "port_dst": "8080", "fingerprint": "2|3|1|php|0.6|PO|1|us-ag,ac,ac-en,ho,co,co-ty,co-le|us-ag:f452d7a9/ac:as-as/ac-en:id/co:Ke-Al/co-ty:te-pl|A|4|1.4"}]
Справку можно вывести с помощью короткого ключа -h или длинного --help:
usage: hfinger [-h] (-f FILE | -d DIR) [-o output_path] [-m {0,1,2,3,4}] [-v]
[-l LOGFILE]
Hfinger - fingerprinting malware HTTP requests stored in pcap files
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE Read a single pcap file
-d DIR, --directory DIR
Read pcap files from the directory DIR
-o output_path, --output-path output_path
Path to the output directory
-m {0,1,2,3,4}, --mode {0,1,2,3,4}
Fingerprint report mode.
0 - similar number of collisions and fingerprints as mode 2, but using fewer features,
1 - representation of all designed features, but a little more collisions than modes 0, 2, and 4,
2 - optimal (the default mode),
3 - the lowest number of generated fingerprints, but the highest number of collisions,
4 - the highest fingerprint entropy, but slightly more fingerprints than modes 0-2
-v, --verbose Report information about non-standard values in the request
(e.g., non-ASCII characters, no CRLF tags, values not present in the configuration list).
Without --logfile (-l) will print to the standard error.
-l LOGFILE, --logfile LOGFILE
Output logfile in the verbose mode. Implies -v or --verbose switch.
Вы должны указать путь к файлу pcap (-f) или каталогу (-d) с файлами pcap. Вывод в формате JSON. Он будет выведен в стандартный вывод или в указанный каталог (-o) с использованием имени исходного файла. Например, вывод команды:
hfinger -f example.pcap -o /tmp/pcap
будет сохранен в:
/tmp/pcap/example.pcap.json
Режим отчета -m/--mode можно использовать для изменения режима отчета по умолчанию, указав целое число в диапазоне 0-4. Режимы различаются представленными признаками запроса или методами округления. Режим по умолчанию (2) был выбран нами для представления всех признаков, которые обычно используются при анализе запросов, но также обеспечивает низкое количество коллизий и сгенерированных отпечатков. С другими режимами можно добиться разных целей. Например, в режиме 3 вы получаете меньшее количество сгенерированных отпечатков, но более высокую вероятность коллизии между семействами вредоносного ПО. Если вы не уверены, можете ничего не менять. Дополнительная информация о режимах отчета здесь.
Начиная с версии 0.2.1 Hfinger стал менее подробным. Вам следует использовать -v/--verbose, если вы хотите получать информацию о нестандартных значениях заголовков, не-ASCII символах в части запроса, не являющейся полезной нагрузкой, отсутствии тегов CRLF (\r\n\r\n) и других проблемах с анализируемыми запросами, которые не являются ошибками приложения. При возникновении таких проблем в подробном режиме они будут выведены в стандартный поток ошибок. Вы также можете сохранить журнал в указанное место с помощью ключа -l/--log (он подразумевает -v/--verbose). Данные журнала будут добавлены в файл журнала.
Начиная с версии 0.2.0, Hfinger поддерживает импорт в другие приложения на Python. Чтобы использовать его в своем приложении, просто импортируйте функцию hfinger_analyze из hfinger.analysis и вызовите ее с путем к файлу pcap и режимом отчета. Возвращаемый результат — список словарей с результатами фингерпринтинга.
Например:
from hfinger.analysis import hfinger_analyze
pcap_path = "SPECIFY_PCAP_PATH_HERE"
reporting_mode = 4
print(hfinger_analyze(pcap_path, reporting_mode))