
Herramienta de Análisis y Comparación de Firmware
El análisis de firmware se puede utilizar para lograr varios objetivos interesantes. Los principales son identificar funcionalidades, componentes y posibles debilidades de seguridad en firmware de caja negra.
La Herramienta de Análisis y Comparación de Firmware (FACT) está diseñada para automatizar tanto como sea posible el trabajo manual de análisis de firmware. FACT combina un conjunto creciente de análisis potentes para crear una interfaz unificada que lleva al usuario desde una muestra de firmware arbitraria hasta un análisis terminado. Algunas de las características clave del análisis de FACT son que los resultados son
Además, FACT ofrece múltiples formas de navegar y visualizar los resultados del análisis y los contenidos del firmware para un fácil acceso. La interfaz principal de FACT es una interfaz web basada en html/js/css que se puede alojar localmente o compartir a través de la red. Además, FACT ofrece una API HTTP tipo REST que se puede explorar con un SwaggerUI integrado. Algunas características clave de la interfaz web son:
Si bien FACT se mantiene como un prototipo de investigación, el proyecto está bien probado, incluye una línea base de documentación y ofrece multitud de funciones de nivel de producción. Siempre estamos abiertos a comentarios y solicitudes de funciones.
Se pueden encontrar más detalles y algunas capturas de pantalla en nuestra página del proyecto.
FACT está diseñado como una aplicación multiproceso; cuantos más núcleos y RAM, mejor.
| Mínimo | Recomendado |
|---|---|
| 4 Núcleos | 16 Núcleos |
| 8 GB RAM | 64 GB RAM |
| 10 GB espacio en disco | 10* GB espacio en disco |
[!NOTA] Se requieren aproximadamente 10 GB para configurar el código, el contenedor y los binarios de FACT. Se necesita espacio adicional para almacenar los archivos desempaquetados y los resultados del análisis. Esto puede estar en una partición o unidad separada.
Es posible instalar FACT en cualquier distribución de Linux, pero el instalador se limita a
La instalación en distribuciones más antiguas (por ejemplo, Debian 11 "Bullseye" o Ubuntu 20.04 "Focal") puede seguir funcionando, pero no se considera estable, ya que estas distribuciones han llegado al final de su vida útil.
FACT requiere Python 3.10–3.14 (debería ser el predeterminado en todas las distribuciones compatibles)
El proceso de configuración está mayormente automatizado y envuelto en un solo script. Sin embargo, algunas funciones se pueden seleccionar específicamente. Para obtener una guía detallada sobre cómo instalar FACT, consulte INSTALL.md.
[!IMPORTANTE] Tenga en cuenta que, si bien hace un uso extensivo de contenedores, FACT todavía contiene muchas dependencias (y no se proporciona una desinstalación). Si desea mantener su sistema limpio, puede probar una de las opciones de configuración proporcionadas a continuación.
Proporcionamos cajas vagrant mensuales y listas para usar de nuestra rama master. Vagrant es una forma fácil y conveniente de comenzar con FACT sin tener que instalarlo en su máquina. Simplemente configure vagrant e importe nuestra caja proporcionada en VirtualBox. ¡Nuestras cajas se pueden encontrar en el sitio web de vagrantup!
Vea cómo comenzar con FACT y vagrant en nuestro tutorial.
También hay una versión dockerizada, pero actualmente no tiene mantenimiento. (consulte el repositorio FACT_docker para obtener más información).
Puede iniciar FACT ejecutando el script start_fact.py.
El script detecta todos los componentes instalados automáticamente.
src/start_fact.py
Después, se puede acceder a FACT en http://localhost:5000 (predeterminado) o https://localhost (si FACT está instalado con nginx).
Puede apagar el sistema presionando Ctrl + c o enviando una señal SIGTERM al script start_fact.py.
[!PRECAUCIÓN] FACT no está diseñado para usarse como un servicio público de Internet. La interfaz web no es una aplicación endurecida. Intentamos mantener los problemas de seguridad limitados aplicando SecDevOps, pero FACT aún puede ofrecer vulnerabilidades. Asegúrese de restablecer todas las contraseñas en la configuración de FACT si planea alojar FACT en redes que no sean totalmente confiables.
[!CONSEJO] Se puede encontrar más documentación sobre cómo usar FACT en nuestras páginas wiki.
También puede echar un vistazo a nuestra documentación de Sphinx.
También se puede encontrar información sobre qué es FACT y cómo funciona en las diapositivas en la
carpeta docs.
FACT proporciona una API REST. Se puede encontrar más información en la página wiki.
FACT proporciona una autenticación básica opcional, gestión de roles y usuarios. Se puede encontrar más información en la página wiki.
La forma más fácil de contribuir es escribir su propio complemento. Nuestro Manual de Desarrollador se puede encontrar en el wiki en GitHub.
Complementos adicionales actualmente disponibles:
El script src/firmware_import_export.py se puede usar para exportar archivos desempaquetados y resultados de análisis e importarlos
en otra instancia de FACT.
Los datos se almacenan como un archivo ZIP, y este es también el formato que el script espera durante la importación.
Para exportar archivos y datos de análisis de imágenes de firmware analizadas, ejecute
python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR]
[!NOTA] Los archivos exportados pueden ocupar un espacio de disco significativo. No hay una relación fija, pero puede superar el tamaño del firmware original por un factor de 2 a 10.
Después de esto, puede importar los archivos exportados con
python3 firmware_import_export.py import FW.zip [FW_2.zip ...]
Hemos tenido el placer de mostrar FACT en varias sesiones del Arsenal de BlackHat.
Gracias a @botlabsDev, quien inicialmente proporcionó un Vagrantfile que ahora, sin embargo, está obsoleto.
Este proyecto está parcialmente financiado por la Oficina Federal Alemana de Seguridad de la Información (BSI) y otros.
Herramienta de Análisis y Comparación de Firmware (FACT)
Copyright (C) 2015-2026 Fraunhofer FKIE
Este programa es software libre: puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR.
Consulte la Licencia Pública General de GNU para obtener más detalles. Debería haber recibido una copia de la Licencia Pública General de GNU junto con este programa.
Si no es así, consulte http://www.gnu.org/licenses/.Algunos complementos pueden tener licencias diferentes. Si es así, se proporciona un archivo de licencia en la carpeta del complemento.