Android Pentesting Skill

May 5, 2026 · View on GitHub

Licencia Versión Autor English

Skill de pentesting Android de clase mundial para agentes de IA. Combina análisis estático, instrumentación dinámica, detección RASP, validación autorizada de bypass, trazado source-to-sink, scoring MASVS y reportes profesionales en un flujo DRY.

🎯 Qué Hace Este Skill

Este skill convierte un agente de IA en un auditor de seguridad para APKs Android. Puede:

  • Decodificar e inspeccionar APKs con APKTool, JADX, APKiD, herramientas del Android SDK y Frida.
  • Mapear superficie de ataque: manifest, componentes exportados, deep links, WebViews, almacenamiento, criptografía, red, código nativo y código específico de frameworks.
  • Ejecutar análisis estático con patrones grep curados y reglas Semgrep alineadas a MASTG, luego fusionar y deduplicar hallazgos.
  • Trazar flujos source-to-sink y separar hallazgos confirmados de hallazgos que requieren validación dinámica.
  • Detectar defensas runtime y SDKs RASP/shielding, y construir stacks Frida autorizados de bypass usando perfiles reutilizables en vez de lógica duplicada.
  • Validar protecciones cliente comunes como SSL pinning, root/debug/emulator checks, anti-Frida, FLAG_SECURE, callbacks RASP y checks nativos/packers cuando sea técnicamente viable.
  • Puntuar y reportar hallazgos con CVSS 4.0, mapeo MASVS, contexto ejecutivo de riesgo, schemas JSON y plantillas profesionales.
  • Soportar modificación de APKs: patching smali/recursos, reempaquetado, firma y validación.

Importante: Los hooks cliente no falsifican verdicts de atestación server-side. Para Approov, Play Integrity, SafetyNet o controles similares con validación backend, usa un tenant de prueba autorizado, allowlist backend, mock verifier o configuración de laboratorio aprobada.

📦 Instalación

Opción 1: Clonar en Directorio de Skills del Agente

# Para agentes Claude Code / OpenCode
cd ~/.agents/skills/
git clone https://github.com/DragonJAR/Android-Pentesting-Skill Android-Pentesting-Skill

# Para otros agentes, ubicar en su directorio de skills

Opción 2: Instalación Global

# Clonar en cualquier ubicación
git clone https://github.com/DragonJAR/Android-Pentesting-Skill.git

# Agregar a la configuración de skills del agente

⚙️ Prerrequisitos

El skill espera estas herramientas instaladas:

HerramientaVersiónPropósito
APKTool3.0.1+Decodificación/reconstrucción de APK (modo aapt2)
JADX1.5.5+Descompilación Java/Kotlin
Android SDKPlatform 36+, Build 36+adb, aapt2, zipalign, apksigner
Frida17.9+Instrumentación dinámica
Objection1.12.4+Exploración móvil (modo mantenimiento)
APKiD3.0.0+Detección de framework

Verificación

Ejecuta el preflight Python para verificar dependencias:

python3 scripts/06-setup/preflight-check.py

Variante shell para Linux o macOS con Homebrew Bash 4+:

/opt/homebrew/bin/bash scripts/06-setup/preflight-check.sh

O, en sistemas donde /usr/bin/env bash sea Bash 4+:

./scripts/06-setup/preflight-check.sh

Variante PowerShell para entornos Windows:

./scripts/06-setup/preflight-check.ps1

🛡️ Flujo RASP Detect → Bypass

El flujo RASP es DRY por diseño:

  1. Detectar protecciones con RDA.
  2. Mapear detectores activos a perfiles de bypass.
  3. Reutilizar scripts Frida existentes desde assets/frida-scripts/.
  4. Imprimir primero, ejecutar solo con autorización usando --run --authorized-lab.
# 1) Detectar RASP/defensas runtime
bash scripts/02-rasp/runtime-defense-analyzer.sh app.apk com.target.app --output findings-rda.json

# 2) Revisar perfiles de bypass disponibles
bash scripts/02-rasp/rasp-bypass-runner.sh --list-profiles

# 3) Generar comando Frida revisable desde hallazgos
bash scripts/02-rasp/rasp-bypass-runner.sh \
  --package com.target.app \
  --from-rda findings-rda.json \
  --print-command

# 4) Ejecutar solo en laboratorio autorizado
bash scripts/02-rasp/rasp-bypass-runner.sh \
  --package com.target.app \
  --from-rda findings-rda.json \
  --run --authorized-lab

Los perfiles viven en scripts/02-rasp/bypass-profiles.json y reutilizan scripts Frida existentes en assets/frida-scripts/. Ver references/rasp-bypass-workflow.md para cobertura, límites y requisitos de reporte.

🚀 Ejemplos de Uso

Ejemplo 1: Auditoría Básica de APK

Prompt del usuario:

Audita este APK: /ruta/a/app.apk

Respuesta del agente:

Analizaré el APK en busca de vulnerabilidades de seguridad.

[Fase 0] Decodificando APK con APKTool...
[Fase 1] Analizando AndroidManifest.xml...
[Fase 2] Ejecutando patrones de seguridad específicos...
[Fase 3] Trazando flujos de datos...
[Fase 5] Generando reporte de hallazgos...

Se encontraron 3 hallazgos:
1. [ALTO] Actividad exportada sin permiso (M8: Configuración de Seguridad Incorrecta)
2. [MEDIO] API key hardcodeada (M1: Uso Impropio de Credenciales)
3. [BAJO] Registro de depuración habilitado (M8: Configuración de Seguridad Incorrecta)

Ejemplo 2: Auditoría Completa con Todos los Módulos

Prompt del usuario:

Audita este APK con todos los módulos: runtime defense, semgrep y scoring MASVS.

Respuesta del agente:

[Fase 0] Decodificando APK con APKTool + JADX...
[Fase 0] Detectado framework: Flutter
[Fase 1] Mapeando superficie de ataque desde AndroidManifest.xml...
[Fase 2] Ejecutando patrones grep específicos...
[Fase 2.5] Ejecutando reglas Semgrep MASTG (70+ reglas)...
[Fase 3] Trazando flujos de datos source-to-sink...
[Fase 4] Ejecutando Runtime Defense Analysis (18 entradas de catálogo, 14 detectores ejecutables)...
[Fase 5] Clasificando hallazgos y calculando score de cumplimiento MASVS...

Score MASVS: 72.6/100 (Nota: C)
- 16/23 controles pasados
- 7 controles fallidos (Crítico: 1, Alto: 1, Medio: 1, Bajo: 4)

Se encontraron 4 hallazgos:
1. [CRÍTICO] API key hardcodeada (M1: Uso Impropio de Credenciales)
2. [ALTO] Actividad exportada con redirección de intent (M8: Configuración de Seguridad Incorrecta)
3. [MEDIO] Validación Débil de Certificado SSL (M5: Comunicación Insegura)
4. [BAJO] Modo debug habilitado (M8: Configuración de Seguridad Incorrecta)

Ejemplo 3: Bypass de SSL Pinning

Prompt del usuario:

La app tiene SSL pinning. Bypassealo con Frida e intercepta el tráfico.

Respuesta del agente:

Usaré el script de bypass de SSL pinning para interceptar tráfico HTTPS.

[1] Identificando implementación de SSL pinning...
    Encontrado: OkHttp3 CertificatePinner
[2] Cargando script Frida: ssl-pinning-bypass.js
[3] Hookeando CertificatePinner.check()
[4] SSL pinning omitido. Tráfico ahora desencriptado.

Petición interceptada:
POST /api/login
{"email": "usuario@ejemplo.com", "password": "secreto123"}

Ejemplo 4: Análisis de React Native

Prompt del usuario:

Analiza este APK de React Native buscando secretos hardcodeados en el bundle de JavaScript.

Respuesta del agente:

[Fase 0] Detectado framework React Native (libhermes.so encontrado)
[Fase 0] Extrayendo JavaScript bundle de assets/index.android.bundle
[Fase 2] Escaneando por secretos en JavaScript bundle...

Encontrados 2 secretos hardcodeados:
- API_KEY = "sk_live_abc123..." en bundle.js:4521 (M1: Uso Impropio de Credenciales)
- AWS_SECRET = "wJalrXUtnFEMI/K7MDENG..." en bundle.js:8912 (M1: Uso Impropio de Credenciales)

Ejemplo 5: Análisis de Flutter

Prompt del usuario:

Analiza este APK de Flutter. Necesito interceptar tráfico HTTPS de la app.

Respuesta del agente:

[Fase 0] Detectado framework Flutter (libflutter.so encontrado)
[Fase 0] Flutter usa BoringSSL nativo - los hooks Java SSL no funcionarán
[Fase 0] Usando Blutter para extraer código Dart: python3 blutter.py lib/arm64-v8a/
[Fase 4] Cargando script Frida: native-hook.js (objetivos BoringSSL)
[Fase 4] Hookeando SSL_CTX_set_custom_verify() para bypass de certificado
[Fase 4] Hookeando SSL_read/SSL_write() para interceptación de tráfico

Tráfico Flutter ahora interceptado y desencriptado.

Ejemplo 6: Modificación de APK

Prompt del usuario:

Deshabilita la detección de root en este APK y reempaquétalo.

Respuesta del agente:

[1] Decodificando APK con APKTool...
[2] Localizando código de detección de root...
    Encontrado: com/app/security/RootDetector.checkRoot()
[3] Parcheando smali para retornar false...
    const/4 v0, 0x0  # Siempre retorna false
[4] Reconstruyendo con APKTool...
[5] Alineando con zipalign...
[6] Firmando con apksigner...
[7] Verificando firma...

APK modificado listo: app_patched.apk
SHA-256: abc123def456...

Ejemplo 7: Runtime Defense Analysis

Prompt del usuario:

Ejecuta el análisis de runtime defense para ver qué protecciones tiene esta app.

Respuesta del agente:

[Fase 4] Cargando Runtime Defense Analysis...

Catálogo de detectores: 18 entradas (14 detectores Frida ejecutables + 4 entradas backend/cloud marcadas como no aplicables).
Detectores ejecutables principales:
- rootbeer, safetynet, emulator, debug, frida_detect
- screenshot, screenrecorded, custom
- talsec, approov, dexguard, appdome, doverunner, digitalai

Ejecutando detección pasiva...
Resultados: 3 protecciones detectadas:
- [DETECTADO] Detección de root (biblioteca RootBeer)
- [DETECTADO] Detección de emulador
- [NO DETECTADO] Detección de Frida

findings-rda.json generado con reporte completo de detectores.

📖 Capacidades del Skill

Análisis Estático (Fases 0-3)

CapacidadDescripción
Descompilación APKJADX para Java/Kotlin, APKTool para smali/recursos
Detección de FrameworkReact Native, Flutter, Cordova, Xamarin, Nativo
Análisis de OfuscaciónProGuard/R8, DexGuard, patrones personalizados
Análisis de Manifest50+ verificaciones de seguridad para componentes exportados, permisos, deep links
Abuso de IPC / IntentsIntent injection, relays de intents anidados, PendingIntent, FileProvider y pivotes vía deep link
Detección de SecretosAPI keys, contraseñas, tokens en código y recursos
Trazado de Flujo de DatosMetodología source-to-sink con niveles de confianza
Semgrep SAST (Fase 2.5)70+ reglas alineadas a MASTG para escaneo automatizado de código

Análisis Dinámico (Fase 4)

CapacidadDescripción
Scripts Frida37 scripts para hooking, bypass, interceptación y triage nativo
Bypass SSL Pinning30+ implementaciones (OkHttp, TrustManager, WebView, React Native, Flutter)
Bypass Root Detection30+ paquetes de root, 80+ paths, hooks nativos (fopen, access, stat) y una sonda enfocada para root detection nativo
Runtime Defense Analysis (RDA)18 entradas de catálogo, 14 detectores Frida ejecutables y runner autorizado de perfiles bypass
Intercepción CryptoMonitorear Cipher, MessageDigest, Mac, Signature
Bypass BiometricBiometricPrompt, FingerprintManager, crypto-object binding
Inspección KeystoreListar entradas, extraer metadata, verificar flags de seguridad
Intercepción de RedCadenas OkHttp, HttpURLConnection, monitoreo WebSocket
Hooking NativoJNI_OnLoad, RegisterNatives, hooks por offset y sondas nativas con carga selectiva

Helper de Explotación Frida

# Listar scripts disponibles
python3 scripts/07-tools/frida-exploit-helper.py --list-scripts

# Hookear funciones de memoria
python3 scripts/07-tools/frida-exploit-helper.py -p com.target.app --hook malloc,free

# Usar script bundled de bypass SSL pinning
python3 scripts/07-tools/frida-exploit-helper.py -p com.target.app --script ssl-pinning-bypass

# Análisis de layout de memoria
python3 scripts/07-tools/frida-exploit-helper.py -p com.target.app --layout

# Runtime Defense Analysis (RDA) — detectar protecciones de la app
python3 scripts/07-tools/frida-exploit-helper.py -p com.target.app --runtime-defense

Flujo Completo con Todos los Módulos

# Auditoría estática con enriquecimiento Semgrep
bash scripts/auto-audit-static.sh app.apk --semgrep

# Ejecutar runtime defenses y scoring como módulos explícitos
bash scripts/02-rasp/runtime-defense-analyzer.sh app.apk com.target.app --active-mode --authorized-lab --output findings-rda.json
python3 scripts/03-static-analysis/semgrep-scan.py decoded/ --output semgrep.json
python3 scripts/05-scoring/calculate-score.py findings.json --json-output

Modificación de APK

CapacidadDescripción
Smali PatchingModificar bytecode Dalvik directamente
Edición de RecursosCambiar XML, strings, configuraciones
Manipulación Estática de PinningSobrescribir network_security_config, reemplazar pins, certificados embebidos o truststores BKS/JKS
ReempaquetadoReconstruir, alinear, firmar con flujo correcto: zipalign → apksigner

Reportes (Fase 5)

CapacidadDescripción
Scoring CVSS 4.0Calificaciones de severidad compatibles con FIRST.org
Score de Cumplimiento MASVSCobertura de controles OWASP MASVS v2 con semántica explícita pass/fail/not-tested
Score de Riesgo EjecutivoResumen opcional de riesgo de negocio 0-100/A-F, separado de CVSS y MASVS
Enriquecimiento OSINTCorrelación pasiva opcional de paquete, dominios, endpoints, filtraciones públicas y URLs archivadas
Modos de AuditoríaPresets para flujos quick, static, full, protected-app, OSINT y reporting-only
Mapeo OWASP MASTGIDs de tests y categorías MASVS
Plantillas ProfesionalesResumen ejecutivo, hallazgos, remediación

🔧 Estructura del Skill

Android-Pentesting-Skill/
├── SKILL.md                              # Definición del skill (Fases 0-5)
├── references/                           # 83 archivos de referencia/soporte
│   ├── attack-patterns.md                # Patrones OWASP M1-M10
│   ├── intent-injection.md               # Guía de nested intents / confused deputy
│   ├── pendingintent-security.md         # Abuso y hardening de PendingIntent
│   ├── dynamic-analysis-setup.md         # Frida/Objection + playbook SSL pinning
│   ├── frida-scripts-index.md            # Catálogo canónico de scripts bundlados
│   ├── cvss-scoring-guide.md            # Metodología CVSS 4.0
│   ├── reporting-templates.md            # Plantillas de hallazgos
│   ├── flutter-security.md               # Guía de seguridad Flutter
│   ├── react-native-security.md          # Guía de seguridad React Native
│   ├── android-keystore2-testing.md     # Testing Keystore2 (Android 12+)
│   ├── biometric-testing-comprehensive.md # Testing Biométrico
│   ├── deep-link-exploitation.md         # Ataques de deep links
│   ├── project-manifest.md               # Inventario real de archivos
│   └── ... (70 más)
├── assets/frida-scripts/                 # 38 archivos (37 scripts Frida + README)
│   ├── ssl-pinning-bypass.js             # Bypass SSL pinning
│   ├── root-detection-bypass.js           # Bypass detección root
│   ├── native-root-detection-probe.js     # Triage enfocado de root/RASP nativo
│   ├── native-hook.js                    # Helper genérico JNI / nativo
│   ├── biometric-bypass.js               # Bypass autenticación biométrica
│   ├── network-interceptor.js           # Intercepción HTTP/HTTPS
│   ├── crypto-intercept.js               # Hook de operaciones crypto
│   └── ... (30 más)
├── scripts/                              # Scripts de utilidad y validación
│   ├── 01-cross-platform/               # Análisis específico por framework
│   │   ├── cordova-analysis.sh
│   │   ├── flutter-analysis.sh
│   │   ├── react-native-analysis.sh
│   │   └── unity-analysis.sh
│   ├── 02-rasp/                         # Runtime Defense Analysis (RDA)
│   │   ├── detector-catalog.json          # Registro de 18 detectores
│   │   ├── runtime-defense-analyzer.sh # Punto de entrada Fase 4 RDA
│   │   ├── rasp-bypass-runner.sh         # Runner autorizado de stacks bypass
│   │   ├── bypass-profiles.json          # Mapa DRY detector-a-bypass
│   │   ├── findings-schema.json          # Schema compartido de hallazgos
│   │   └── rasp-detectors/              # 14 scripts Frida detectores + 4 entradas no aplicables
│   │       ├── rootbeer.js
│   │       ├── safetynet.js
│   │       ├── emulator.js
│   │       ├── debug.js
│   │       ├── frida-detect.js
│   │       ├── screenshot.js
│   │       ├── screenrecorded.js
│   │       └── custom.js
│   ├── 03-static-analysis/              # Semgrep SAST + fusión
│   │   ├── semgrep-scan.py              # Wrapper semgrep
│   │   ├── merge-findings.py            # Deduplicación
│   │   ├── update-rules.sh              # Sync de reglas upstream
│   │   └── semgrep-rules/              # 70+ reglas MASTG
│   ├── 04-android-15-16/               # Scripts específicos Android 15/16
│   │   ├── android15-apis.js
│   │   ├── passkey-test.js
│   │   └── privacy-sandbox-test.sh
│   ├── 05-scoring/                     # Scoring de cumplimiento MASVS
│   │   ├── calculate-score.py           # Motor de scoring (0-100 + A-F)
│   │   ├── masvs-matrix.json          # 23 controles MASVS v2
│   │   ├── masvs-mapping.json         # Mapeo hallazgo-a-control
│   │   └── update-coverage.py         # Generador de tabla de cobertura
│   ├── 06-setup/                       # Verificación y validación
│   │   ├── preflight-check.sh
│   │   ├── preflight-check.py
│   │   ├── preflight-check.ps1
│   │   ├── validate-frida-scripts.sh
│   │   └── validate-shell-scripts.sh
│   ├── 07-tools/                       # Herramientas principales de análisis
│   │   ├── frida-exploit-helper.py
│   │   ├── generate-report.py
│   │   ├── rop-helper.py
│   │   ├── correlate-findings.py
│   │   ├── mobsf-api-scan.py
│   │   └── burp-findings-export.py
│   ├── auto-audit-static.sh           # Orquestador del flujo principal
│   ├── audit-android-components.sh     # Auditoría de componentes de seguridad
│   └── test-findings.json              # Entrada de ejemplo para reportes
├── references/schemas/                    # 2 schemas JSON para contratos de reportes/hallazgos
└── references/ai-prompts/                 # Prompts de análisis con IA
    ├── java-security-analyzer.md         # Prompts para análisis de código Java
    ├── native-binary-analyzer.md          # Prompts para análisis de binarios nativos
    ├── exploit-generator.md               # Prompts para generación de PoC
    └── report-enhancer.md                # Prompts para mejora de reportes

🎓 Frases de Activación

El skill se activa cuando el usuario dice:

  • "audita este APK"
  • "analiza app android"
  • "pentest móvil"
  • "seguridad APK"
  • "descompilar APK"
  • "evaluación de vulnerabilidades android"
  • "ingeniería inversa android"
  • "modificar APK"
  • "bypass SSL pinning"
  • "bypass detección root"
  • "intent injection"
  • "abuso de deep links"

⚠️ Limitaciones

  1. Análisis dinámico requiere dispositivo o emulador — Frida necesita un sistema Android ejecutándose
  2. Algunos packers requieren unpacking manual — DexGuard 9+, Arxan pueden necesitar debugging interactivo
  3. Restricciones Android 14+ — Ciertos comportamientos de Intent requieren flags -n package/activity explícitos
  4. Versiones de Frida deben coincidir — frida-server en dispositivo debe coincidir exactamente con frida-tools en host
  5. Flutter usa BoringSSL nativamente — Los hooks Java SSL no funcionan, se necesitan hooks nativos

📚 Alineación con Estándares

Este skill está alineado con:

  • OWASP MASTG — Mobile Application Security Testing Guide
  • OWASP MASVS — Mobile Application Security Verification Standard
  • Enriquecimiento OSINT pasivo — Correlación de evidencia pública bajo alcance para hallazgos APK
  • OWASP Mobile Top 10 2024 — Top 10 riesgos móviles
  • CVSS 4.0 — Common Vulnerability Scoring System

🔐 OWASP Mobile Top 10 (2024)

IDCategoría
M1Uso Impropio de Credenciales
M2Seguridad de Cadena de Suministro Inadecuada
M3Autenticación/Autorización Insegura
M4Validación de Entrada/Salida Insuficiente
M5Comunicación Insegura
M6Controles de Privacidad Inadecuados
M7Protecciones Binarias Insuficientes
M8Configuración de Seguridad Incorrecta
M9Almacenamiento de Datos Inseguro
M10Criptografía Insuficiente

🤝 Contribuir

¡Las contribuciones son bienvenidas! Revisa el directorio references/ para áreas que necesitan expansión.

📄 Licencia

Apache License 2.0 — Ver archivo LICENSE para detalles.

👨‍💻 Autor

DragonJAR SAShttps://www.DragonJAR.org

Expertos en servicios de seguridad informática, validación proactiva y seguridad ofensiva.


⚠️ Descargo de Responsabilidad: Este skill está destinado solamente para pruebas de seguridad autorizadas. Los usuarios deben obtener autorización apropiada antes de realizar cualquier evaluación de seguridad. Los autores no son responsables del mal uso de esta herramienta.