
Semplifica l'emulazione del firmware D-Link DCS-932L con componenti pre-patchati e include un exploit proof-of-concept per la CVE-2024-37606.

Benvenuto! Questo repository fornisce strumenti e un ambiente per emulare il firmware della D-Link DCS-932L e dimostrare la vulnerabilità CVE-2024-37606. Include binari pre-patchati e le librerie necessarie, semplificando la configurazione dell'emulazione in modo che tu non debba eseguire patch manuali con strumenti come Ghidra.
Questo progetto include un proof-of-concept exploit (CVE-2024-37606-DCS932L.py) per la CVE-2024-37606. Questa vulnerabilità comporta un buffer overflow nel servizio alphapd. Si prega di usarlo in modo responsabile e solo per scopi educativi.
Clicca sulla foto per vedere il video

Sono state apportate diverse modifiche per migliorare funzionalità e usabilità dell'ambiente di emulazione del firmware:
startup.sh) per semplificare l'emulazione.libnvram.so originale per garantire il corretto funzionamento dell'emulatore NVRAM. Il file modificato (firmadyne/libnvram.so) è incluso.alphapd usando Ghidra per risolvere un errore che impediva il recupero dell'IP da sysinfo durante l'emulazione.qemu-mipsel-static per l'emulazione MIPS Little Endian.Segui questi passaggi per configurare l'ambiente di emulazione ed eseguire l'exploit.
gitqemu-user-staticpython3 e 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
# L'installazione di QEMU tramite Homebrew include i binari statici in modalità utente.
choco install qemu
Copia il binario statico di QEMU nel filesystem del firmware:
sudo cp /usr/bin/qemu-mipsel-static ./usr/bin/
Imposta l'attributo immutabile sulla directory web. Questo impedisce la modifica di file critici del server web necessari per il corretto funzionamento dell'emulazione e dell'exploit:
sudo chattr +i etc_ro/web/
Set-ItemProperty -Path ./etc_ro/web -Name IsReadOnly -Value $true
# Nota: imposta la directory come di sola lettura, prevenendo modifiche accidentali.
# Per rendere di sola lettura anche i contenuti, aggiungi -Recurse a Get-ChildItem:
# Get-ChildItem -Path ./etc_ro/web -Recurse | Set-ItemProperty -Name IsReadOnly -Value $true
sudo chflags schg etc_ro/web/
Entra nell'ambiente chroot usando il binario QEMU MIPS Little Endian:
sudo chroot . /usr/bin/qemu-mipsel-static /bin/sh
Dentro la shell chroot, esegui lo script di avvio e avvia il server web:
# Esegue le attività di avvio (configurazione di rete, ecc.)
./startup.sh
# Imposta le variabili d'ambiente per l'emulazione nvram
export LD_PRELOAD=/firmadyne/libnvram.so
export HOME=.
export RANDFILE=$HOME/.rnd
# Avvia il server web vulnerabile (si vincola a 0.0.0.0, potrebbe richiedere 1-2 minuti per l'inizializzazione completa)
alphapd
Lascia questo terminale in esecuzione. I servizi del dispositivo emulato saranno accessibili dalla macchina host tramite l'indirizzo IP configurato da startup.sh (spesso 192.168.0.1).
Apri una nuova finestra di terminale sulla macchina host (fuori dall'ambiente chroot).
Apri in un nuovo terminale:
cd /path/to/DCS932L # Regola il percorso se necessario
(Facoltativo) Installa i pacchetti Python richiesti se lo script ne ha bisogno (ad es. requests):
# pip3 install requests # Rimuovi il commento se necessario
Esegui lo script dell'exploit. Punta automaticamente all'ambiente emulato locale (192.168.0.1 configurato da startup.sh):
python3 CVE-2024-37606-DCS932L.py
Per puntare a un indirizzo IP diverso, usa l'argomento --ip:
# Esempio: python3 CVE-2024-37606-DCS932L.py --ip <target_ip>
Segui l'output dello script per vedere l'exploit in azione.
qemu-mipsel-static.qemu-mips-static (Big Endian) produrrà errori Invalid ELF image.alphapd si vincola a 0.0.0.0 all'interno dell'ambiente chroot e potrebbe richiedere 1-2 minuti per diventare completamente reattivo dopo l'esecuzione.startup.sh probabilmente configura un'interfaccia di rete (ad es. tap0) con IP 192.168.0.1. Verifica questo se l'exploit non riesce a connettersi./lib/ld-uClibc.so.0) siano presenti nella directory /lib dell'ambiente chroot.Questo progetto è solo per scopi educativi e di ricerca. Dimostra una vulnerabilità nota (CVE-2024-37606). Gli autori non sono responsabili per qualsiasi uso improprio di queste informazioni o del codice. Usa questo ambiente e questo exploit in modo responsabile ed etico.
Questo è stato sviluppato come parte di un progetto scolastico per la Novi Hogeschool.
Georgio T. - itwizardo
Sentiti libero di contribuire a questo progetto e migliorare gli strumenti per il reverse engineering dei firmware e l'analisi della sicurezza!