Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-56426 — CVE-2024-56426 Exynos9830 Bootrom 익스플로잇 - SM-G985F | Kitploit
도구/GitHubGitHub/xcracker000/cve-2024-56426
Android SecurityEmbedded Systems SecurityExploitationReverse EngineeringHardware HackingMobile SecurityHardware SecurityPayload DevelopmentFirmware AnalysisBinary Exploitation
GitHub
41271개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
xcracker000/cve-2024-56426

CVE-2024-56426

CVE-2024-56426 Exynos9830 Bootrom 익스플로잇 - SM-G985F

저장소 보기

SM-G985F / Exynos9830 Bootrom 익스플로잇

[!CAUTION] 현재 키 번들 및 생성된 파일은 퓨징(fusing)이 가능합니다. 일단 디바이스가 퓨징되면 eFuse 변경은 되돌릴 수 없으며, 디바이스는 퓨징된 키와 일치하는 부트 이미지 및 키 자료를 계속 사용해야 합니다. 퓨징 동작으로 인해 이러한 파일이나 플로우를 사용하는 것은 사용자 자신의 책임입니다; 모든 결과에 대한 책임은 이를 실행하는 사용자에게 있습니다. 퓨징 플로우를 실행하기 전에 eFuse 파일, 개인 키, 서명된 FWBL1, LK / sboot.bin 이미지 및 대상 디바이스를 확인하십시오.

목차

  • 저장소 구조
  • 요구 사항
  • 이미지 준비
  • 페이로드 빌드
  • 서명된 SBoot 이미지 생성
  • 익스플로잇 모드
  • Exynos 9830 부트 체인
  • Exynos 9830 이미지 레이아웃
  • 로드 주소
  • 부트 소스 ID
  • /mem 페이로드 덤프
  • 업스트림 저작자 표시
  • 크레딧

저장소 구조

경로용도
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 툴체인

sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu

macOS 툴체인

brew tap messense/macos-cross-toolchains
brew install aarch64-unknown-linux-gnu

Python 종속성

python3 -m pip install -r requirements.txt

requirements.txt에는 coloredlogs, cryptography, hexdump, libusb, pyusb, pycryptodome이 포함됩니다.

Windows USB 드라이버

Windows에서 BootROM USB 디바이스 04e8:1234는 PyUSB가 열기 전에 WinUSB/libusb 호환 드라이버를 사용해야 합니다. exploit/windows/README.md를 참조하십시오.

저장소에는 exploit/windows/Exynos_USB_Device.inf에 WinUSB 드라이버 패키지가 포함되어 있으며, 동일한 디렉터리에 해당 카탈로그 및 인증서 가져오기 파일도 함께 있습니다.

이미지 준비

sboot.bin 분할

python3 exploit/split.py bootLoaderFiles/originalSboot_K/sboot.bin -o exploit/extra/images

분할 스크립트는 이미지 파트와 split_manifest.json 파일을 출력 디렉터리에 기록합니다.

LK 커스텀 키 패치

LK 이미지는 커스텀 키 플로우를 위해 ROM 시큐어 부트 키 2 명령 ID를 사용해야 합니다:

키 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

Ghidra 프로젝트 내에서 LK 패치 TSV를 적용할 때 헬퍼는 다음과 같이 Ghidra headless를 통해 호출되었습니다:

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에 임베드합니다:

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

분할 파트 병합

python3 exploit/merge.py exploit/extra/images Exynos9830

병합 스크립트는 현재 작업 디렉터리에 sboot.bin을 기록합니다.

페이로드 빌드

external/payloads/ 아래의 페이로드 프로젝트를 빌드하고 결과 바이너리를 exploit/extra/payloads/로 복사합니다:

./exploit/build_payloads.sh
페이로드출력 경로용도
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에서 사용하는 커스텀 키 서명 로더 페이로드.

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/ 아래에 의도적으로 추적된 공유 키 번들을 사용합니다.

전체 이미지 세트에 대한 저장소 루트 기준 동일 명령:

python3 external/tools/sign_sboot_images.py \
  --images-dir exploit/extra/images \
  --keys-dir external/keys/exynos9830_crecker

다음 이미지가 서명됩니다:

이미지사용된 키 자료롤백 리비전
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

일괄 서명기는 모든 이미지에 십진수 23을 전달하며 기존 푸터에 이미 있는 이전 롤백 값을 재사용하지 않습니다.

epbl.img는 필요 시 먼저 다시 암호화된 다음 최종 바이트에 서명됩니다. ldfw.img 및 tzsw.img의 AVB 콘텐츠를 갱신하려면 여전히 외부 AVB 플로우가 필요합니다.

FWBL1 전용 명령은 다음과 같습니다:

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_* 파일이 현재 디렉터리에 있을 때의 약식:

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

익스플로잇 모드

별도의 언급이 없는 한 저장소 루트에서 명령을 실행하십시오.

명령모드기본 페이로드비고
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으로 수신합니다.

디바이스 플로우 참고 사항

도구 다운로드