
Firmware-Analyse- und Vergleichstool
Die Firmware-Analyse kann verwendet werden, um mehrere interessante Ziele zu erreichen. Die wichtigsten davon sind die Identifizierung von Funktionalitäten, Komponenten und potenziellen Sicherheitsschwachstellen in Black-Box-Firmware.
Das Firmware-Analyse- und Vergleichswerkzeug (FACT) soll so viel wie möglich von der manuellen Firmware-Analysearbeit automatisieren. FACT kombiniert eine wachsende Sammlung leistungsstarker Analysen, um eine einheitliche Schnittstelle zu schaffen, die den Benutzer von einer beliebigen Firmware-Probe zu einer fertigen Analyse führt. Einige der wichtigsten Merkmale der FACT-Analyse sind, dass die Ergebnisse
Darüber hinaus bietet FACT mehrere Möglichkeiten zur Navigation und Visualisierung von Analyseergebnissen und Firmware-Inhalten für eine einfache Zugänglichkeit. Die Hauptschnittstelle von FACT ist eine auf html/js/css basierende Weboberfläche, die lokal gehostet oder über das Netzwerk geteilt werden kann. Zusätzlich bietet FACT eine REST-ähnliche HTTP-API, die mit einer integrierten SwaggerUI erkundet werden kann. Einige Hauptmerkmale der Weboberfläche sind:
Obwohl FACT als Forschungsprototyp gewartet wird, ist das Projekt gut getestet, enthält eine grundlegende Dokumentation und bietet eine Vielzahl von produktionsreifen Funktionen. Wir sind immer offen für Feedback und Funktionswünsche.
Weitere Details und einige Screenshots finden Sie auf unserer Projektseite.
FACT ist als Multiprozess-Anwendung konzipiert, je mehr Kerne und RAM, desto besser.
| Minimal | Empfohlen |
|---|---|
| 4 Kerne | 16 Kerne |
| 8 GB RAM | 64 GB RAM |
| 10 GB Festplatte | 10* GB Festplatte |
[!NOTE] Etwa 10 GB werden benötigt, um FACT-Code, Container und Binärdateien einzurichten. Zusätzlicher Platz ist für die Speicherung entpackter Dateien und Analyseergebnisse erforderlich. Dies kann auf einer separaten Partition oder einem separaten Laufwerk erfolgen.
Es ist grundsätzlich möglich, FACT auf jeder Linux-Distribution zu installieren, aber das Installationsprogramm ist beschränkt auf
Die Installation auf älteren Distributionen (z. B. Debian 11 "Bullseye" oder Ubuntu 20.04 "Focal") funktioniert möglicherweise noch, gilt aber nicht als stabil, da diese Distributionen das Ende ihrer Lebensdauer erreicht haben.
FACT benötigt Python 3.10–3.14 (sollte in allen unterstützten Distributionen die Standardversion sein)
Der Einrichtungsprozess ist weitgehend automatisiert und in einem einzigen Skript zusammengefasst. Einige Funktionen können jedoch spezifisch ausgewählt werden. Eine ausführliche Anleitung zur Installation von FACT finden Sie in INSTALL.md.
[!IMPORTANT] Beachten Sie, dass FACT zwar umfangreich von Containern Gebrauch macht, aber dennoch viele Abhängigkeiten enthält (und es gibt keine Deinstallation). Wenn Sie Ihr System sauber halten möchten, können Sie eine der folgenden Einrichtungsoptionen ausprobieren.
Wir stellen monatlich einsatzbereite Vagrant-Boxen unseres Master-Branches zur Verfügung. Vagrant ist eine einfache und bequeme Möglichkeit, mit FACT zu beginnen, ohne es auf Ihrem Rechner installieren zu müssen. Richten Sie einfach Vagrant ein und importieren Sie unsere bereitgestellte Box in VirtualBox. Unsere Boxen finden Sie auf der Vagrantup-Website!
Erfahren Sie, wie Sie mit FACT und Vagrant loslegen, in unserem Tutorial.
Es gibt auch eine dockerisierte Version, die derzeit jedoch nicht gewartet wird. (siehe das FACT_docker-Repository für weitere Informationen).
Sie können FACT starten, indem Sie das Skript start_fact.py ausführen.
Das Skript erkennt automatisch alle installierten Komponenten.
src/start_fact.py
Anschließend ist FACT unter http://localhost:5000 (Standard) oder https://localhost (wenn FACT mit nginx installiert ist) erreichbar.
Sie können das System durch Drücken von Strg + c oder durch Senden eines SIGTERM an das Skript start_fact.py herunterfahren.
[!CAUTION] FACT ist nicht für die Nutzung als öffentlicher Internetdienst gedacht. Die Weboberfläche ist keine gehärtete Anwendung. Wir versuchen, Sicherheitsprobleme durch die Anwendung von SecDevOps zu begrenzen, aber FACT kann dennoch Sicherheitslücken aufweisen. Stellen Sie sicher, dass Sie alle Passwörter in der FACT-Konfiguration zurücksetzen, wenn Sie FACT in nicht vollständig vertrauenswürdigen Netzwerken hosten möchten.
[!TIP] Weitere Dokumentation zur Nutzung von FACT finden Sie auf unseren Wiki-Seiten.
Sie können auch einen Blick in unsere Sphinx-Dokumentation werfen.
Informationen darüber, was FACT ist und wie es funktioniert, finden Sie auch in den Folien im
docs-Ordner.
FACT bietet eine REST-API. Weitere Informationen finden Sie auf der Wiki-Seite.
FACT bietet eine optionale grundlegende Authentifizierungs-, Rollen- und Benutzerverwaltung. Weitere Informationen finden Sie auf der Wiki-Seite.
Der einfachste Weg, einen Beitrag zu leisten, ist das Schreiben Ihres eigenen Plugins. Unser Entwicklerhandbuch finden Sie im Wiki auf GitHub.
Derzeit verfügbare zusätzliche Plugins:
Das Skript src/firmware_import_export.py kann verwendet werden, um entpackte Dateien und Analyseergebnisse zu exportieren und in eine andere FACT-Instanz zu importieren.
Die Daten werden als ZIP-Archiv gespeichert, und dies ist auch das Format, das das Skript beim Import erwartet.
Um Dateien und Analysedaten von analysierten Firmware-Images zu exportieren, führen Sie aus
python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR]
[!NOTE] Die exportierten Archive können erheblichen Speicherplatz beanspruchen. Es gibt keine feste Relation, aber sie können die Größe der ursprünglichen Firmware um den Faktor 2 - 10 überschreiten.
Anschließend können Sie die exportierten Dateien importieren mit
python3 firmware_import_export.py import FW.zip [FW_2.zip ...]
Wir waren stolz darauf, FACT in einer Reihe von BlackHat-Arsenal-Sitzungen zu präsentieren.
Dank an @botlabsDev, der ursprünglich eine Vagrantfile bereitgestellt hat, die jedoch inzwischen veraltet ist.
Dieses Projekt wird teilweise vom Bundesamt für Sicherheit in der Informationstechnik (BSI) und anderen finanziert.
Firmware Analysis and Comparison Tool (FACT)
Copyright (C) 2015-2026 Fraunhofer FKIE
Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version, weitergeben und/oder modifizieren. Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, aber OHNE JEDE GEWÄHRLEISTUNG; ohne die stillschweigende Gewährleistung der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
Siehe die GNU General Public License für weitere Details. Sie sollten eine Kopie der GNU General Public License zusammen mit diesem Programm erhalten haben.
Falls nicht, siehe http://www.gnu.org/licenses/.Einige Plugins können andere Lizenzen haben. In diesem Fall befindet sich eine Lizenzdatei im Ordner des Plugins.