
Simplifica la emulación de firmware del D-Link DCS-932L con componentes pre-parcheados e incluye un exploit de Prueba de Concepto para CVE-2024-37606.

¡Bienvenido! Este repositorio proporciona herramientas y un entorno para emular el firmware D-Link DCS-932L y demostrar la vulnerabilidad CVE-2024-37606. Incluye binarios pre-parcheados y bibliotecas necesarias, simplificando la configuración de emulación para que no necesites realizar parches manuales con herramientas como Ghidra.
Este proyecto incluye un exploit de prueba de concepto (CVE-2024-37606-DCS932L.py) para CVE-2024-37606. Esta vulnerabilidad implica un desbordamiento de búfer en el servicio alphapd. Por favor, úsalo de manera responsable y solo con fines educativos.
Haz clic en la foto para ver el video

Se han realizado varias modificaciones para mejorar la funcionalidad y usabilidad del entorno de emulación de firmware:
startup.sh) para simplificar la emulación.libnvram.so original para garantizar el funcionamiento adecuado del emulador NVRAM. El archivo modificado (firmadyne/libnvram.so) está incluido.alphapd usando Ghidra para resolver un error que impedía la recuperación de la IP de sysinfo durante la emulación.qemu-mipsel-static para la emulación MIPS Little Endian.Sigue estos pasos para configurar el entorno de emulación y ejecutar el exploit.
gitqemu-user-staticpython3 y pipgit clone https://github.com/itwizardo/DCS932L-Emulation-CVE-2024-37606-Attack DCS932L-CVE
cd DCS932L-CVE
sudo apt update
sudo apt install qemu-user-static
brew install qemu
# QEMU installation via Homebrew includes user-mode static binaries.
choco install qemu
Copia el binario estático de QEMU al sistema de archivos del firmware:
sudo cp /usr/bin/qemu-mipsel-static ./usr/bin/
Establece el atributo inmutable en el directorio web. Esto evita la modificación de archivos críticos del servidor web necesarios para que la emulación y el exploit funcionen correctamente:
sudo chattr +i etc_ro/web/
Set-ItemProperty -Path ./etc_ro/web -Name IsReadOnly -Value $true
# Note: This sets the directory as Read-Only, preventing accidental changes.
# To make contents read-only too, add -Recurse to Get-ChildItem:
# Get-ChildItem -Path ./etc_ro/web -Recurse | Set-ItemProperty -Name IsReadOnly -Value $true
sudo chflags schg etc_ro/web/
Ingresa al entorno chroot usando el binario QEMU MIPS Little Endian:
sudo chroot . /usr/bin/qemu-mipsel-static /bin/sh
Dentro del shell chroot, ejecuta el script de inicio y arranca el servidor web:
# Execute startup tasks (network setup, etc.)
./startup.sh
# Set environment variables for nvram emulation
export LD_PRELOAD=/firmadyne/libnvram.so
export HOME=.
export RANDFILE=$HOME/.rnd
# Start the vulnerable web server (binds to 0.0.0.0, may take 1-2 mins to fully initialize)
alphapd
Deja esta terminal ejecutándose. Los servicios del dispositivo emulado serán accesibles desde la máquina anfitriona usando la dirección IP configurada por startup.sh (a menudo 192.168.0.1).
Abre una nueva ventana de terminal en tu máquina anfitriona (fuera del entorno chroot).
Abrir en nueva terminal:
cd /path/to/DCS932L # Adjust path if necessary
(Opcional) Instala los paquetes de Python necesarios si el script los requiere (por ejemplo, requests):
# pip3 install requests # Uncomment if needed
Ejecuta el script del exploit. Apunta automáticamente al entorno emulado local (192.168.0.1 configurado por startup.sh):
python3 CVE-2024-37606-DCS932L.py
Para apuntar a una dirección IP diferente, usa el argumento --ip:
# Example: python3 CVE-2024-37606-DCS932L.py --ip <target_ip>
Sigue la salida del script para ver el exploit en acción.
qemu-mipsel-static.qemu-mips-static (Big Endian) resultará en errores Invalid ELF image.alphapd se vincula a 0.0.0.0 dentro del entorno chroot y puede tardar 1-2 minutos en responder completamente tras la ejecución.startup.sh probablemente configura una interfaz de red (p. ej., tap0) con IP 192.168.0.1. Verifica esto si el exploit no logra conectarse./lib/ld-uClibc.so.0) estén presentes en el directorio /lib del entorno chroot.Este proyecto es solo con fines educativos y de investigación. Demuestra una vulnerabilidad conocida (CVE-2024-37606). Los autores no son responsables por el mal uso de esta información o código. Usa este entorno y exploit de manera responsable y ética.
Esto fue desarrollado como parte de un proyecto escolar para Novi Hogeschool.
Georgio T. - itwizardo
¡Siéntete libre de contribuir a este proyecto y mejorar las herramientas para la ingeniería inversa de firmware y el análisis de seguridad!