
D-Link DCS-932Lのファームウェアエミュレーションを事前パッチ済みコンポーネントで簡素化し、CVE-2024-37606のProof-of-Conceptエクスプロイトを含んでいます。

ようこそ!このリポジトリは、D-Link DCS-932L ファームウェアをエミュレートし、CVE-2024-37606 の脆弱性を実証するためのツールと環境を提供します。パッチ適用済みのバイナリと必要なライブラリが含まれており、Ghidra などのツールを使った手動パッチ適用を必要とせず、エミュレーションのセットアップを簡略化します。
このプロジェクトには、CVE-2024-37606 の概念実証エクスプロイト (CVE-2024-37606-DCS932L.py) が含まれています。この脆弱性は、alphapd サービスにおけるバッファオーバーフローに関するものです。責任を持って、教育目的のみで使用してください。
写真をクリックすると動画が表示されます

ファームウェアエミュレーション環境の機能性と使いやすさを向上させるために、いくつかの変更が行われました。
startup.sh) を追加しました。libnvram.so から 338 行目から 342 行目を削除し、NVRAM エミュレータが適切に機能するようにしました。変更されたファイル (firmadyne/libnvram.so) が含まれています。alphapd バイナリにパッチを適用し、エミュレーション中に sysinfo から IP を取得できないエラーを修正しました。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
# Homebrew による QEMU インストールにはユーザーモードの静的バイナリが含まれています。
choco install qemu
QEMU 静的バイナリをファームウェアのファイルシステムにコピーします:
sudo cp /usr/bin/qemu-mipsel-static ./usr/bin/
Web ディレクトリに不変属性を設定します。これにより、エミュレーションとエクスプロイトが正しく機能するために必要な重要な Web サーバファイルの変更を防ぎます:
sudo chattr +i etc_ro/web/
Set-ItemProperty -Path ./etc_ro/web -Name IsReadOnly -Value $true
# 注: これによりディレクトリが読み取り専用に設定され、誤った変更を防ぎます。
# コンテンツも読み取り専用にするには、Get-ChildItem に -Recurse を追加します:
# 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 シェル内で、スタートアップスクリプトを実行し、Web サーバを起動します:
# 起動タスクの実行(ネットワーク設定など)
./startup.sh
# nvram エミュレーションのための環境変数の設定
export LD_PRELOAD=/firmadyne/libnvram.so
export HOME=.
export RANDFILE=$HOME/.rnd
# 脆弱性のある Web サーバの起動(0.0.0.0 にバインド、完全に初期化されるまでに1〜2分かかる場合があります)
alphapd
このターミナルは実行したままにしておきます。エミュレートされたデバイスのサービスは、startup.sh で設定された IP アドレス(通常 192.168.0.1)を使用してホストマシンからアクセス可能になります。
ホストマシン上で(chroot 環境の外で)新しいターミナルウィンドウを開きます。
新しいターミナルで開く:
cd /path/to/DCS932L # 必要に応じてパスを調整
(オプション)スクリプトが必要とする場合、必要な Python パッケージ(例: requests)をインストールします:
# pip3 install requests # 必要に応じてコメント解除
エクスプロイトスクリプトを実行します。自動的にローカルのエミュレート環境(startup.sh で設定された 192.168.0.1)をターゲットにします:
python3 CVE-2024-37606-DCS932L.py
別の IP アドレスをターゲットにするには、--ip 引数を使用します:
# 例: 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 ディレクトリに必要なライブラリ(/lib/ld-uClibc.so.0 など)が存在することを確認してください。このプロジェクトは教育および研究目的のみです。既知の脆弱性(CVE-2024-37606)を実証するものです。著者は、この情報やコードの誤用について一切の責任を負いません。この環境とエクスプロイトは、責任を持って倫理的に使用してください。
これは Novi Hogeschool の学校プロジェクトの一部として開発されました。
Georgio T. - itwizardo
このプロジェクトに貢献し、ファームウェアリバースエンジニアリングとセキュリティ分析のためのツールを改善することは自由です!