Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-56426 — Exploit-Kit für den Exynos-9830-bootROM, das Signed-Boot-Bypass, benutzerdefinierte Schlüsselinjektion und Memory-Dump-Payloads für Samsung-SM-G985F-Geräte liefert. | Kitploit
Tools/GitHubGitHub/xcracker000/cve-2024-56426
Android-SicherheitEmbedded-System-SicherheitExploitationReverse EngineeringHardware-HackingMobile SicherheitHardware-SicherheitPayload-EntwicklungFirmware-AnalyseBinary-Exploitation
GitHubxcracker000/cve-2024-56426
1vor 6 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2024-56426

Exploit-Kit für den Exynos-9830-bootROM, das Signed-Boot-Bypass, benutzerdefinierte Schlüsselinjektion und Memory-Dump-Payloads für Samsung-SM-G985F-Geräte liefert.

Repository anzeigen

SM-G985F / Exynos9830-Bootrom-Exploit

[!CAUTION] Das aktuelle Schlüsselpaket und die erzeugten Dateien sind fusing-fähig. Sobald ein Gerät gefused wurde, ist die eFuse-Änderung irreversibel und das Gerät muss weiterhin Boot-Images und Schlüsselmaterial verwenden, das zum gefused Schlüssel passt. Die Verwendung dieser Dateien oder Abläufe erfolgt wegen des Fusing-Verhaltens auf eigenes Risiko; alle Konsequenzen bleiben in der Verantwortung des Benutzers, der sie ausführt. Überprüfen Sie die eFuse-Datei, die privaten Schlüssel, die signierten FWBL1-, LK-/sboot.bin-Images und das Zielgerät, bevor Sie einen Fusing-Ablauf ausführen.

Inhaltsverzeichnis

  • Repository-Struktur
  • Anforderungen
  • Image-Vorbereitung
  • Payload-Erstellung
  • Erzeugung signierter SBoot-Images
  • Exploit-Modi
  • Exynos-9830-Bootkette
  • Exynos-9830-Image-Layout
  • Ladeadressen
  • Boot-Quell-IDs
  • Dump-/mem-Payload
  • Upstream-Anerkennung
  • Credits

Repository-Struktur

Anforderungen

Linux-Toolchain

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

macOS-Toolchain

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

Python-Abhängigkeiten

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

requirements.txt enthält coloredlogs, cryptography, hexdump, libusb, pyusb und pycryptodome.

Windows-USB-Treiber

Unter Windows muss das BootROM-USB-Gerät 04e8:1234 einen WinUSB-/libusb-kompatiblen Treiber verwenden, bevor PyUSB es öffnen kann. Siehe exploit/windows/README.md.

Das Repository enthält ein WinUSB-Treiberpaket unter exploit/windows/Exynos_USB_Device.inf, zusammen mit dem zugehörigen Katalog und der Zertifikat-Importdatei im selben Verzeichnis.

Image-Vorbereitung

sboot.bin aufteilen

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

Das Split-Skript schreibt die Image-Teile und eine split_manifest.json-Datei in das Ausgabeverzeichnis.

LK-Custom-Key patchen

Das LK-Image muss für den Custom-Key-Ablauf die Command-IDs des ROM Secure Boot Key 2 verwenden:

Beim Anwenden der LK-Patch-TSV im Ghidra-Projekt wurde der Helfer wie folgt über Ghidra Headless aufgerufen:

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"

Betten Sie den 32-Byte-eFuse-Schlüssel bei Offset 0x205008 in lk.bin ein und ersetzen Sie damit den werkseitigen Schlüssel:

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

Aufgeteilte Teile zusammenführen

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

Das Merge-Skript schreibt sboot.bin in das aktuelle Arbeitsverzeichnis.

Payload-Erstellung

Erstellen Sie die Payload-Projekte unter external/payloads/ und kopieren Sie die resultierenden Binärdateien in exploit/extra/payloads/:

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

Der UFS-Loader und das Custom-Key-Payload betten zur Build-Zeit eine 32-Byte-eFuse-Datei ein. Standardmäßig liest das Makefile external/keys/exynos9830_crecker/crecker.efuse; überschreiben Sie dies bei Bedarf mit CUSTOM_KEY_EFUSE=/path/to/crecker.efuse.

Erzeugung signierter SBoot-Images

Der von exploit/exploit.py ausgeführte Preflight-Schritt signiert den SBoot-Image-Satz in exploit/extra/images/ vor jedem signierten Lauf direkt an Ort und Stelle neu. Es wird keine separate signierte Ausgabe aufbewahrt. Der Signierungsschritt verwendet das bewusst im Repository geführte gemeinsame Schlüsselpaket unter external/keys/exynos9830_crecker/.

Entsprechender Befehl im Repository-Stammverzeichnis für den vollständigen Image-Satz:

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

Dies signiert:

Der Batch-Signer übergibt für jedes Image den Dezimalwert 23 und verwendet keinen älteren Rollback-Wert wieder, der bereits in einem vorhandenen Footer enthalten ist.

epbl.img wird bei Bedarf zuerst erneut verschlüsselt und anschließend über die endgültigen Bytes signiert. ldfw.img und tzsw.img benötigen weiterhin den externen AVB-Ablauf, wenn ihr AVB-Inhalt aktualisiert werden soll.

Der Nur-FWBL1-Befehl lautet:

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

Kurzform, wenn sich sign_tool.py, fwbl1.img und die crecker_*-Dateien im aktuellen Verzeichnis befinden:

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

Exploit-Modi

Führen Sie die Befehle aus dem Repository-Stammverzeichnis aus, sofern nicht anders angegeben.

Hinweise zum Geräteablauf

Exynos-9830-Bootkette

Der beobachtete Boot-Ablauf des Exynos 9830 ist:

Exynos-9830-Image-Layout

Ladeadressen

Boot-Quell-IDs

Rohe Boot-Quell-IDs

Boot-Quell-Werte

Dump-/mem-Payload

Hinweis: Das mem.bin-Dump-Payload kann nur verwendet werden, wenn kein funktionierendes sboot installiert ist.

  1. Senden Sie uh.bin über Heimdall an den Bootloader:

    root@kitploit:~
    heimdall flash --BOOTLOADER uh.bin
    
  2. Führen Sie den Dump-Ablauf aus:

    root@kitploit:~
    python3 exploit/exploit.py --dump
    
  3. Prüfen Sie den erzeugten exynos990.bootrom.bin-Dump.

Upstream-Anerkennung

Teile der Python-Recovery-Werkzeuge in diesem Repository wurden von halal-beef/hubble übernommen und angepasst.

Dieses Upstream-Projekt ist unter der GNU GPL v2.0 veröffentlicht, und dieses Repository behält aus Kompatibilitätsgründen eine GPL-2.0-Lizenz bei. Siehe LICENSE und NOTICE.md.

Das Exynos990-Custom-Key-Payload unter external/payloads/exynos990_boot_custom_key/ basiert auf dem Boot-Custom-Key-Payload-Gerüst und der Kontrollfluss-Idee von VDavid003/exynos-usbdl, einem Fork von frederic/exynos-usbdl. Es wurde erheblich umgeschrieben und an die Exynos9830-/Exynos990-GET_CONFIGURATION-Kette angepasst und ist keine wörtliche Kopie des Upstream-Payloads. Da das referenzierte Upstream-Projekt unter der GNU GPL v3.0 lizenziert ist, wird dieses Payload unter GPL-3.0-only gehalten; siehe external/payloads/exynos990_boot_custom_key/LICENSE.

Credits

Tool herunterladen
PfadZweck
bootLoaderFiles/Bootloader-Binärdateien, aufgeteilte Bootloader-Teile, Original-Images, entschlüsselte Images und Dump-Artefakte.
bootromNotes/Boot-ROM-Notizen, Flussdiagramme und USB-Kontext-Offsets.
exploit/Python-Werkzeuge, Exploit-Runner, Split-/Merge-Skripte, Payload-Build-Helfer und SoC-Daten.
exploit/extra/images/Verwendbare Bootloader-Images, die von den Exploit-Abläufen verwendet werden.
exploit/extra/payloads/Erstellte Payload-Binärdateien, kopiert aus external/payloads/.
external/Payload-Quellen, Build-Makefile, dekompilierte Notizen, gemeinsames Schlüsselmaterial und Hilfswerkzeuge.
external/keys/exynos9830_crecker/Gemeinsames Exynos9830-/Exynos990-Custom-Key-Paket, das vom Signed-Loader-Ablauf verwendet wird.
exynos990reverseEng/Projektdateien des Exynos-990-Reverse-Engineering-Projekts.
Schlüssel-1-BefehlWertSchlüssel-2-BefehlWert
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
PayloadAusgabepfadZweck
mem.binexploit/extra/payloads/mem.binPayload für den Boot-ROM-Speicherdump.
loader.binexploit/extra/payloads/loader.binUFS-Pfad-Payload, verwendet von --ufs.
Exynos990_boot_custom_key.binexploit/extra/payloads/Exynos990_boot_custom_key.binCustom-Key-Signed-Loader-Payload, verwendet von --signed.
ImageVerwendetes SchlüsselmaterialRollback-Revision
fwbl1.imgBL1-privater Schlüssel + Stage2-TEE-/REE-Public-Keys23
epbl.imgStage2-TEE-privater Schlüssel23
bl2.imgStage2-REE-privater Schlüssel23
lk.binStage2-REE-privater Schlüssel23
el3_mon.imgStage2-TEE-privater Schlüssel23
ldfw.imgStage2-TEE-privater Schlüssel, inner + outer23
tzsw.imgStage2-TEE-privater Schlüssel, inner + outer23
BefehlModusStandard-PayloadHinweise
python3 exploit/exploit.py --ufsUFS-Pfadloader.binStartet den UFS-Payload-Ablauf.
python3 exploit/exploit.py --signedSignierte BootketteExynos990_boot_custom_key.binSigniert den SBoot-Image-Satz neu und sendet die Images.
python3 exploit/exploit.py --dumpBoot-ROM-Dumpmem.binEmpfängt 0x20000 Bytes in exynos990.bootrom.bin.
SchrittHinweis
1Download-Modus aufrufen.
2sboot.bin bei Bedarf mit exploit/merge.py erstellen oder aktualisieren.
3Den signierten Custom-Key-Ablauf verwenden, um den Crecker-Modus zu erreichen, einen ODIN-artigen Modus, der den Ziel-Image-Ablauf akzeptiert.
4Das neue sboot.bin über ODIN, Heimdall oder einen anderen kompatiblen Sender senden.
5Das UFS-Payload ausführen.
6Optional: CreckerRom für One-UI-7- und Strong-Integrity-Workflows installieren.
7Optional: Den Bootloader sperren, nachdem das Ziel-Setup abgeschlossen ist.
SchrittStufeHinweise
1BootROMAnfängliche ROM-Ausführung.
2BL1Vollständige Übergabe vom BootROM.
3EPBLVollständige Übergabe von BL1.
4EPBLRichtet einen minimalen SMC-Handler ein.
5BL2EPBL lädt BL2.
6BL2Teilweise Übergabe an BL2.
7LKBL2 verwendet EPBL, um LK zu laden, aber LK wird nicht sofort ausgeführt.
8EL3 MonitorBL2 verwendet EPBL, um den EL3 Monitor zu laden.
9EL3 MonitorEPBL entschlüsselt den EL3 Monitor.
10EL3 MonitorVollständige Übergabe an den EL3 Monitor.
11EL3 MonitorInitialisiert und richtet den erweiterten SMC-Handler ein.
12LKDie Ausführung springt zu LK.
13LK / EL3 MonitorLK ruft den SMC-Handler des EL3 Monitors auf, um TrustZone-Teile zu laden.
14ODIN / Custom-TargetDer Bootvorgang fährt mit ODIN oder dem konfigurierten Ziel fort.
TeilStartEnde
fwbl1.img0x00x3000
epbl.img0x30000x16000
bl2.img0x160000x82000
lk.bin0xDB0000x35B000
el3_mon.img0x35B0000x39B000
StufeLadeadresse
BL10x02022000
EPBL0x02026000
BL20x15600000
LK0xE8000000
EL3_MONITOR0xBFE80000
_boot_device-Quell-IDBoot-Quellpfad
1UFS-Pfad, gemeinsamer UFS-Ladeablauf.
2eMMC-/SDMMC-Init-Pfad, mmc_card_detect_and_init-Ablauf.
3SDMMC-/MMC-Gerät 0, mmc_read_blocks(0, ...).
4USB-Ladepfad.
5SDMMC-/MMC-Gerät 1, mmc_read_blocks(1, ...).
6UFS-Alternativmodus, derselbe UFS-Kernablauf wie 1 mit einem anderen Modus-Flag.
7Roh-Controller-Lesepfad ohne MMC/UFS/USB.
0xB / 11USB-Fallback-Pfad, danach derselbe USB-Handler wie 4.
Quell-IDWertBedeutung
10x20UFS
20x14eMMC
30x00SDMMC_CH2
4 / 0xB0x40USB
DanksagungBeitrag
Chimera ToolErste Entdeckung des Exploits circa 2021–2022. Chimera bietet erweiterte Exynos-Servicing-Funktionen für viele Geräte, einschließlich Fähigkeiten, die auf diesem Exploit basieren.
CVE-2024-56426Die CVE, auf der dieses Projekt basiert.
Christopher WadeHat CVE-2024-56426 an Samsung gemeldet.
kethily-danielHat Zugang zu dem Werkzeug bereitgestellt, das für USB-Paket-Tracing und Proben-Extraktion verwendet wurde.
BotchedRPRHat bei der anfänglichen Recherche und der Erstellung von carte2 geholfen.
VDavid003Hat beim Reverse Engineering des PoC anhand von Paket-Dumps geholfen und persönlich auf Geräten getestet.
halal-beef / hubbleHat während des Forschungszyklus erste USB-Paket-Dumps und Analysen des PoC bereitgestellt, den vom Exploit-Skript verwendeten Backend-Code sowie die von den Split- und Merge-Skripten verwendeten SoC-Layouts.
VDavid003 / exynos-usbdlHat das GPLv3-Custom-Key-Payload-Gerüst und den Exynos-USB-Download-Referenzablauf bereitgestellt, die als Grundlage für das Exynos990-Custom-Key-Payload dienen.
R0rt1z2Hat bei der Payload-Erstellung geholfen; einige Arbeiten basierten auf seinem Projekt kaeru.
AntiEngineerHat ARM-Wissen, Hinweise und Unterstützung bei der Recherche geteilt.
AAInspiration für die Schwachstelle und erste Verwendung außerhalb von Chimera.