El análisis de firmware puede ser un desafío difícil con muchas tareas involucradas en su ejecución efectiva.
Muchas de estas tareas pueden realizarse automáticamente mediante nuevos enfoques o mediante la implementación de herramientas existentes.
A través de esto, un analista de seguridad tiene la capacidad de centrarse en la tarea de analizar el firmware y encontrar sus vulnerabilidades.
FACT implementa esta automatización, lo que lleva a un análisis más completo en general, así como a un enorme aumento en la velocidad en la búsqueda de vulnerabilidades.
La herramienta de Análisis y Comparación de Firmware, también conocida como FACT, está destinada a automatizar el Análisis de Seguridad de Firmware en enrutadores, IoT, UEFI, cámaras web, drones, etc., y es fácil de usar a través de una interfaz web, sistemas de complementos e integrada en API REST.
Extracción de Firmware
El proceso de extracción de una imagen de firmware podría llevar a un gran consumo de tiempo.
Esto se debe al hecho de que, al principio, necesitas identificar el formato del contenedor y, posteriormente, encontrar el desempaquetador adecuado para el trabajo en cuestión.
Si no hay disponible una herramienta de extracción, incluso podrías tener que probar un extractor de archivos como binwalk para extraer al menos algunos de los componentes del firmware.
Cuando esta tarea se ejecuta eficazmente, tienes que repetir estas tareas para cada capa múltiples veces.
FACT puede automatizar todo el proceso.
Análisis de Firmware
Lo siguiente que quieres hacer es averiguar tanto como puedas sobre el firmware para identificar los riesgos y vulnerabilidades potenciales.
FACT puede resolver estos desafíos, incluyendo: Identificación de Software, como el sistema operativo utilizado, programas presentes, versiones de los programas, los servicios que se inician al arrancar, y cualquier vulnerabilidad conocida.
Puede encontrar credenciales de inicio de sesión así como contraseñas codificadas con detección de material criptográfico como claves privadas y certificados.
Por lejos, una de las mejores características es la detección de la arquitectura de CPU que se necesita para la emulación y desensamblaje, y puedes incluso verificar si un ejecutable está utilizando QEMU y buscar fallos de implementación o CWEs.
Comparación de Firmware
También podrías necesitar comparar muestras de firmware si necesitas saber dónde un fabricante solucionó un problema en una nueva versión de firmware.
También podrías estar interesado en saber si el firmware en tu dispositivo es el original proporcionado por el fabricante.
Si estos difieren, querrás averiguar qué partes han cambiado para investigaciones adicionales.
FACT automatiza estos desafíos identificando los archivos cambiados o iguales, así como las versiones de software modificadas.
Encontrar Otras Imágenes de Firmware Afectadas
Cuando encuentras una nueva vulnerabilidad o un nuevo formato de contenedor, podrías necesitar saber si otras imágenes de firmware comparten tus hallazgos.
FACT almacena todos los archivos de firmware y los resultados de análisis en una base de datos que se puede buscar, permitiéndote buscar patrones de bytes en todos los archivos desempaquetados, así como cualquier tipo de resultado.
Cómo Instalar
La Herramienta de Análisis y Comparación de Firmware, también conocida como el Marco de Análisis de Firmware de Fraunhofer o FAF, puede automatizar la mayor parte del proceso de análisis de firmware al desempaquetar archivos de firmware arbitrarios y procesar varios análisis.
Puede comparar varias imágenes o archivos individuales.
El desempaquetado, análisis y comparaciones se basan en complementos que garantizan máxima flexibilidad y expandibilidad.
FACT está diseñado como una aplicación multiproceso, y como tal, cuantos más núcleos y RAM tengas, mejor podrá funcionar.
Cuando se trata de los requisitos, en el lado del hardware, necesitas un mínimo de 4 núcleos y 8 GB de RAM con 10 GB de espacio en disco para que funcione, sin embargo, la cantidad recomendada es de 16 núcleos y 64 GB de RAM con más de 10 GB de espacio para que funcione de manera efectiva. Cuando se trata de los requisitos, en el lado del software, necesitas git, python 3.5 o 3.8, y un sistema operativo Linux.
Los 10 GB son necesarios para configurar el código FACT, el contenedor y los binarios.
Se requiere espacio adicional para el almacenamiento de resultados, pero estos pueden hacerse en particiones o unidades separadas.
Teóricamente puedes instalar FACT en cualquier distribución de Linux, pero el instalador en sí funciona de manera nativa en Ubuntu 16.04, 18.04 y 20.04, así como en Ubuntu 19.04, Debian 9 o 10, y Kali 201.3 y 2019.4.
La instalación está envuelta en un solo script.
Para comenzar a usar FACT, puedes ejecutar los scripts start_all_installed_fact_components.
Estos scripts detectan automáticamente todos los componentes instalados.
Estos pueden iniciarse escribiendo el siguiente comando:
$ ./start_all_installed_fact_components
Después de esto, FACT puede ser accedido en http://localhost:5000 y https://localhost (nginx).
Puedes apagar el sistema presionando CTRL+C o enviando un SIGTERM al script start_all_installed_fact_components.
Cómo Extender
FACT puede ser extendido a través de complementos.
La REST_API está disponible para conectarse a herramientas externas.
Casi todas las funciones de la interfaz web están disponibles a través de REST también.
Aquí está cómo funciona el análisis inicial de FACT
Aquí está cómo funciona la comparación de FACT
Hay un total de tres tipos de complementos, incluyendo un desempaquetador, análisis y comparación.
FACT se basa en un concepto de complemento.
Los extractores, características de análisis y funcionalidades de comparación se implementan como complementos.
La API REST
La API REST de FACT está destinada a ofrecer cerca del 100% de la funcionalidad de FACT en una interfaz que se puede escribir en scripts e integrar.
La API no cumple perfectamente con todas las directrices REST, pero permite una interfaz comprensible y eficiente.
Todos los datos se envían como cuerpo de mensaje y todos los datos recibidos de la API son de formato application/json.
Esto permite una fácil integración en la mayoría de los lenguajes de programación, comúnmente javascript y python.
Dado que json no admite datos binarios, todos los datos binarios se codifican adicionalmente en base64.
La API ofrece una serie de parámetros de URL para acompañar las solicitudes GET.
Estos parámetros para cada punto de acceso se enumeran a través de tablas al comienzo del punto de acceso.
La API no tiene versiones y está sujeta a cambios.
Cuando se trata de autenticación, si la opción de autenticación está habilitada en la configuración, cada solicitud REST debe ir acompañada de una clave API en el encabezado HTTP.
Si a su usuario se le ha dado la clave ejemplar ABCDEFG= , una solicitud al endpoint /rest/binary debería verse algo así:
curl http://localhost:5000/rest/binary/ceb0b13da1e765ec105460cf68367b78ed78b99fcbdd7654999a07b5b87e8f16_31 -X GET --header 'Authorization: ABCDEFG=' -L.
Tenga en cuenta que hay muchas maneras en las que puede contribuir a FACT. Por ejemplo, puede escribir un complemento de desempaquetado, comparación o análisis. Puede desarrollar un complemento dentro de su propio repositorio, que está bajo una licencia y puede ser añadido a una instalación local de FACT como un submódulo de git. FACT es desarrollado por Fraunhofer FKIE y la Comunidad FACT en su conjunto. El desarrollo es financiado en parte por la Oficina Federal Alemana para la Seguridad de la Información o BSI y otros.
La belleza de FACT reside en su facilidad de instalación y facilidad de integración, ya que está basado en un concepto de complementos, lo que significa que los extractores, características de análisis y funcionalidades de comparación pueden implementarse fácilmente como un complemento sin tener que profundizar demasiado en el código, como decimos.
Si planeas desarrollar para FACT, establece throw_exceptions en src/config/main.cfg -> ExperteSettings a true. Un beneficio adicional es el hecho de que obtienes acceso a una lista de todos los complementos disponibles, por lo que tienes una gran comprensión desde el principio sobre lo que ya está desarrollado para FACT y lo que no, para que puedas contribuir sin preocuparte si ya se ha hecho antes y si tus esfuerzos serán apreciados.