El panorama de amenazas móviles evoluciona y presenta desafíos cada vez más sofisticados para la comunidad de ciberseguridad. Comprender las herramientas y técnicas fundamentales para el análisis de malware en dispositivos móviles es crucial para investigadores, analistas forenses y profesionales de seguridad.

Por ello, a continuación, veremos una guía básica para tener de referencia a la hora de efectuar nuestros análisis en dispositivos con sistema operativo Android o iOS.

¿Por qué es diferente analizar malware móvil respecto a sistemas tradicionales?

El análisis de malware en móviles, a diferencia del análisis sobre sistemas Windows, Linux, o macOS, presenta desafíos únicos:

  • Sistemas operativos cerrados o semicerrados (como iOS).
  • Entornos virtualizados y emulados fácilmente detectables.
  • Fuertes restricciones de permisos y acceso al sistema de archivos.
  • Técnicas evasivas avanzadas, como el dynamic code loading y la detección de análisis.
  • Sin embargo, estas diferencias no deben alejarnos, sino estimularnos a vencer estos desafíos.

Al analizar malware, tanto en Android como en iOS, contamos con dos enfoques de análisis bien diferenciados que nos van a ayudar a determinar las características y el comportamiento del malware que estemos analizando.

Por un lado, está el enfoque estático con el que analizaremos la muestra sin ejecutarla y con el que vamos a observar las características como el hash, las cabeceras del archivo y su arquitectura, las strings, identificación de ofuscación y llamadas a APIs, entre otras.

El enfoque dinámico, por otro lado, analiza las características observadas en el enfoque estático y busca determinar cómo se comporta la pieza de código que estamos analizando en el sistema. Aquí, observaremos si el malware ejecuta procesos, si se inyecta en otros, si crea, modifica o borra archivos, y la actividad de red, entre otras.

Si bien, tanto en Android como en iOS, la lógica de contar con un entorno aislado de análisis y luego analizar las muestras de modo estático y dinámico se mantiene, a la hora de la práctica hay diferencias que iremos abordando en cada sección, pues al fin y al cabo son sistemas distintos cada uno con su naturaleza propia.

Consideraciones para un entorno de laboratorio seguro

Antes de comenzar, es importante entender que vamos a necesitar un entorno de pruebas aislado y seguro para realizar los análisis. Hay que recordar que vamos a analizar piezas de código potencialmente maliciosas y debemos evitar ser víctimas de ellas.

Como dijimos antes, existen diferencias entre Android y iOS, por lo que vamos a detallar las consideraciones en cada sistema sobre el que vayamos a realizar los análisis.

Entorno de pruebas sobre Android:

Será esencial disponer de una PC dedicada donde puedas tener:

  • Emuladores personalizados como Android Studio Emulator, Genymotion con soporte para arquitecturas x86 y ARM, ya que esto permitirá emular las piezas de código, incluso con la posibilidad de elegir versiones de sistemas operativos específicos y también distintos modelos de smartphones
  • ADB (Android Debug Bridge) para control y extracción de datos.

Es importante también contar con dispositivos físicos rooteados, ya que, frente a detecciones de emulación, es más confiable contar con un smartphone dedicado que nos ayudará a precisar muchos comportamientos de las piezas que vayamos a analizar.

Entorno de pruebas sobre iOS:

Preferentemente, contar un equipo que tenga Xcode y una cuenta de apple developer, porque en muchos casos será necesario reempaquetar piezas de código y firmarlas.

También será de importancia contar dispositivos iPhones que soporten las últimas versiones de iOS y para los que existan posibilidad de realizar jailbreak. El uso de dispositivos físicos sigue siendo preferido para análisis más precisos, ya que muchas muestras de malware detectan emuladores y alteran su comportamiento.

Frida, Cycript y Objection son las herramientas de instrumentación y hooking, con las que debes contar.

Análisis Estático y dinámico en Android

Luego, según el tipo de enfoque, estático o dinámico, agregaremos una cantidad de herramientas para complementar los análisis.

Tanto para Android y como iOS es fundamental contar con entornos fáciles de restaurar a un estado limpio tras cada análisis, veremos que será muy común tener que volver una y otra vez a la instancia del sistema base.

Análisis estático en Android:

El análisis estático permite inspeccionar el código sin ejecutarlo. Entre las técnicas básicas que vamos a necesitar ejecutar se encuentran:

1) Técnicas

Descompilación del APK

  • Extraer AndroidManifest.xml, recursos y clases DEX.
  • Herramientas: apktool, JADX, dex2jar.

Revisión del AndroidManifest

  • Permisos sospechosos (e.g., READ_SMS, SEND_SMS, INTERNET, SYSTEM_ALERT_WINDOW).
  • Componentes maliciosos ocultos (services, receivers).

Análisis de strings

  • Buscar dominios, IPs, comandos, rutas, credenciales.
  • Herramientas: strings, grep, MobSF.

Análisis de código Java/Dalvik

  • Buscar patrones sospechosos: Runtime.exec, Base64, Crypto, WebView.loadUrl.
  • Identificación de técnicas de ofuscación.

Inspección de certificados

  • Validar firma del APK y certificados de terceros embebidos.

Análisis de bibliotecas nativas (C/C++)

  • Revisión de librerías .so sospechosas con Ghidra o IDA

2) Herramientas

Herramienta Descripción
APKTool Descompila recursos y manifiestos de APK
JADX / JEB / CFR Descompiladores de código DEX a Java
MobSF Análisis automatizado de APK estático y dinámico
Androguard Framework en Python para analizar código DEX/APK
Bytecode Viewer Visor múltiple de bytecode para DEX/JAR/APK
ClassyShark Visualizador de APK y estructuras de clases
Quark Engine Analizador estático con heurísticas para detectar malware en APK
VirusTotal Subida de APK para escaneo rápido con múltiples motores
ApkLeaks Busca información sensible (tokens, keys, endpoints) en APKs

Análisis dinámico Android:

El comportamiento del malware suele revelarse solo durante la ejecución y es por ello que mientras que ejecutamos el malware debemos tener las siguientes consideraciones:

Ejecución controlada del APK

  • En emulador o dispositivo real con ADB.
  • Configurar red para monitoreo de tráfico.

Monitoreo del comportamiento en tiempo real

  • Uso de logcat, strace, frida, objection.

Captura de tráfico de red

  • Proxy: Burp Suite, mitmproxy, Wireshark.
  • Verificar si hay SSL pinning activo.

Hooking e instrumentación

  • Interceptar funciones y modificar comportamientos.
  • Herramientas: Frida, Xposed, AppMon.

Bypass de técnicas anti-análisis

  • Desactivar detección de root/emulador.
  • Desofuscar código dinámicamente.

Extracción de datos en runtime

  • Obtener variables, memoria, credenciales desde RAM.

 
Herramienta Descripción
Xposed Framework Permite hooks dentro de apps Android (root requerido)
Frida Instrumentación dinámica en tiempo real (ideal para hooking en apps)
Magisk + LSPosed Alternativa moderna a Xposed para entornos rooteados
Genymotion / AVD Emuladores para correr y monitorear comportamiento de apps
Wireshark Monitorea tráfico de red desde la app
tcpdump Captura de paquetes en Android (usando root o ADB)
Strace / Logcat Monitoreo de procesos y registros del sistema
CuckooDroid Sandbox de análisis automatizado de APKs (basado en Cuckoo)
AppMon (Frida) Instrumentación automática de llamadas de métodos Android
Objection Herramienta basada en Frida para bypass de root/jail, dumps, etc.

Análisis Estático y dinámico en iOS

Análisis estático en iOS

Al igual que en sistemas Android existen técnicas básicas que vamos a necesitar ejecutar, entre las que se encuentran:

Extracción del archivo IPA

  • Desempaquetar .ipa y extraer el binario Mach-O.

Inspección de estructuras Mach-O

  • Revisar secciones, encabezados, librerías vinculadas.
  • Herramientas: otool, MachOView.

Reversing del binario

  • Desensamblado de ARM/ARM64.
  • Herramientas: Hopper, IDA, Ghidra.

Extracción de clases Objective-C

  • Usar class-dump o class-dump-z para analizar interfaces públicas.

Búsqueda de cadenas y funciones sospechosas

  • API de redes, uso de NSURLSession, objc_msgSend, dlopen, etc.

Análisis de permisos y plist

  • Revisión de archivos .plist, Entitlements, uso de servicios privados.

Nota: Apple aplica técnicas de code signing, lo que dificulta la inyección de código o modificación de binarios si no se hace en un entorno con jailbreak.

 
Herramienta Descripción
class-dump / class-dump-z Extrae interfaces de Objective-C de binarios
Hopper / Ghidra / IDA Pro Disassemblers para binarios ARM/ARM64
Cycript para inspección en vivo y manipulación de objetos del runtime Objective-C
Genymotion / AVD Emuladores para correr y monitorear comportamiento de apps
ipa-extract (parte de libimobiledevice) Para desempaquetar archivos IPA
otool / MachOView Herramientas para examinar binarios Mach-O
Radare2 / rizin Framework para reversing de binarios
MobSF También soporta análisis básico de archivos IPA
bagbak Extrae y decompila apps desde dispositivos jailbreakeados
ppduck / IPAPatch Herramientas para dumpear IPAs protegidas
ios-deploy Para instalar y conectar apps a dispositivos reales
QARK (limitado) Puede hacer análisis de seguridad en código fuente iOS

Análisis dinámico iOS:

En cuanto a las técnicas esenciales sobre el análisis dinámico para iOS nos encontramos con:

  Instrumentación del binario

  • Inyección con Frida, uso de objection, Cycript, Flex.

  Ejecución en dispositivo jailbreakeado

  • Correr app maliciosa controladamente en iOS modificado.

  Hooking de funciones clave

  • Interceptar llamadas a API sensibles (red, archivos, crypto, sensores).

  Captura de tráfico

  • Uso de proxy con bypass de SSL pinning (ej: SSL Kill Switch 2).

  Análisis de procesos y comportamiento

  • Uso de herramientas de Xcode (Instruments, lldb) o de terceros.

  Dump de memoria

  • Extraer información en caliente desde procesos activos.

Herramienta Descripción
Frida Instrumentación de apps iOS (requiere jailbreak o Frida gadget embebido)
Cycript / MTerminal Hooking e inspección en tiempo real en entornos jailbroken
Objection Interacción automatizada con apps iOS (necesita Frida)
Instruments (Xcode) Profiling y tracing nativo de iOS (con certificado de desarrollo)
tcpdump / Wireshark Para capturar tráfico de red en iOS (más complicado sin jailbreak)
Flex Herramienta para modificar comportamiento de apps en runtime
SSL Kill Switch 2 Bypass de pinning SSL en apps iOS
Frida-trace Para interceptar funciones clave en runtime
Appmon (Frida) Soporte limitado en iOS, pero útil para funciones comunes

Buenas prácticas al analizar malware

No uses tu máquina principal: trabaja siempre desde un entorno aislado o máquina virtual.

Captura todo: tráfico, logs, imágenes del sistema y hashes antes y después de la ejecución.

Compara con versiones legítimas si sospechas de una aplicación troyanizada.

Mantente actualizado: el ecosistema móvil cambia constantemente. Sigue fuentes como VirusTotal, Koodous y WeLiveSecurity.

Conclusión

Entre iOS y Android, como pudimos observar, existen diferencias entre las que podemos destacar:

  • OS tiene mayores barreras técnicas y legales, y requiere jailbreak o entorno de desarrollo certificado.
  • Android ofrece mayor flexibilidad para análisis, incluso sin root en algunos casos.
  • El análisis dinámico es crucial para detectar comportamientos ocultos, C2, cargas tardías, etc.
  • La instrumentación con Frida es transversal y poderosa en ambos sistemas.

Sin dudas, el análisis de malware móvil es un campo desafiante y dominar las herramientas y técnicas presentadas aquí es fundamental para cualquier analista de seguridad. La combinación de análisis estático y dinámico, adaptado a las particularidades de cada plataforma, es clave para desentrañar las amenazas y proteger el mundo móvil.