Extraer imagen jffs2

Cuando accedemos a un dispositivo embebido una de las cosas que solemos hacer es echar un vistazo a /proc/mtd para ver los montajes de los bloques mtd y suele haber un bloque que es el contiene la imagen del sistema embedibo.

Uno de los formatos de ficheros con el que habitualmente nos encontramos es jffs2 [1]

Para extraer el contenido tenemos varias herramientas que podemos usar:

vía script

Podemos copiar el contenido a un dispositivo mtd local y montarlo como jffs de la siguiente manera. ( Estoy usando image.jffs2)


modprobe mtdram
modprobe jffs2
modprobe mtdchar
modprobe mtdblock
dd if=image.jffs2 of=/dev/mtd0
mkdir -p jffs-root
mount -t jffs2 /dev/mtdblock0 jffs-root/

unjffs2 de firmware mod kit

Es básicamente el mismo script pero mejorado, ya que puede darse que tengamos una image ‘big endian’ este script puede convertir la imagen para su correcta extracción. Firmware mod kit[2] es un conjunto de herramientas empaquetadas para todo este tipo de tareas. Requiere el paquete mtd-utils que provee jffs2dump y debe ejecutarse como root ya que jffs2dump sólo es ejecutable por el usuario root.

apt-get install mtd-utils
git clone https://github.com/mirror/firmware-mod-kit
sudo src/jffs2/unjffs2 image.jffs2 jffs-root

jefferson

Es una herramienta de extracción de jffs2 hecha en python

git clone https://github.com/sviehb/jefferson
sudo python setup.py install
sudo pip install cstruct
sudo apt-get install python-lzma

Extraemos la imagen así
jefferson image.jffs2 -d jffs-root

Personalmente el mejor resultado ha sido con el script de firmware mod kit, aquí dejo algunos enlaces de interés que pueden ayudarte si ninguna de estas herramientas ha funcionado [3] [4]


[1] https://es.wikipedia.org/wiki/JFFS2
[2] https://github.com/mirror/firmware-mod-kit
[3] https://www.owasp.org/index.php/IoT_Firmware_Analysis
[4] http://wiki.securityweekly.com/wiki/index.php/Reverse_Engineering_Firmware_Primer

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *