
Automatische Analyse von SWF-Dateien basierend auf einigen Heuristiken. Erweiterbar über Plugins.
HINWEIS: Die folgenden Anweisungen gelten für Python3.
Wenn Sie FLASHMINGO unter Python2.7 installieren müssen, können Sie das Release 1.0 unter dem Reiter Releases auschecken. Die Installationsschritte sind im Wesentlichen dieselben.
Installieren Sie die in requirements.txt aufgeführten Python3-Pakete.
Sie können den folgenden Befehl verwenden: pip3 install -r requirements.txt
Wenn Sie die Dekompilierungsfunktion nutzen möchten, müssen Sie Jython installieren. Ubuntu/Debian-Benutzer können apt install jython ausführen.
Klonen Sie das Projekt oder laden Sie die Zip-Datei herunter.
FLASHMINGO ist ein Analyse-Framework für SWF-Dateien. Das Tool sortiert automatisch verdächtige Flash-Dateien und leitet den weiteren Analyseprozess, wodurch wertvolle Ressourcen in Ihrem Team freigesetzt werden. Sie können die Analysemodule von FLASHMINGO problemlos in Ihren Workflow integrieren.
Bis heute müssen forensische Ermittler und Malware-Analysten mit verdächtigen SWF-Dateien umgehen. Wenn die Geschichte sich wiederholt, könnte die Sicherheitsbedrohung sogar noch größer werden, über das Ende von Flash im Jahr 2020 hinaus. Systeme werden weiterhin ein Legacy-Dateiformat unterstützen, das nicht mehr mit Sicherheitspatches aktualisiert wird. Automatisierung ist der beste Weg, dieses Problem zu bewältigen, und hier kann FLASHMINGO Ihnen helfen. FLASHMINGO ist ein Analyse-Framework zur automatischen Verarbeitung von SWF-Dateien, mit dem Sie verdächtige Flash-Beispiele markieren und mit minimalem Aufwand analysieren können. Es integriert sich als eigenständige Anwendung oder als leistungsstarke Bibliothek in verschiedene Analyse-Workflows. Benutzer können die Funktionalität des Tools einfach über benutzerdefinierte Python-Plugins erweitern.
FLASHMINGO wurde mit Einfachheit im Sinn entwickelt. Es liest eine SWF-Datei und erstellt ein Objekt (SWFObject), das deren Inhalt und Struktur repräsentiert. Anschließend führt FLASHMINGO eine Reihe von Plugins aus, die auf diesem SWFObject arbeiten und ihre Werte an das Hauptprogramm zurückgeben.
Unten ein obligatorisches ASCII-Art-Flussdiagramm:
+----------+
| |
+------------+----------->+ PLUGIN 1 +------------+
| | | | |
| | +----------+ |
| | |
| | +----------+ |
| | | | |
+---------+ | +----------->+ PLUGIN 2 +--------+ |
|SWF FILE +----------->+ FLASHMINGO | | | | |
+---------+ | | +----------+ | |
| | | |
| | | |
| | | |
| | +-----v---v-+
| | | |
| | | |
+-----+------+------------------------->+ SWFOBJECT |
^ | |
| | |
| +-----+-----+
| |
| |
| |
+---------------------------------------+
Bei Verwendung von FLASHMINGO als Bibliothek in eigenen Projekten müssen Sie sich nur um zwei Arten von Objekten kümmern:
SWFObject(s), die die Probe(n) repräsentierenFlashmingo-Objekt. Dies fungiert im Wesentlichen als Rahmenwerk, das Plugins und SWFObject(s) verbindet.FLASHMINGO-Plugins werden in eigenen Verzeichnissen unter… Sie haben es erraten: plugins gespeichert.
Wenn ein Flashmingo-Objekt instanziiert wird, durchläuft es dieses Verzeichnis und verarbeitet alle Manifeste der Plugins. Sollte dies anzeigen, dass das Plugin aktiv ist, wird es für die spätere Verwendung registriert. Auf Code-Ebene bedeutet dies, dass ein kleines plugin_info-Dictionary zur plugins-Liste hinzugefügt wird.
Plugins werden über die run_plugin-API mit zwei Argumenten aufgerufen:
SWFObject-InstanzOptional erlauben die meisten Plugins, eigene Benutzerdaten zu übergeben. Dies ist pluginabhängig (lesen Sie die Dokumentation) und lässt sich am besten anhand eines Beispiels erklären.
Das Standard-Plugin SuspiciousNames durchsucht alle Konstantenpools nach Zeichenketten, die verdächtige Teilzeichenfolgen enthalten (z.B. 'overflow', 'spray', 'shell', usw.). Es gibt bereits eine Liste gängiger Teilzeichenfolgen, die im Plugin fest codiert ist, sodass es sofort verwendet werden kann. Sie können jedoch eine Liste eigener definierter Teilzeichenfolgen übergeben, in diesem Fall über den Parameter names.
Codebeispiel:
fm = Flashmingo()
print fm.run_plugin('DangerousAPIs', swf=swf)
print fm.run_plugin('SuspiciousNames', swf=swf, names=['spooky'])
FLASHMINGO wird mit einigen nützlichen Plugins ausgeliefert:
Ein Vorlagen-Plugin wird für die einfache Entwicklung bereitgestellt. FLASHMINGO zu erweitern ist recht einfach. Befolgen Sie diese einfachen Schritte:
run-MethodeSie sind startklar :)
docs für automatisch generierte Dokumentation$ pip install sphinxcontrib-napoleon
Nachdem Sie Sphinx zum Erstellen Ihrer Dokumente eingerichtet haben, aktivieren Sie napoleon in der Sphinx-Konfigurationsdatei conf.py:
In conf.py fügen Sie napoleon zur Erweiterungsliste hinzu
extensions = ['sphinxcontrib.napoleon']
Verwenden Sie sphinx-apidoc, um Ihre API-Dokumentation zu erstellen:
$ sphinx-apidoc -f -o docs/source projectdir
Dies erstellt .rst-Dateien, die von Sphinx verarbeitet werden
$ make html
Das war's! :)