
Vereinfacht die D-Link DCS-932L Firmware-Emulation mit vorab gepatchten Komponenten und enthält einen Proof-of-Concept-Exploit für CVE-2024-37606.

Willkommen! Dieses Repository bietet Werkzeuge und eine Umgebung, um die Firmware des D-Link DCS-932L zu emulieren und die CVE-2024-37606-Sicherheitslücke zu demonstrieren. Es enthält bereits gepatchte Binärdateien und notwendige Bibliotheken, was die Einrichtung der Emulation vereinfacht, sodass Sie kein manuelles Patchen mit Tools wie Ghidra durchführen müssen.
Dieses Projekt enthält einen Proof-of-Concept-Exploit (CVE-2024-37606-DCS932L.py) für CVE-2024-37606. Diese Sicherheitslücke beinhaltet einen Pufferüberlauf im alphapd-Dienst. Bitte verwenden Sie dies verantwortungsvoll und nur zu Bildungszwecken.
Klicken Sie auf das Foto, um das Video anzusehen

Es wurden mehrere Änderungen vorgenommen, um die Funktionalität und Benutzerfreundlichkeit der Firmware-Emulationsumgebung zu verbessern:
startup.sh) wurde hinzugefügt, um die Emulation zu vereinfachen.libnvram.so, um die ordnungsgemäße Funktion des NVRAM-Emulators sicherzustellen. Die modifizierte Datei (firmadyne/libnvram.so) ist enthalten.alphapd-Binary wurde mit Ghidra gepatcht, um einen Fehler zu beheben, der den IP-Abruf von sysinfo während der Emulation verhinderte.qemu-mipsel-static wurde für die MIPS-Little-Endian-Emulation hinzugefügt.Befolgen Sie diese Schritte, um die Emulationsumgebung einzurichten und den Exploit auszuführen.
gitqemu-user-staticpython3 und 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
# Die QEMU-Installation über Homebrew enthält statische Binärdateien im Benutzermodus.
choco install qemu
Kopieren Sie das statische QEMU-Binary in das Dateisystem der Firmware:
sudo cp /usr/bin/qemu-mipsel-static ./usr/bin/
Setzen Sie das unveränderliche Attribut für das Webverzeichnis. Dies verhindert die Änderung kritischer Webserverdateien, die für die Emulation und den Exploit benötigt werden:
sudo chattr +i etc_ro/web/
Set-ItemProperty -Path ./etc_ro/web -Name IsReadOnly -Value $true
# Hinweis: Dies setzt das Verzeichnis auf schreibgeschützt, um versehentliche Änderungen zu verhindern.
# Um auch den Inhalt schreibgeschützt zu machen, fügen Sie -Recurse zu Get-ChildItem hinzu:
# Get-ChildItem -Path ./etc_ro/web -Recurse | Set-ItemProperty -Name IsReadOnly -Value $true
sudo chflags schg etc_ro/web/
Betreten Sie die chroot-Umgebung mit dem MIPS-Little-Endian-QEMU-Binary:
sudo chroot . /usr/bin/qemu-mipsel-static /bin/sh
Innerhalb der chroot-Shell führen Sie das Startskript aus und starten den Webserver:
# Startaufgaben ausführen (Netzwerkeinrichtung usw.)
./startup.sh
# Umgebungsvariablen für die nvram-Emulation setzen
export LD_PRELOAD=/firmadyne/libnvram.so
export HOME=.
export RANDFILE=$HOME/.rnd
# Starten des anfälligen Webservers (bindet an 0.0.0.0, die vollständige Initialisierung kann 1-2 Minuten dauern)
alphapd
Lassen Sie dieses Terminal geöffnet. Die Dienste des emulierten Geräts sind über den Host-Rechner mit der IP-Adresse erreichbar, die von startup.sh konfiguriert wurde (oft 192.168.0.1).
Öffnen Sie ein neues Terminal-Fenster auf Ihrem Host-Rechner (außerhalb der chroot-Umgebung).
Öffnen in neuem Terminal:
cd /path/to/DCS932L # Passen Sie den Pfad bei Bedarf an
(Optional) Installieren Sie erforderliche Python-Pakete, falls das Skript sie benötigt (z.B. requests):
# pip3 install requests # Auskommentieren, falls benötigt
Führen Sie das Exploit-Skript aus. Es zielt automatisch auf die lokale emulierte Umgebung ab (von startup.sh auf 192.168.0.1 eingerichtet):
python3 CVE-2024-37606-DCS932L.py
Um eine andere IP-Adresse anzugreifen, verwenden Sie das Argument --ip:
# Beispiel: python3 CVE-2024-37606-DCS932L.py --ip <target_ip>
Folgen Sie der Ausgabe des Skripts, um den Exploit in Aktion zu sehen.
qemu-mipsel-static verwenden.qemu-mips-static (Big Endian) führt zu Invalid ELF image-Fehlern.alphapd-Dienst bindet innerhalb der chroot-Umgebung an 0.0.0.0 und benötigt möglicherweise 1-2 Minuten, um nach dem Start vollständig reagieren zu können.startup.sh richtet wahrscheinlich eine Netzwerkschnittstelle (z.B. tap0) mit der IP 192.168.0.1 ein. Überprüfen Sie dies, wenn der Exploit keine Verbindung herstellen kann./lib/ld-uClibc.so.0) im /lib-Verzeichnis der chroot-Umgebung vorhanden sind.Dieses Projekt dient ausschließlich Bildungs- und Forschungszwecken. Es demonstriert eine bekannte Sicherheitslücke (CVE-2024-37606). Die Autoren sind nicht verantwortlich für Missbrauch dieser Informationen oder Code. Verwenden Sie diese Umgebung und diesen Exploit verantwortungsvoll und ethisch.
Dies wurde im Rahmen eines Schulprojekts für die Novi Hogeschool entwickelt.
Georgio T. - itwizardo
Fühlen Sie sich frei, zu diesem Projekt beizutragen und die Werkzeuge für Reverse Engineering von Firmware und Sicherheitsanalysen zu verbessern!