Saltar a contenido

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

  1. Descarga el archivo ZIP de Android Studio desde la web oficial Android Studio.

Paso 2: Extracción y Configuración

Extrae el archivo descargado:

unzip android-studio-*.zip -d ~/android-studio

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:

androidStudio

Y el emulador con:

androidEmulator

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:

  1. Habilita Opciones de Desarrollador:
  2. 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.

  3. Habilita la Depuración USB:

  4. 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

  1. Lista los AVDs (Android Virtual Devices) con la opción -list-avds:
    androidEmulator -list-avds
    
  2. Inicia el emulador con la opción -writable-system:
    androidEmulator -avd <avd_name> -writable-system
    

Paso 2: Exporta el Certificado desde Burp Suite

  1. Desde Burp Suite, exporta el certificado en formado DER:
  2. Ve a Proxy > Opciones > Import/Export CA certificate.
  3. Exporta el archivo como burp-cert.der.

Paso 3: Convierte y Copia el Certificado en el Emulador

  1. Convierte el certificado DER al formato PEM:

    openssl x509 -inform DER -in burp-cert.der -out burp-cert.pem
    

  2. Obtén el hash del certificado:

    openssl x509 -inform PEM -subject_hash_old -in burp-cert.pem | head -1
    

  3. Renombra el certificado usando su hash:

    mv burp-cert.pem 9a5ba575.0
    

  4. Envía el certificado al emulador:

    adb root
    adb remount
    adb push 9a5ba575.0 /sdcard/
    adb shell mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/
    adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0
    

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

  1. Creamos un Entorno Virtual en Python para aislar las dependencias de la herramienta:

    python3 -m venv frida-env
    

  2. Activamos el entorno virtual:

    source frida-env/bin/activate
    

Paso 2: Instalamos Frida y Objection

  1. Instalamos ambas aplicaciones con pip:
    pip install frida-tools objection
    

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

  1. Descarga el binario frida-server desde la web oficial de Frida

  2. Extrae el archivo descargado.

Paso 2: Sube y Configura Frida-Server en el Emulador

  1. Sube el binario frida-server al emulador:
    adb push frida-server /data/local/tmp/
    adb shell chmod 755 /data/local/tmp/frida-server
    
  2. Inicia el servidor Frida:
    adb shell /data/local/tmp/frida-server &
    

Paso 3: Verificación

Garantiza que Frida está funcionando listando los procesos del emulador:

frida-ps -U

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

  1. Instala APKLab desde el mercado de extensiones de Visual Studio Code.
  2. Abre el archivo APK en APKLab para descompilar automáticamente la aplicación y mostrar el código.
APK Lab Visual Studio Extension
Extensión APK Lab para Visual Studio Code

Paso 2: Localizar el código de detección desde la raíz

  1. 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".

  2. 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:

frida-ps -Ua

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));
});
Adjuntamos el proceso y ejecutamos el script:

frida -U <PID> -l listmethods.js

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.