
Python-скрипт, который может обнаруживать и анализировать сетевой трафик, связанный с loki-bot (вредоносным ПО). Этот скрипт может быть полезен аналитикам DFIR и исследователям безопасности, которые хотят знать, какие данные передаются на C2, отслеживание ботов и т. д.
Это Python-скрипт, который обнаруживает и разбирает сетевой трафик loki-bot (вредоносного ПО) между скомпрометированным хостом и C2-сервером. Этот скрипт может быть полезен аналитикам DFIR и исследователям безопасности, которые хотят узнать, какие данные передаются на C2, отслеживание бота и т.д.
Этот скрипт может либо перехватывать трафик напрямую с сети (без коммутатора), либо читать PCAP-файл с сетевым трафиком (с помощью --pcap $pcap_file). Когда скрипт обнаруживает сетевой трафик loki-bot, он выводит данные, содержащиеся в пакетах, на экран в формате JSON.
Некоторые пакеты содержат передаваемые данные, сжатые с помощью aPLib. Скрипт распакует эти данные и отобразит их на экране, но учтите, что существует дополнительная обработка, которая ещё не включена в этот скрипт...ПОКА. При этом важно также скачать скрипт aplib.py и поместить его в тот же каталог, где находится loki-parse.py. Этот скрипт необходим для успешного выполнения loki-parse.
Наконец, есть проблема с кодом, используемым для перехвата сетевого трафика, из-за которой часть данных пакета может обрезаться. Похоже, это связано с тем, как scapy разбирает трафик. Скорее всего, это произойдёт с более крупными пакетами, содержащими сжатые данные. Если это произойдёт, будет создан следующий ключ словаря:
Decompressed Application/Credential Data': 'ERROR: Incomplete Packet Detected
Похоже, эта проблема не возникает при сохранённых PCAP, поэтому, если вы получите эту ошибку, попробуйте сохранить сетевой трафик в pcap-файл и повторно запустить loki-parse на этом pcap.
Если скрипт успешно распакует данные в пакете, эти данные просто выводятся на экран (не в формате JSON). Я планирую исправить это в следующих версиях.
Я предоставил loki-bot_network_traffic.pcap в качестве примера pcap-файла для экспериментов.
$ sudo ./loki_parse.py
Перехват пакетов из сети
{
"Compromised Host/User Data": {
"Compressed Application/Credential Data Size (Bytes)": 2310,
"Compression Type": 0,
"Data Compressed": true,
"Encoded": false,
"Encoding": 0,
"Original Application/Credential Data Size (Bytes)": 8545
},
"Compromised Host/User Description": {
"64bit OS": false,
"Built-In Admin": true,
"Domain Hostname": "REMWorkstation",
"Hostname": "REMWORKSTATION",
"Local Admin": true,
"Operating System": "Windows 8.1 Workstation",
"Screen Resolution": "3440x1440",
"User Name": "REM"
},
"Malware Artifacts/IOCs": {
"Binary ID": "XXXXX11111",
"Loki-Bot Version": 1.8,
"Mutex": "B7E1C2CC98066B250DDB2123",
"Potential Hidden File [Hash Database]": "%APPDATA%\\C98066\\6B250D.hdb",
"Potential Hidden File [Keylogger Database]": "%APPDATA%\\C98066\\6B250D.kdb",
"Potential Hidden File [Lock File]": "%APPDATA%\\C98066\\6B250D.lck",
"Potential Hidden File [Malware Exe]": "%APPDATA%\\C98066\\6B250D.exe",
"Unique Key": "g5cy2",
"User-Agent String": "Mozilla/4.08 (Charon; Inferno)"
},
"Network": {
"Data Transmission Time": "2017-04-27T15:03:20.921806",
"Destination Host": "185.141.27.187",
"Destination IP": "185.141.27.187",
"Destination Port": 80,
"First Transmission": true,
"HTTP Method": "POST",
"HTTP URI": "/danielsden/ver.php",
"Source IP": "172.16.0.130",
"Source Port": 49344,
"Traffic Purpose": "Exfiltrate Application/Credential Data"
}
}