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.
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.
# 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# Clonar en cualquier ubicación
git clone https://github.com/DragonJAR/Android-Pentesting-Skill.git
# Agregar a la configuración de skills del agenteEl skill espera estas herramientas instaladas:
| Herramienta | Versión | Propósito |
|---|---|---|
| APKTool | 3.0.1+ | Decodificación/reconstrucción de APK (modo aapt2) |
| JADX | 1.5.5+ | Descompilación Java/Kotlin |
| Android SDK | Platform 36+, Build 36+ | adb, aapt2, zipalign, apksigner |
| Frida | 17.9+ | Instrumentación dinámica |
| Objection | 1.12.4+ | Exploración móvil (modo mantenimiento) |
| APKiD | 3.0.0+ | Detección de framework |
Ejecuta el preflight Python para verificar dependencias:
python3 scripts/06-setup/preflight-check.pyVariante shell para Linux o macOS con Homebrew Bash 4+:
/opt/homebrew/bin/bash scripts/06-setup/preflight-check.shO, en sistemas donde /usr/bin/env bash sea Bash 4+:
./scripts/06-setup/preflight-check.shVariante PowerShell para entornos Windows:
./scripts/06-setup/preflight-check.ps1El flujo RASP es DRY por diseño:
- Detectar protecciones con RDA.
- Mapear detectores activos a perfiles de bypass.
- Reutilizar scripts Frida existentes desde
assets/frida-scripts/. - 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-labLos 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.
Prompt del usuario:
Audita este APK: /ruta/a/app.apkRespuesta 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)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)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"}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)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.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...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.| Capacidad | Descripción |
|---|---|
| Descompilación APK | JADX para Java/Kotlin, APKTool para smali/recursos |
| Detección de Framework | React Native, Flutter, Cordova, Xamarin, Nativo |
| Análisis de Ofuscación | ProGuard/R8, DexGuard, patrones personalizados |
| Análisis de Manifest | 50+ verificaciones de seguridad para componentes exportados, permisos, deep links |
| Abuso de IPC / Intents | Intent injection, relays de intents anidados, PendingIntent, FileProvider y pivotes vía deep link |
| Detección de Secretos | API keys, contraseñas, tokens en código y recursos |
| Trazado de Flujo de Datos | Metodología source-to-sink con niveles de confianza |
| Semgrep SAST (Fase 2.5) | 70+ reglas alineadas a MASTG para escaneo automatizado de código |
| Capacidad | Descripción |
|---|---|
| Scripts Frida | 37 scripts para hooking, bypass, interceptación y triage nativo |
| Bypass SSL Pinning | 30+ implementaciones (OkHttp, TrustManager, WebView, React Native, Flutter) |
| Bypass Root Detection | 30+ 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 Crypto | Monitorear Cipher, MessageDigest, Mac, Signature |
| Bypass Biometric | BiometricPrompt, FingerprintManager, crypto-object binding |
| Inspección Keystore | Listar entradas, extraer metadata, verificar flags de seguridad |
| Intercepción de Red | Cadenas OkHttp, HttpURLConnection, monitoreo WebSocket |
| Hooking Nativo | JNI_OnLoad, RegisterNatives, hooks por offset y sondas nativas con carga selectiva |
# 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# 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| Capacidad | Descripción |
|---|---|
| Smali Patching | Modificar bytecode Dalvik directamente |
| Edición de Recursos | Cambiar XML, strings, configuraciones |
| Manipulación Estática de Pinning | Sobrescribir network_security_config, reemplazar pins, certificados embebidos o truststores BKS/JKS |
| Reempaquetado | Reconstruir, alinear, firmar con flujo correcto: zipalign → apksigner |
| Capacidad | Descripción |
|---|---|
| Scoring CVSS 4.0 | Calificaciones de severidad compatibles con FIRST.org |
| Score de Cumplimiento MASVS | Cobertura de controles OWASP MASVS v2 con semántica explícita pass/fail/not-tested |
| Score de Riesgo Ejecutivo | Resumen opcional de riesgo de negocio 0-100/A-F, separado de CVSS y MASVS |
| Enriquecimiento OSINT | Correlación pasiva opcional de paquete, dominios, endpoints, filtraciones públicas y URLs archivadas |
| Modos de Auditoría | Presets para flujos quick, static, full, protected-app, OSINT y reporting-only |
| Mapeo OWASP MASTG | IDs de tests y categorías MASVS |
| Plantillas Profesionales | Resumen ejecutivo, hallazgos, remediación |
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 reportesEl 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"
- Análisis dinámico requiere dispositivo o emulador — Frida necesita un sistema Android ejecutándose
- Algunos packers requieren unpacking manual — DexGuard 9+, Arxan pueden necesitar debugging interactivo
- Restricciones Android 14+ — Ciertos comportamientos de Intent requieren flags
-n package/activityexplícitos - Versiones de Frida deben coincidir — frida-server en dispositivo debe coincidir exactamente con frida-tools en host
- Flutter usa BoringSSL nativamente — Los hooks Java SSL no funcionan, se necesitan hooks nativos
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
| ID | Categoría |
|---|---|
| M1 | Uso Impropio de Credenciales |
| M2 | Seguridad de Cadena de Suministro Inadecuada |
| M3 | Autenticación/Autorización Insegura |
| M4 | Validación de Entrada/Salida Insuficiente |
| M5 | Comunicación Insegura |
| M6 | Controles de Privacidad Inadecuados |
| M7 | Protecciones Binarias Insuficientes |
| M8 | Configuración de Seguridad Incorrecta |
| M9 | Almacenamiento de Datos Inseguro |
| M10 | Criptografía Insuficiente |
¡Las contribuciones son bienvenidas! Revisa el directorio references/ para áreas que necesitan expansión.
Apache License 2.0 — Ver archivo LICENSE para detalles.
DragonJAR SAS — https://www.DragonJAR.org
Expertos en servicios de seguridad informática, validación proactiva y seguridad ofensiva.