
Ein Python-Skript, das Netzwerkverkehr im Zusammenhang mit loki-bot (Malware) erkennen und parsen kann. Dieses Skript kann für DFIR-Analysten und Sicherheitsforscher hilfreich sein, die wissen möchten, welche Daten an den C2 exfiltriert werden, Bot-Tracking usw.
Ein Python-Skript, das loki-bot (Malware) zugeordneten Netzwerkverkehr zwischen einem kompromittierten Host und einem C2-Server erkennen und analysieren kann. Dieses Skript kann für DFIR-Analysten und Sicherheitsforscher nützlich sein, die wissen möchten, welche Daten an den C2 exfiltriert werden, Bot-Tracking usw. ...
Dieses Skript kann entweder den Datenverkehr direkt vom Kabel erfassen (kein Switch) oder einen PCAP mit Netzwerkverkehr einlesen (mit --pcap $pcap_file). Wenn das Skript loki-bot-bezogenen Netzwerkverkehr erkennt, gibt es die in den Paketen enthaltenen Daten im JSON-Format auf dem Bildschirm aus.
Einige der Pakete enthalten exfiltrierte Daten, die mit aPLib komprimiert wurden. Das Skript dekomprimiert diese Daten und zeigt sie auf dem Bildschirm an. Beachten Sie jedoch, dass es zusätzliche Verarbeitungsschritte gibt, die noch nicht in dieses Skript integriert wurden ... NOCH NICHT. Das heißt, es ist wichtig, dass Sie auch das Skript aplib.py herunterladen und im selben Verzeichnis wie loki-parse.py aufbewahren. Dieses Skript ist erforderlich, damit loki-parse erfolgreich ausgeführt werden kann.
Schließlich gibt es ein Problem mit dem Code, der zum Erfassen von Netzwerkverkehr verwendet wird: Der Datenteil des Pakets kann abgeschnitten werden. Das scheint damit zusammenzuhängen, wie Scapy den Verkehr analysiert. Dies tritt wahrscheinlich bei größeren Paketen mit komprimierten Daten auf. Wenn dies passiert, wird der folgende Dictionary-Schlüssel erstellt:
Decompressed Application/Credential Data': 'ERROR: Incomplete Packet Detected
Dieses Problem scheint bei gespeicherten PCAPs nicht aufzutreten. Wenn Sie diesen Fehler also erhalten, versuchen Sie, den Netzwerkverkehr in einer PCAP-Datei zu speichern und loki-parse erneut mit der PCAP-Datei auszuführen.
Wenn das Skript die Daten im Paket erfolgreich dekomprimieren kann, werden diese Daten einfach auf dem Bildschirm ausgegeben (nicht im JSON-Format). Ich habe vor, dies in späteren Versionen zu beheben.
Ich habe loki-bot_network_traffic.pcap als Beispiel-PCAP für Sie bereitgestellt, damit Sie damit herumspielen können.
$ sudo ./loki_parse.py
Erfasse PCAPs vom Kabel
{
"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"
}
}