
Simplifie l'émulation du firmware D-Link DCS-932L avec des composants pré-patchés et inclut un exploit Proof-of-Concept pour CVE-2024-37606.

Bienvenue ! Ce dépôt fournit des outils et un environnement pour émuler le firmware du D-Link DCS-932L et démontrer la vulnérabilité CVE-2024-37606. Il inclut des binaires pré-patchés et les bibliothèques nécessaires, simplifiant la configuration de l'émulation afin que vous n'ayez pas à effectuer de patch manuel avec des outils comme Ghidra.
Ce projet inclut un exploit de preuve de concept (CVE-2024-37606-DCS932L.py) pour CVE-2024-37606. Cette vulnérabilité implique un débordement de tampon dans le service alphapd. Veuillez l'utiliser de manière responsable et à des fins éducatives uniquement.
Cliquez sur la photo pour voir la vidéo

Plusieurs modifications ont été apportées pour améliorer la fonctionnalité et la convivialité de l'environnement d'émulation du firmware :
startup.sh) pour simplifier l'émulation.libnvram.so original pour assurer le bon fonctionnement de l'émulateur NVRAM. Le fichier modifié (firmadyne/libnvram.so) est inclus.alphapd à l'aide de Ghidra pour résoudre une erreur empêchant la récupération de l'IP depuis sysinfo lors de l'émulation.qemu-mipsel-static pour l'émulation MIPS Little Endian.Suivez ces étapes pour configurer l'environnement d'émulation et exécuter l'exploit.
gitqemu-user-staticpython3 et 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'installation de QEMU via Homebrew inclut les binaires statiques en mode utilisateur.
choco install qemu
Copiez le binaire statique QEMU dans le système de fichiers du firmware :
sudo cp /usr/bin/qemu-mipsel-static ./usr/bin/
Définissez l'attribut immuable sur le répertoire web. Cela empêche la modification des fichiers critiques du serveur web nécessaires au bon fonctionnement de l'émulation et de l'exploit :
sudo chattr +i etc_ro/web/
Set-ItemProperty -Path ./etc_ro/web -Name IsReadOnly -Value $true
# Remarque : Ceci définit le répertoire en Lecture seule, empêchant les modifications accidentelles.
# Pour rendre également le contenu en lecture seule, ajoutez -Recurse à Get-ChildItem :
# Get-ChildItem -Path ./etc_ro/web -Recurse | Set-ItemProperty -Name IsReadOnly -Value $true
sudo chflags schg etc_ro/web/
Entrez dans l'environnement chroot en utilisant le binaire QEMU MIPS Little Endian :
sudo chroot . /usr/bin/qemu-mipsel-static /bin/sh
Dans le shell chroot, exécutez le script de démarrage et lancez le serveur web :
# Exécute les tâches de démarrage (configuration réseau, etc.)
./startup.sh
# Définit les variables d'environnement pour l'émulation nvram
export LD_PRELOAD=/firmadyne/libnvram.so
export HOME=.
export RANDFILE=$HOME/.rnd
# Démarre le serveur web vulnérable (écoute sur 0.0.0.0, peut prendre 1 à 2 minutes pour s'initialiser complètement)
alphapd
Laissez ce terminal ouvert. Les services du périphérique émulé seront accessibles via la machine hôte en utilisant l'adresse IP configurée par startup.sh (souvent 192.168.0.1).
Ouvrez une nouvelle fenêtre de terminal sur votre machine hôte (en dehors de l'environnement chroot).
Ouvrir dans un nouveau terminal :
cd /path/to/DCS932L # Ajustez le chemin si nécessaire
(Facultatif) Installez les paquets Python nécessaires si le script en a besoin (par exemple, requests) :
# pip3 install requests # Décommentez si nécessaire
Exécutez le script d'exploit. Il cible automatiquement l'environnement émulé local (192.168.0.1 configuré par startup.sh) :
python3 CVE-2024-37606-DCS932L.py
Pour cibler une adresse IP différente, utilisez l'argument --ip :
# Exemple : python3 CVE-2024-37606-DCS932L.py --ip <ip_cible>
Suivez la sortie du script pour voir l'exploit en action.
qemu-mipsel-static.qemu-mips-static (Big Endian) entraînera des erreurs Invalid ELF image.alphapd se lie à 0.0.0.0 dans l'environnement chroot et peut prendre 1 à 2 minutes pour devenir pleinement réactif après l'exécution.startup.sh configure probablement une interface réseau (par exemple, tap0) avec l'IP 192.168.0.1. Vérifiez cela si l'exploit échoue à se connecter./lib/ld-uClibc.so.0) sont présentes dans le répertoire /lib de l'environnement chroot.Ce projet est uniquement destiné à des fins éducatives et de recherche. Il démontre une vulnérabilité connue (CVE-2024-37606). Les auteurs ne sont pas responsables de toute utilisation abusive de ces informations ou de ce code. Utilisez cet environnement et cet exploit de manière responsable et éthique.
Ceci a été développé dans le cadre d'un projet scolaire pour Novi Hogeschool.
Georgio T. - itwizardo
N'hésitez pas à contribuer à ce projet et à améliorer les outils pour l'ingénierie inverse de firmware et l'analyse de sécurité !