Desmontar el chip flash para extraer el firmware de un dispositivo misterioso conlleva el riesgo de dañarlo, mientras que leer el chip en el circuito también puede fallar. [Matthew “wrongbaud” Alt] explica el proceso para identificar, registrar y analizar las operaciones de lectura SPI que la popular serie de chips flash W25Q realiza durante el arranque, utilizando en su lugar un analizador lógico. Como el método se limita a los datos que el procesador realmente lee, es posible que no proporcione el contenido completo del chip.
Alt explica primero los fundamentos de la comunicación SPI y cómo interpretar las señales con ayuda de la hoja de datos del chip flash. A continuación, procesa los registros del analizador lógico con Scapy y los convierte en un archivo de imagen que puede transferirse a binwalk. La herramienta de Python Scapy también puede utilizarse con este tipo de datos, además de con paquetes de red.
Aunque la imagen del firmware contiene el bootloader y el kernel de Linux, se observa que falta la sección del sistema de archivos. Esto se debe a que el procesador cambia al modo Quad-SPI, más rápido y que utiliza dos líneas de datos adicionales, antes de leer el sistema de archivos. Tras realizar registros y procesamientos adicionales, las dos imágenes se combinan con un comando de una sola línea de dd. Los trabajos de Alt también incluyen una guía de hacking de hardware y análisis sobre fault injection.
Por qué es importante
Este enfoque reduce el riesgo de dañar el dispositivo y permite a los investigadores monitorizar la comunicación real en la placa, ya que hace posible trabajar durante el análisis del firmware sin desmontar el chip. Sin embargo, dado que el resultado refleja las secciones a las que accede el procesador durante el arranque, y no todo el contenido almacenado en la memoria, el alcance de la imagen obtenida está limitado desde el principio. En particular, el cambio de SPI a Quad-SPI muestra por qué registrar únicamente las señales estándar puede dar lugar a un resultado incompleto y exige que trabajos similares tengan también en cuenta las líneas de datos utilizadas. Esto pone de manifiesto para los investigadores de hardware y quienes realizan ingeniería inversa que el método no es suficiente por sí solo y que pueden ser necesarios pasos adicionales de registro y procesamiento para completar las secciones que faltan.