
Descifrar imágenes de firmware SonicOSX cifradas
Desarrollado por el equipo X en Bishop Fox
Una herramienta para descifrar el firmware del firewall SonicOSX NSv (versión 7.1.1+). Ejecútala primero contra una imagen OVA para extraer las claves; después también puede descifrar imágenes SIG. El firmware se puede obtener desde el sitio de soporte de SonicWall con una licencia válida.
Las claves parecen ser específicas de cada modelo, por lo que esta herramienta solo funcionará con imágenes NSv de VMware. Obtener claves para otros modelos podría, en teoría, permitir descifrar otras imágenes.
Esta herramienta se ha hecho pública para apoyar la investigación de seguridad de buena fe sobre SonicOSX. Para una explicación detallada, visita el blog de Bishop Fox.
Debian Linux:
sudo apt update && sudo apt install -y $(awk '{print $1}' requirements/apt.txt)
python3 -m pip install -r requirements/pip.txt
Docker:
docker build -t sonicrack .
Debian Linux:
$ ./sonicrack.py -h
usage: sonicrack.py [-h] [-k KEYS_DIR] [-o OUTPUT_DIR] IMAGE_PATH
A tool to decrypt SonicOSX NSv firmware. Run it against an OVA image first to extract keys, then it can also decrypt SIG images.
positional arguments:
IMAGE_PATH Path to encrypted firmware image (supported file extensions: .ova, .sig)
options:
-h, --help show this help message and exit
-k KEYS_DIR, --keys KEYS_DIR
Directory path where keys are stored (defaults to ./keys)
-o OUTPUT_DIR, --output OUTPUT_DIR
Directory path where decrypted firmware is saved (defaults to ./)
NOTA: Ejecuta con
sudoal descifrar imágenes OVA. Se necesitan privilegios elevados para montar volúmenes.
Docker:
docker run -it --rm -v .:/data sonicrack ./sonicrack.py --keys /data/keys --output /data /data/<IMAGE_PATH>
NOTA: Ejecuta con
--privilegedal descifrar imágenes OVA. Se necesitan privilegios elevados para montar volúmenes.
Descifrar una imagen OVA:
$ docker run -it --privileged --rm -v .:/data sonicrack ./sonicrack.py --keys /data/keys --output /data /data/nsv-vmware.7.1.1-7047-R5557.ova
[*] Extracting files from OVA archive
[*] Extracting keys from bootloader
[*] Decrypting firmware image
[+] Successfully decrypted soniccorex-image-release-nsv-vmware-20240205204943.rootfs.ext4
Descifrar una imagen SIG después de extraer las claves de una imagen OVA:
$ docker run -it --rm -v .:/data sonicrack ./sonicrack.py --keys /data/keys --output /data /data/sw_nsv_vmware_eng.7.1.2-7019-R6288.bin.sig
[*] Decrypting firmware image
[+] Successfully decrypted soniccorex-image-release-nsv-vmware-20240709184216.rootfs.ext4
Intentar descifrar una imagen SIG antes de extraer las claves no funcionará:
$ docker run -it --rm -v .:/data sonicrack ./sonicrack.py --keys /data/keys --output /data /data/sw_nsv_vmware_eng.7.1.2-7019-R6288.bin.sig
[-] Keys must be extracted from an OVA image before a SIG image can be decrypted
[-] If already extracted, use --keys to indicate the directory where they are saved
Intentar descifrar una imagen de un modelo diferente no funcionará:
$ docker run -it --rm -v .:/data sonicrack ./sonicrack.py --keys /data/keys --output /data /data/sw_nsa_6700_eng.7.1.2-7019-R6288.bin.sig
[*] Decrypting firmware image
[-] Failed to decrypt FW key
Este proyecto está licenciado bajo la GNU General Public License v3.0.