
Simplifica a emulação do firmware do D-Link DCS-932L com componentes pré-patchados e inclui um exploit de Prova de Conceito para o CVE-2024-37606.

Bem-vindo! Este repositório fornece ferramentas e um ambiente para emular o firmware D-Link DCS-932L e demonstrar a vulnerabilidade CVE-2024-37606. Ele inclui binários pré-corrigidos e bibliotecas necessárias, simplificando a configuração de emulação para que você não precise realizar correções manuais com ferramentas como Ghidra.
Este projeto inclui um exploit de prova de conceito (CVE-2024-37606-DCS932L.py) para CVE-2024-37606. Esta vulnerabilidade envolve um estouro de buffer no serviço alphapd. Por favor, use isso de forma responsável e apenas para fins educacionais.
Clique na foto para ver o vídeo

Várias modificações foram feitas para melhorar a funcionalidade e usabilidade do ambiente de emulação de firmware:
startup.sh) para simplificar a emulação.libnvram.so original para garantir o funcionamento adequado do emulador NVRAM. O arquivo modificado (firmadyne/libnvram.so) está incluído.alphapd usando Ghidra para resolver um erro que impedia a recuperação do IP do sysinfo durante a emulação.qemu-mipsel-static para emulação MIPS Little Endian.Siga estes passos para configurar o ambiente de emulação e executar o 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
# QEMU installation via Homebrew includes user-mode static binaries.
choco install qemu
Copie o binário estático QEMU para o sistema de arquivos do firmware:
sudo cp /usr/bin/qemu-mipsel-static ./usr/bin/
Defina o atributo imutável no diretório web. Isso impede a modificação de arquivos críticos do servidor web necessários para que a emulação e o exploit funcionem corretamente:
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/
Entre no ambiente chroot usando o binário QEMU MIPS Little Endian:
sudo chroot . /usr/bin/qemu-mipsel-static /bin/sh
Dentro do shell chroot, execute o script de inicialização e inicie o 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
Deixe este terminal em execução. Os serviços do dispositivo emulado serão acessíveis através da máquina host usando o endereço IP configurado pelo startup.sh (frequentemente 192.168.0.1).
Abra uma nova janela de terminal na sua máquina host (fora do ambiente chroot).
Abrir em novo terminal:
cd /path/to/DCS932L # Adjust path if necessary
(Opcional) Instale pacotes Python necessários se o script precisar deles (por exemplo, requests):
# pip3 install requests # Uncomment if needed
Execute o script de exploit. Ele automaticamente visa o ambiente emulado local (192.168.0.1 configurado pelo startup.sh):
python3 CVE-2024-37606-DCS932L.py
Para direcionar um endereço IP diferente, use o argumento --ip:
# Example: python3 CVE-2024-37606-DCS932L.py --ip <target_ip>
Acompanhe a saída do script para ver o exploit em ação.
qemu-mipsel-static.qemu-mips-static (Big Endian) resultará em erros de Invalid ELF image.alphapd vincula a 0.0.0.0 dentro do ambiente chroot e pode levar 1-2 minutos para se tornar totalmente responsivo após a execução.startup.sh provavelmente configura uma interface de rede (por exemplo, tap0) com IP 192.168.0.1. Verifique isso se o exploit falhar ao conectar./lib/ld-uClibc.so.0) estejam presentes no diretório /lib do ambiente chroot.Este projeto é apenas para fins educacionais e de pesquisa. Ele demonstra uma vulnerabilidade conhecida (CVE-2024-37606). Os autores não são responsáveis por qualquer uso indevido desta informação ou código. Use este ambiente e exploit de forma responsável e ética.
Isso foi desenvolvido como parte de um projeto escolar para a Novi Hogeschool.
Georgio T. - itwizardo
Sinta-se à vontade para contribuir com este projeto e melhorar as ferramentas para engenharia reversa de firmware e análise de segurança!