
Упрощает эмуляцию прошивки D-Link DCS-932L с предварительно исправленными компонентами и включает эксплойт Proof-of-Concept для CVE-2024-37606.

Добро пожаловать! Этот репозиторий предоставляет инструменты и среду для эмуляции прошивки D-Link DCS-932L и демонстрации уязвимости CVE-2024-37606. Он включает предварительно пропатченные бинарные файлы и необходимые библиотеки, упрощая настройку эмуляции, так что вам не нужно вручную патчить с помощью таких инструментов, как Ghidra.
Этот проект включает эксплойт доказательства концепции (CVE-2024-37606-DCS932L.py) для CVE-2024-37606. Эта уязвимость связана с переполнением буфера в службе alphapd. Пожалуйста, используйте это ответственно и только в образовательных целях.
Нажмите на фото, чтобы посмотреть видео

Было внесено несколько изменений для улучшения функциональности и удобства использования среды эмуляции прошивки:
startup.sh) для упрощения эмуляции.libnvram.so для обеспечения правильной работы эмулятора NVRAM. Изменённый файл (firmadyne/libnvram.so) включён.alphapd с помощью Ghidra для устранения ошибки, препятствующей получению IP из sysinfo во время эмуляции.qemu-mipsel-static для эмуляции MIPS Little Endian.Следуйте этим шагам, чтобы настроить среду эмуляции и запустить эксплойт.
gitqemu-user-staticpython3 и 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
Скопируйте статический бинарный файл QEMU в файловую систему прошивки:
sudo cp /usr/bin/qemu-mipsel-static ./usr/bin/
Установите неизменяемый атрибут для веб-каталога. Это предотвращает изменение критически важных файлов веб-сервера, необходимых для правильной работы эмуляции и эксплойта:
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/
Войдите в среду chroot, используя бинарный файл MIPS Little Endian QEMU:
sudo chroot . /usr/bin/qemu-mipsel-static /bin/sh
Внутри оболочки chroot запустите стартовый скрипт и запустите веб-сервер:
# 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
Оставьте этот терминал работающим. Сервисы эмулируемого устройства будут доступны через хост-машину по IP-адресу, настроенному в startup.sh (часто 192.168.0.1).
Откройте новое окно терминала на вашей хост-машине (вне среды chroot).
Откройте в новом терминале:
cd /path/to/DCS932L # Adjust path if necessary
(Необязательно) Установите необходимые пакеты Python, если они требуются скрипту (например, requests):
# pip3 install requests # Uncomment if needed
Выполните скрипт эксплойта. Он автоматически нацелен на локальное эмулируемое окружение (192.168.0.1, настроенное startup.sh):
python3 CVE-2024-37606-DCS932L.py
Чтобы указать другой IP-адрес, используйте аргумент --ip:
# Example: python3 CVE-2024-37606-DCS932L.py --ip <target_ip>
Следуйте выводу скрипта, чтобы увидеть эксплойт в действии.
qemu-mipsel-static.qemu-mips-static (Big Endian) приведёт к ошибкам Invalid ELF image.alphapd привязывается к 0.0.0.0 внутри среды chroot и может требовать 1–2 минуты для полного ответа после запуска.startup.sh, вероятно, настраивает сетевой интерфейс (например, tap0) с IP 192.168.0.1. Проверьте это, если эксплойт не может подключиться./lib/ld-uClibc.so.0) присутствуют в каталоге /lib среды chroot.Этот проект предназначен только для образовательных и исследовательских целей. Он демонстрирует известную уязвимость (CVE-2024-37606). Авторы не несут ответственности за любое неправомерное использование этой информации или кода. Используйте эту среду и эксплойт ответственно и этично.
Это было разработано в рамках школьного проекта для Novi Hogeschool.
Georgio T. - itwizardo
Не стесняйтесь вносить вклад в этот проект и улучшать инструменты для обратной разработки прошивки и анализа безопасности!