Instalación y Configuración de Herramientas de Análisis en Android
Este artículo describe los pasos necesarios para crear un entorno de pruebas dinámico en Linux/Debian, detallando cómo integrar herramientas como Burp Suite, Frida y Objection, y sus propósitos específicos. También cubre procedimientos para gestionar certificados en un emulador de Android y configurar un entorno de pruebas dinámico. Sigue las instrucciones detalladas para lograr una configuración funcional y lista para el análisis.
Instalar de Android Studio
Android Studio sirve como el IDE principal para el desarrollo y pruebas de aplicaciones Android, ofrece un entorno para la creación, emulación y depuración de aplicaciones, vamos a utilizar esto para una fácil descarga e instalación de avds.
Paso 1: Descargar Android Studio
- Descarga el archivo ZIP de Android Studio desde la web oficial Android Studio.
Paso 2: Extracción y Configuración
Extrae el archivo descargado:
Paso 3: Crear Enlaces Simbólicos
Para agilizar el uso de Android Studio y del emulador, creamos los enlaces simbólicos:
sudo ln -s ~/android-studio/bin/studio.sh /usr/local/bin/androidStudio
sudo ln -s ~/android-studio/emulator/emulator /usr/local/bin/androidEmulator
Ahora, puedes ejecutar Android Studio con:
Y el emulador con:
Paso 4: Usar un dispositivo físico (Opcional)
Aunque esta guía una principalmente un emulador de Android, puedes optar por utilizar un dispositivo físico para una experiencia más realista. Esto requiere habilitar las opciones de desarrollador y usar la depuración USB en tu dispositivo:
- Habilita Opciones de Desarrollador:
-
Ve a Ajustes > Acerca del teléfono y pincha el Número de compilación varias veces hasta que se activen las opciones de desarrollador.
-
Habilita la Depuración USB:
- En Ajustes > Opciones Desarrollador, habilita Depuración USB.
Conecta tu dispositivo al ordenador a través del puerto USB. Ahora puedes utilizar los comandos abd
para instalar, depurar aplicaciones y realizar las mismas pruebas en que con el emulador.
Instalar Certificados Burp en un Emulador Android
Burp Suite es utilizado para interceptar y analizar el tráfico entre aplicaciones Android y los servidores backend. Instalar estos certificados nos permitirá descifrar el tráfico HTTPS para analizarlo.
Paso 1: Inicia el Emulador con un Sistema Escribible
- Lista los AVDs (Android Virtual Devices) con la opción
-list-avds
: - Inicia el emulador con la opción
-writable-system
:
Paso 2: Exporta el Certificado desde Burp Suite
- Desde Burp Suite, exporta el certificado en formado DER:
- Ve a Proxy > Opciones > Import/Export CA certificate.
- Exporta el archivo como
burp-cert.der
.
Paso 3: Convierte y Copia el Certificado en el Emulador
-
Convierte el certificado DER al formato PEM:
-
Obtén el hash del certificado:
-
Renombra el certificado usando su hash:
-
Envía el certificado al emulador:
Paso 4: Verificación
Reinicia el emulador y verifica la instalación comprobando Ajustes > Seguridad > Credenciales de confianza para el certificado "PortSwigger CA".
Instalar Frida y Objection en un Entorno Virtual en Python
Frida es un conjunto de herramientas de instrumentación dinámica para la depuración, pruebas e ingeniería inversa para aplicaciones Android. Objection es una envoltura para Frida que simplifica la evaluación de seguridad automatizando tareas de pruebas comunes.
Paso 1: Creamos un Entorno Virtual
-
Creamos un Entorno Virtual en Python para aislar las dependencias de la herramienta:
-
Activamos el entorno virtual:
Paso 2: Instalamos Frida y Objection
- Instalamos ambas aplicaciones con
pip
:
Configurando Frida-Server en el Emulador
El Servidor Frida facilita la comunicación entre el cliente Frida de su máquina host y el emulador Android para la instrumentación de aplicaciones.
Paso 1: Descargamos el archivo Frida-Server
-
Descarga el binario
frida-server
desde la web oficial de Frida -
Extrae el archivo descargado.
Paso 2: Sube y Configura Frida-Server en el Emulador
- Sube el binario
frida-server
al emulador: - Inicia el servidor Frida:
Paso 3: Verificación
Garantiza que Frida está funcionando listando los procesos del emulador:
Inspección de Métodos: Revisiting Crackme 1
Para demostrar el poder del análisis dinámico, utilizaremos la APK "Uncrackable1" para explorar cómo estas técnicas pueden ser aplicadas en esta práctica.
Explorando la Aplicación con APKLab
Para entender mejor la aplicación, decompile el APK para mostrar su código fuente Java utilizando la extensión APKLab de Visual Studio Code. Esta extensión integra herramientas como JADX para simplificar el proceso.
Paso 1: Configurar APKLab
- Instala APKLab desde el mercado de extensiones de Visual Studio Code.
- Abre el archivo APK en APKLab para descompilar automáticamente la aplicación y mostrar el código.

Paso 2: Localizar el código de detección desde la raíz
-
Usa la funcionalidad de buscar en APKLab para localizar el código responsable de la detección de la raíz mediante la búsqueda de frases como "Root detected".
-
Navega por la implementación pulsando en los resultados buscados.
Eludir la Detección Root
Podemos eludir la detección root modificando lo que devuelve los métodos como c.a()
, c.b()
, y c.c()
. Alternativamente, podemos cambiar la implementación del método onClick()
en MainActivity
, que cierra la aplicación cuando pulsamos "OK" en una alerta.
Usando Frida para la Instrumentación de la Aplicación
Paso 1: Buscamos el ID del proceso de Frida
Listamos los procesos para localizar la aplicación:
Paso 2: Adjuntamos el Proceso y Enumeramos los métodos
Creamos un script para listar los métodos de la aplicación:
// listmethods.js
Java.perform(() => {
const groups = Java.enumerateMethods("*MainActivity*!onCl*");
console.log(JSON.stringify(groups, null, 2));
});
Paso 3: Modificación de la Implementación del método
Usa Frida para modificar el método onClick()
:
// override.js
Java.perform(() => {
const main = Java.use('sg.vantagepoint.uncrackable1.MainActivity$1');
main.onClick.implementation = function () {
console.log('Pwned!');
};
});
Ejecuta el script y verifica que presionando "OK" la aplicación no se cierra.
Extracción de la passphrase secreta
Inspecciona el código más a fondo para buscar la función responsable de descifrar la frase de contraseña (passphrase) secreta. Registra la salida del descifrado utilizando Frida:
// logDecryptor.js
Java.perform(() => {
const AESDecryptor = Java.use("sg.vantagepoint.a.a");
AESDecryptor["a"].implementation = function (bArr, bArr2) {
console.log(`AESDecryptor.decrypt is called: bArr=${bArr}, bArr2=${bArr2}`);
const result = this["a"](bArr, bArr2);
console.log(`AESDecryptor.decrypt result=${result}`);
return result;
};
});
Convierte la matriz de bytes de salida en una string utilizando Python para revelar la frase secreta.
Con esta configuración, Android Studio permite la emulación y depuración de aplicaciones, Burp Suite facilita la interceptación y el análisis del tráfico, Frida permite la instrumentación dinámica de la aplicación, y Objection automatiza tareas comunes de pruebas de seguridad. La sección añadida de análisis dinámico demuestra la aplicación práctica de estas herramientas para extraer secretos y eludir protecciones, lo que convierte esta guía en un recurso completo para las pruebas de seguridad de aplicaciones móviles.
Stay safe. Stay smart. Stay secure.