
사전 패치된 구성 요소로 D-Link DCS-932L 펌웨어 에뮬레이션을 단순화하며, CVE-2024-37606에 대한 PoC 익스플로잇을 포함합니다.

환영합니다! 이 저장소는 D-Link DCS-932L 펌웨어를 에뮬레이션하고 CVE-2024-37606 취약점을 시연하기 위한 도구와 환경을 제공합니다. 사전 패치된 바이너리와 필요한 라이브러리가 포함되어 있어 Ghidra와 같은 도구로 수동 패치를 수행할 필요 없이 에뮬레이션 설정을 간소화합니다.
이 프로젝트는 CVE-2024-37606에 대한 개념 증명 익스플로잇(CVE-2024-37606-DCS932L.py)을 포함합니다. 이 취약점은 alphapd 서비스의 버퍼 오버플로우와 관련이 있습니다. 책임감 있게 교육 목적으로만 사용하십시오.
사진을 클릭하여 동영상을 확인하세요

에뮬레이션 환경의 기능과 사용성을 향상시키기 위해 몇 가지 수정 사항이 적용되었습니다:
startup.sh)를 추가했습니다.libnvram.so에서 338~342행을 제거했습니다. 수정된 파일(firmadyne/libnvram.so)이 포함되어 있습니다.sysinfo에서 IP를 검색하지 못하는 오류를 해결하기 위해 Ghidra를 사용하여 alphapd 바이너리를 패치했습니다.qemu-mipsel-static을 포함했습니다.다음 단계에 따라 에뮬레이션 환경을 설정하고 익스플로잇을 실행하십시오.
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/
MIPS 리틀 엔디언 QEMU 바이너리를 사용하여 chroot 환경에 진입하십시오:
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
이 터미널을 계속 실행 상태로 두십시오. 에뮬레이션된 장치의 서비스는 startup.sh에 의해 구성된 IP 주소(보통 192.168.0.1)를 사용하여 호스트 머신을 통해 접근할 수 있습니다.
호스트 머신에서 새 터미널 창을 여십시오 (chroot 환경 외부).
새 터미널에서 열기:
cd /path/to/DCS932L # Adjust path if necessary
(선택 사항) 스크립트에 필요한 Python 패키지(예: requests)가 있으면 설치하십시오:
# pip3 install requests # Uncomment if needed
익스플로잇 스크립트를 실행하십시오. 로컬 에뮬레이션 환경(startup.sh에 의해 설정된 192.168.0.1)을 자동으로 대상으로 합니다:
python3 CVE-2024-37606-DCS932L.py
다른 IP 주소를 대상으로 하려면 --ip 인수를 사용하십시오:
# Example: python3 CVE-2024-37606-DCS932L.py --ip <target_ip>
스크립트의 출력을 따라가면 익스플로잇이 작동하는 것을 확인할 수 있습니다.
qemu-mipsel-static을 사용해야 합니다.qemu-mips-static (빅 엔디언)을 사용하면 Invalid ELF image 오류가 발생합니다.alphapd 서비스는 chroot 환경 내부에서 0.0.0.0에 바인딩되며 실행 후 완전히 응답하기까지 1-2분이 소요될 수 있습니다.startup.sh 스크립트는 IP 192.168.0.1로 네트워크 인터페이스(예: tap0)를 설정할 가능성이 높습니다. 익스플로잇이 연결에 실패하면 이를 확인하십시오./lib/ld-uClibc.so.0)가 chroot 환경의 /lib 디렉터리에 있는지 확인하십시오.이 프로젝트는 교육 및 연구 목적으로만 제공됩니다. 알려진 취약점(CVE-2024-37606)을 시연합니다. 저자는 이 정보나 코드의 오용에 대해 책임을 지지 않습니다. 이 환경과 익스플로잇을 책임감 있고 윤리적으로 사용하십시오.
이는 Novi Hogeschool의 학교 프로젝트의 일환으로 개발되었습니다.
Georgio T. - itwizardo
이 프로젝트에 자유롭게 기여하고 펌웨어 리버스 엔지니어링 및 보안 분석을 위한 도구를 개선해 주십시오!