
Outil d'analyse et de comparaison de firmware
L'analyse de firmware peut être utilisée pour atteindre plusieurs objectifs intéressants. Le principal est d'identifier la fonctionnalité, les composants et les potentielles faiblesses de sécurité dans un firmware en boîte noire.
L'outil d'analyse et de comparaison de firmware (FACT) vise à automatiser autant que possible le travail manuel d'analyse de firmware. FACT combine un ensemble croissant d'analyses puissantes pour créer une interface unifiée qui amène l'utilisateur d'un échantillon de firmware arbitraire à une analyse terminée. L'une des caractéristiques clés de l'analyse FACT est que les résultats sont
De plus, FACT offre plusieurs façons de naviguer et de visualiser les résultats d'analyse et le contenu du firmware pour une accessibilité facile. L'interface principale de FACT est une interface web basée sur HTML/JS/CSS qui peut être hébergée localement ou partagée via le réseau. En outre, FACT propose une API HTTP de type REST qui peut être explorée avec une interface SwaggerUI intégrée. Quelques fonctionnalités clés de l'interface web sont :
Bien que FACT soit maintenu comme un prototype de recherche, le projet est bien testé, comprend une documentation de base et offre une multitude de fonctionnalités de niveau production. Nous sommes toujours à la recherche de commentaires et de demandes de fonctionnalités.
Plus de détails et quelques captures d'écran se trouvent sur notre page projet.
FACT est conçu comme une application multiprocessus ; plus il y a de cœurs et de RAM, mieux c'est.
| Minimum | Recommandé |
|---|---|
| 4 cœurs | 16 cœurs |
| 8 Go de RAM | 64 Go de RAM |
| 10 Go d'espace disque | 10* Go d'espace disque |
[!NOTE] Environ 10 Go nécessaires pour installer le code FACT, le conteneur et les binaires. Un espace supplémentaire est nécessaire pour le stockage des fichiers décompressés et des résultats d'analyse. Cela peut être sur une partition ou un disque séparé.
Il est principalement possible d'installer FACT sur n'importe quelle distribution Linux, mais l'installateur est limité à
L'installation sur des distributions plus anciennes (par exemple Debian 11 "Bullseye" ou Ubuntu 20.04 "Focal") peut encore fonctionner, mais n'est pas considérée comme stable, car ces distributions ont atteint leur fin de vie.
FACT nécessite Python 3.10–3.14 (devrait être la version par défaut dans toutes les distributions supportées)
Le processus d'installation est largement automatisé et intégré dans un seul script. Certaines fonctionnalités peuvent être sélectionnées spécifiquement. Pour un guide détaillé sur l'installation de FACT, voir INSTALL.md.
[!IMPORTANT] Notez que tout en faisant un usage intensif des conteneurs, FACT contient encore de nombreuses dépendances (et il n'y a pas de désinstallation fournie). Si vous souhaitez garder votre système propre, vous pouvez essayer l'une des options d'installation proposées ci-dessous.
Nous fournissons des boîtes Vagrant mensuelles et prêtes à l'emploi de notre branche master. Vagrant est un moyen simple et pratique de démarrer avec FACT sans avoir à l'installer sur votre machine. Il suffit de configurer Vagrant et d'importer notre boîte fournie dans VirtualBox. Nos boîtes se trouvent sur le site vagrantup !
Consultez comment démarrer avec FACT et Vagrant dans notre tutoriel.
Il existe également une version dockerisée, mais elle n'est actuellement pas maintenue. (voir le dépôt FACT_docker pour plus d'informations).
Vous pouvez démarrer FACT en exécutant le script start_fact.py.
Le script détecte automatiquement tous les composants installés.
src/start_fact.py
Ensuite, FACT est accessible sur http://localhost:5000 (par défaut) ou https://localhost (si FACT est installé avec nginx).
Vous pouvez arrêter le système en appuyant sur Ctrl + c ou en envoyant un SIGTERM au script start_fact.py.
[!CAUTION] FACT n'est pas destiné à être utilisé comme service internet public. L'interface web n'est pas une application durcie. Nous essayons de limiter les problèmes de sécurité en appliquant SecDevOps, mais FACT peut encore présenter des vulnérabilités. Assurez-vous de réinitialiser tous les mots de passe dans la configuration FACT si vous prévoyez d'héberger FACT sur des réseaux non entièrement fiables.
[!TIP] Plus de documentation sur l'utilisation de FACT se trouve dans nos pages wiki.
Vous pouvez également consulter notre documentation Sphinx.
Des informations sur ce qu'est FACT et comment il fonctionne se trouvent également dans les diapositives du
dossier docs.
FACT fournit une API REST. Plus d'informations sur la page wiki.
FACT propose une authentification de base, des rôles et une gestion des utilisateurs optionnels. Plus d'informations sur la page wiki.
La façon la plus simple de contribuer est d'écrire votre propre plugin. Notre manuel du développeur se trouve dans le wiki sur GitHub.
Plugins supplémentaires actuellement disponibles :
Le script src/firmware_import_export.py peut être utilisé pour exporter des fichiers décompressés et des résultats d'analyse et les importer
dans une autre instance FACT.
Les données sont stockées dans une archive ZIP, et c'est également le format attendu par le script lors de l'importation.
Pour exporter les fichiers et les données d'analyse des images firmware analysées, exécutez
python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR]
[!NOTE] Les archives exportées peuvent occuper un espace disque significatif. Il n'y a pas de relation fixe, mais cela peut dépasser la taille du firmware original d'un facteur 2 à 10.
Après cela, vous pouvez importer les fichiers exportés avec
python3 firmware_import_export.py import FW.zip [FW_2.zip ...]
Nous avons eu le plaisir de présenter FACT lors de plusieurs sessions du BlackHat Arsenal.
Merci à @botlabsDev, qui a initialement fourni un Vagrantfile aujourd'hui, cependant, déprécié.
Ce projet est partiellement financé par l'Office fédéral allemand pour la sécurité de l'information (BSI) et d'autres.
Firmware Analysis and Comparison Tool (FACT)
Copyright (C) 2015-2026 Fraunhofer FKIE
Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU telle que publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre choix) toute version ultérieure. Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER.
Voir la licence publique générale GNU pour plus de détails. Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme.
Si ce n'est pas le cas, consultez http://www.gnu.org/licenses/.Certains plugins peuvent avoir des licences différentes. Si c'est le cas, un fichier de licence est fourni dans le dossier du plugin.