Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2024-56426 — CVE-2024-56426 Эксплойт Bootrom Exynos9830 - SM-G985F | Kitploit
Инструменты/GitHubGitHub/xcracker000/cve-2024-56426
Безопасность AndroidБезопасность встроенных системЭксплуатацияОбратная инженерияАппаратный ХакингМобильная безопасностьАппаратная БезопасностьРазработка Полезной НагрузкиАнализ ПрошивокЭксплуатация Бинарных Файлов
GitHub
41271 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
xcracker000/cve-2024-56426

CVE-2024-56426

CVE-2024-56426 Эксплойт Bootrom Exynos9830 - SM-G985F

Репозиторий

SM-G985F / Exynos9830 Эксплойт Bootrom

[!CAUTION] Текущий набор ключей и сгенерированные файлы поддерживают операцию fusing. После того как устройство прошло fusing, изменение eFuse необратимо, и устройство должно продолжать использовать загрузочные образы и ключевой материал, соответствующие запрограммированному ключу. Использование этих файлов или процедур осуществляется на ваш собственный риск из-за особенностей fusing; все последствия остаются на ответственности пользователя, выполняющего их. Проверьте файл eFuse, закрытые ключи, подписанный FWBL1, образы LK / sboot.bin и целевое устройство перед запуском любой процедуры fusing.

Содержание

  • Структура репозитория
  • Требования
  • Подготовка образов
  • Сборка полезной нагрузки
  • Генерация подписанного образа SBoot
  • Режимы эксплойта
  • Цепочка загрузки Exynos 9830
  • Структура образа Exynos 9830
  • Адреса загрузки
  • Идентификаторы источника загрузки
  • Полезная нагрузка дампа /mem
  • Атрибуция первоисточников
  • Благодарности

Структура репозитория

ПутьНазначение
bootLoaderFiles/Бинарные файлы загрузчика, разделённые части загрузчика, исходные образы, расшифрованные образы и артефакты дампа.
bootromNotes/Заметки о Boot 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.

USB-драйвер Windows

В Windows USB-устройство BootROM 04e8:1234 должно использовать драйвер, совместимый с WinUSB/libusb, прежде чем PyUSB сможет открыть его. См. exploit/windows/README.md.

Репозиторий включает пакет драйвера WinUSB в exploit/windows/Exynos_USB_Device.inf вместе с соответствующим каталогом и файлом импорта сертификата в том же каталоге.

Подготовка образов

Разделение sboot.bin

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

Скрипт разделения записывает части образа и файл split_manifest.json в выходной каталог.

Патч кастомного ключа LK

Образ LK должен использовать идентификаторы команд ROM secure boot key 2 для процедуры кастомного ключа:

Команда Key 1ЗначениеКоманда Key 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

При применении TSV-патча LK внутри проекта Ghidra вспомогательная функция вызывалась через 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 в lk.bin по смещению 0x205008, заменив штатный ключ:

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Полезная нагрузка для дампа памяти Boot 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, повторно подписывает набор образов SBoot в exploit/extra/images/ на месте перед каждым подписанным запуском. Отдельный подписанный выходной файл не сохраняется. Этап подписи использует общий набор ключей в external/keys/exynos9830_crecker/, который намеренно хранится в репозитории.

Эквивалентная команда из корня репозитория для полного набора образов:

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

При этом подписываются:

Скачать инструмент