Frida y análisis dinámico
Frida es la herramienta central del pentest móvil dinámico: un toolkit de instrumentación que inyecta JavaScript en el proceso de una app en ejecución, permitiéndote interceptar y modificar llamadas a funciones, leer y cambiar variables en memoria, saltarte comprobaciones (root/jailbreak detection, SSL pinning) y entender qué hace la app por dentro en tiempo real. Es lo que convierte “leer el código” en “controlar la app mientras corre”.
Qué permite
Sección titulada «Qué permite»- Hooking: interceptar cualquier función (nativa, Java, Objective-C/Swift) antes/después de ejecutarse- Leer/modificar argumentos, valores de retorno y variables en memoria- Llamar a funciones internas de la app desde fuera- Saltar comprobaciones: root/jailbreak detection, SSL pinning, anti-debugging- Volcar secretos, claves de cifrado, datos descifrados en memoriaInstalación y arranque
Sección titulada «Instalación y arranque»# en el equipopip install frida-tools# en el dispositivo# Android (root): frida-server que coincida con la versión; ejecutarloadb push frida-server /data/local/tmp/ ; adb shell "/data/local/tmp/frida-server &"# iOS (jailbreak): instalar Frida desde Cydia/Sileo# listar procesos/appsfrida-ps -U # procesos del dispositivo (USB)frida-ps -Ua # apps instaladasObjection: Frida sin escribir scripts
Sección titulada «Objection: Frida sin escribir scripts»Objection envuelve Frida con comandos listos para las tareas más comunes:
objection -g com.target.app explore# dentro:android hooking list classes # listar clasesandroid hooking watch class com.target.Crypto # observar una claseandroid sslpinning disable # saltar SSL pinningandroid root disable # saltar root detectionandroid keystore list ; ios keychain dump # secretosmemory search / dump # buscar en memoriaObjection es el punto de partida; para lógica específica se escriben scripts Frida.
Scripts Frida (hooking a medida)
Sección titulada «Scripts Frida (hooking a medida)»# Android (Java): hookear un método y ver/cambiar su comportamientoJava.perform(function() { var Login = Java.use("com.target.LoginManager"); Login.checkPassword.implementation = function(pw) { console.log("password introducida: " + pw); // interceptar return true; // forzar login OK };});# iOS (Objective-C): hookear un métodoInterceptor.attach(ObjC.classes.LoginManager["- isValid:"].implementation, { onEnter: function(args) { ... }, onLeave: function(ret) { ret.replace(0x1); } // forzar true});# ejecutar el scriptfrida -U -f com.target.app -l script.js --no-pauseCasos de uso en pentest
Sección titulada «Casos de uso en pentest»# saltar protecciones cliente (que NUNCA deben ser la única seguridad)- bypass de SSL pinning (ver mob-ssl)- bypass de root/jailbreak detection- bypass de biometría / PIN local# extraer secretos en runtime- claves de cifrado, datos descifrados, tokens en memoria# entender/forzar lógica- cambiar valores de retorno (isPremium -> true), saltar validaciones# descubrir el flujo interno y alimentar el ataque al backendDetección y anti-Frida (lo que verás)
Sección titulada «Detección y anti-Frida (lo que verás)»Algunas apps detectan Frida (puertos, nombres de hilos, frida-gadget) o usan anti-debugging. Se puede evadir (scripts anti-anti-Frida, renombrar frida-server, gadget), pero recuerda: estas protecciones elevan el coste, no sustituyen la seguridad del backend.
Para la defensa
Sección titulada «Para la defensa»- No confiar en comprobaciones del cliente (pinning, root/jailbreak, biometría local): un atacante con Frida las salta. La seguridad real está en el backend.
- RESILIENCE (MASVS): detección de instrumentación/Frida, anti-debugging, integridad del código, ofuscación — como capas que encarecen, no como barrera absoluta.
- Datos sensibles mínimos en memoria/cliente; cifrado con claves no extraíbles (hardware-backed keystore/Secure Enclave).
- Asumir que el dispositivo puede estar comprometido: validar y autorizar siempre en el servidor.
Checklist de prueba
Sección titulada «Checklist de prueba»- frida-server/gadget funcionando y app detectada (frida-ps)
- Objection: explorar, listar clases, hooks básicos
- Bypass de SSL pinning (SSL pinning y bypass) y root/jailbreak detection
- Hooks a medida: interceptar argumentos/retornos clave
- Extraer secretos/claves/datos descifrados en memoria
- Forzar lógica (isPremium, validaciones, login)
- Evadir anti-Frida si la app lo implementa
- Usar lo aprendido para atacar el backend (sección Web)