
Modulares Framework für die Sammlung und Korrelation von Malware-Analyse-Artefakten
Subparse ist ein modulares Framework, das von Josh Strochein, Aaron Baker und Odin Bernstein entwickelt wurde. Das Framework wurde entwickelt, um Malware-Dateien zu parsen und zu indizieren und die beim Parsen gefundenen Informationen in einem durchsuchbaren Web-Viewer darzustellen. Das Framework ist modular aufgebaut und nutzt eine Kern-Parsing-Engine, Parsing-Module sowie verschiedene Anreicherungsmodule (Enrichers), die den Malware-Indizes zusätzliche Informationen hinzufügen. Die Haupteingabewerte für das Framework sind Verzeichnisse mit Malware-Dateien, die von der Kern-Parsing-Engine oder einer benutzerdefinierten Parsing-Engine geparst werden, bevor zusätzliche Informationen von einer benutzerdefinierten Anreicherungs-Engine hinzugefügt werden – all dies, bevor die geparsten Informationen in einem Elasticsearch-Index indiziert werden. Die gesammelten Informationen können dann über einen Web-Viewer durchsucht und angezeigt werden, der auch Filterungen nach jedem aus einer Datei gewonnenen Wert ermöglicht. Derzeit gibt es 3 Parsing-Engines (die Standard-Parsing-Engines PEParser, OLEParser und ELFParser) und 2 Anreicherungs-Engines (ABUSEEnricher und CAPEEnricher).
Um mit Subparse zu beginnen, müssen einige erforderliche/empfohlene Programme installiert und eingerichtet werden, bevor die Software verwendet werden kann.
| Software | Status |
|---|
Nachdem die erforderliche/empfohlene Software auf Ihrem System installiert wurde, sind noch einige weitere Schritte erforderlich, um Subparse zu installieren.
sudo get apt install build-essential pip3 install -r ./requirements.txt
docker-compose up
Hinweis: Dies kann etwas Zeit in Anspruch nehmen, da die Images heruntergeladen und die Container eingerichtet werden müssen, die von Subparse benötigt werden.
Verfügbare Befehlszeilenoptionen für subparse/parser/subparse.py:
Um die Ergebnisse der Subparse-Parser anzuzeigen, navigieren Sie zu localhost:8080. Wenn die Seite nicht angezeigt wird, stellen Sie sicher, dass der Container in Docker gestartet ist und dass kein anderer Prozess auf Port 8080 läuft, der die Verfügbarkeit der Seite beeinträchtigen könnte.
Bevor ein Parser ausgeführt wird, werden allgemeine Informationen über die Beispieldatei gesammelt, unabhängig vom zugrunde liegenden Dateityp. Diese Informationen umfassen:
Parser werden NUR auf Beispieldateien ausgeführt, die dem Dateityp entsprechen. Beispielsweise werden PE-Dateien standardmäßig mit dem PEParser verarbeitet, da der Dateityp mit denen übereinstimmt, die der PEParser untersuchen kann.
Diese Module sind optionale Module, die NUR ausgeführt werden, wenn sie über das Flag -e | --enrichers in der Befehlszeile angegeben werden.
Die Webansicht von Subparse wurde mit Bootstrap für das CSS erstellt, sodass jedes integrierte Bootstrap-CSS bei der Entwicklung eigener benutzerdefinierter Parser/Enricher-Vue.js-Dateien verwendet werden kann. Wir haben für jede Komponente ein Beispiel bereitgestellt, um den Einstieg zu erleichtern, und haben außerdem einige benutzerdefinierte Widgets implementiert, um den Entwicklungsprozess zu vereinfachen und die Standardisierung bei der Darstellung von Informationen zu fördern. Alle Vue.js-Dateien werden verwendet, um Informationen aus dem benutzerdefinierten Parser/Enricher dynamisch anzuzeigen, und dienen als Vorlagen für die Daten.
Hinweis: Die Namenskonventionen für Klassen- und Dateinamen müssen streng eingehalten werden. Dies sollte zuerst überprüft werden, wenn Probleme auftreten, dass Ihr benutzerdefinierter Parser/Enricher nicht ausgeführt wird. Die Namenskonvention Ihres Parsers/Enrichers muss in allen Dateien und Klassennamen identisch sein.
Das Logger-Objekt ist eine Singleton-Implementierung des standardmäßigen Python-Loggers. Für eine ausführliche Nutzung lesen Sie bitte die Offizielle Dokumentation. Für Subparse empfehlen wir die Verwendung der folgenden Logging-Level für die Ausgabe:
Diese Forschung sowie alle Mitautoren wurden durch den NSA-Zuschuss H98230-20-1-0326 unterstützt.
| Link |
|---|
| Docker | Erforderlich | Installationsanleitung |
| Python3.8.1 | Erforderlich | Installationsanleitung |
| Pyenv | Empfohlen | Installationsanleitung |
| Argument | Alternative | Erforderlich | Beschreibung |
|---|
| -h | --help | Nein | Zeigt Hilfemenü an |
| -d SAMPLES_DIR | --directory SAMPLES_DIR | Ja | Verzeichnis der zu analysierenden Beispieldateien |
| -e ENRICHER_MODULES | --enrichers ENRICHER_MODULES | Nein | Enricher-Module zur zusätzlichen Analyse |
| -r | --reset | Nein | Setzt alle Daten im konfigurierten Elasticsearch-Cluster zurück/löscht sie |
| -v | --verbose | Nein | Zeigt ausführliche Befehlszeilenausgabe an |
| -s | --service-mode | Nein | Wechselt in den Dienstmodus, der das Hinzufügen weiterer Beispiele in das SAMPLES_DIR während der Verarbeitung ermöglicht |