En pasadas publicaciones estuvimos viendo algunas maneras de realizar análisis dinámico de muestras mediante la instrumentación de código. Vimos rápidamente cómo podemos utilizar pindroids para este propósito e igualmente planteamos casos de instrumentación con Frida. Ahora veremos cómo pueden analizarse aplicaciones en busca de comportamiento malicioso o vulnerabilidades de seguridad mediante la utilización de Cydia Substrate. Si quieres iniciarte en el análisis de malware móvil, este tutorial es para ti.

¿Qué es Cydia Substrate?

Cydia Substrate surgió como una aplicación para iOS que permitía realizar alteraciones al sistema operativo con el objeto de realizar personalizaciones según los gustos de sus usuarios. Fue hacia mediados de 2013 que esta herramienta se liberó también para el sistema operativo Android. Para utilizara en cualquiera de ambos sistemas, es requisito que acceda a funciones de usuario root, por lo que es necesario aplicar previamente un proceso de jailbreaking o rooting.

Rápidamente, su capacidad para crear hooks sobre las llamadas del sistema y así interceptar el comportamiento de las aplicaciones convirtió a Cydia Substrate en una herramienta óptima para el análisis de malware.

¿Qué complementos posee?

Cydia Substrate funciona como el puente necesario para que otras herramientas de análisis puedan lograr su cometido. Por ejemplo, Introspy es una de ellas. Esta tool, creada por iSECPartners, permite seleccionar de un listado de características cuáles son las apps y funcionalidades que estamos interesados en vigilar para luego informarnos cada vez que la aplicación que estamos estudiando haga uso de esas API.

Otro componente compatible con Cydia Substrate es Android SSL TrustKiller –del mismo creador– que permite espiar los datos transmitidos a través de conexiones SSL, violando la seguridad del proceso conocido como certificate pinning o SSL pinning.

Además, podemos crear nuestros propios módulos para realizar hooks más específicos sobre las aplicaciones.

Pasos simples para su utilización

Paso 1: crea tu emulador

El primer paso será la creación del emulador que utilizaremos para realizar el análisis dinámico o la preparación y conexión del dispositivo físico de pruebas. En este último caso, procura reinstalar el estado de fábrica del terminal para asegurarte de que no existen alteraciones sobre el entorno de análisis.

En este caso en particular utilizaremos un emulador de Genymotion con API 16. Si utilizáramos el emulador de Android, deberíamos descargar la API de Cydia Substrate utilizando el SDK. Para lograrlo, dirigirnos sobre el menú superior a Tools > Manage Add-on Sites… > User Defined Sites > New… e ingresar la siguiente URL:

http://asdk.cydiasubstrate.com/addon.xml

img_1

Paso 2: instala Cydia Substrate, sus complementos y la muestra a analizar

Deberás conseguir el APK de Cydia Substrate o bien instalar Google Play Store en el emulador para descargar la aplicación desde el mercado oficial. Una vez que has instalado la aplicación, deberás iniciarla y enlazar los archivos necesarios:

img_2

Luego instalaremos Introspy y Android SSL TrustKiller, los componentes de los que hablamos con anterioridad. Llegado este momento puedes duplicar tu emulador y almacenar así una copia de este con las herramientas necesarias ya instaladas; de este modo, en caso de que algo no salga según lo planeado, no deberás configurar todo el entorno desde el comienzo.

Ahora podemos pasar a instalar el paquete a estudiar en el emulador. Genymotion permite arrastrar la muestra de malware con el puntero del ratón, pero esta acción ejecutará la aplicación inmediatamente, lo que no queremos que ocurra. Entonces utilizaremos la herramienta ADB con la siguiente línea de código:

adb install <ruta_apk>

Si posees más de un emulador ejecutándose, deberás indicar también el emulador en cuestión con el parámetro -s. Puedes acceder a la lista de dispositivos conectados con adb mediante el comando que se aprecia a continuación:

adb devices

Paso 3: configura IntroSpy

A continuación, abre la aplicación IntroSpy y selecciona entre la lista de aplicaciones aquella que te interesa estudiar. Dispondrás también de una lista de características de las que podrás marcar las opciones que quieres que IntroSpy registre por ti.

Por ejemplo, si mantienes seleccionada la opción «General Crypto» se registrarán los datos antes y luego de las llamadas a la API criptográfica del sistema, conjuntamente a datos de los algoritmos utilizados. Si además seleccionamos la opción «Key» accederemos a las claves utilizadas para el cifrado de datos.

img_3

La opción «NO DB» desactiva la utilización de la base de datos para el registro, mientras que «STACK TRACES» reducirá el tamaño de los logs almacenando menos información por cada entrada. Para ver en tiempo real los mensajes de IntroSpy, podemos ejecutar en consola el siguiente comando:

adb logcat -s "Introspy"

Paso 4: intercepta el tráfico SSL

Si al realizar el análisis estático del código has notado la utilización de librerías SSL, puedes configurar el entorno de trabajo para interceptar los datos enviados. Anteriormente hemos publicado otros tutoriales que puedes seguir para entender cómo configurar tu entorno de análisis para interceptar tráfico enviado mediante HTTPS.

No obstante, si la aplicación en cuestión implementa certificate pinning deberás también instalar Android SSL TrustKiller. Para ello simplemente utiliza adb install o, si usas Genymotion, arrastra el ejecutable y suéltalo sobre la pantalla del emulador.

Es posible que debas enlazar nuevamente los archivos de Cydia Substrate y, para estar seguros, puedes reiniciar el sistema. Si echas un vistazo a los logs del sistema podrás ver las notificaciones de Cydia Substrate sobre los hooks realizados.

Paso 5: ejecuta la aplicación que deseas analizar

Una vez que has configurado tu entorno de trabajo, puedes iniciar la aplicación que quieres estudiar. En Burp Suite podrás ver tráfico protegido con SSL que abandona el emulador, mientras que IntroSpy comenzará a registrar acciones realizadas por la aplicación.

img_4

Prueba toda la funcionalidad posible para intentar encontrar comportamientos ocultos. Puedes utilizar tools como Exerciser Monkey para generar eventos de manera aleatoria.

Paso 6: analizar los registros guardados

Para analizar los registros de IntroSpy disponemos de distintas opciones. La manera más sencilla pero menos efectiva de hacerlo resulta almacenar el resultado de logcat en un archivo de texto. No obstante, mencionamos también que IntroSpy almacena la información capturada en una base de datos.

Para encontrar esa base de datos y descargarla desde el emulador al computador podemos abrir el Android Device Monitor y desde él inspeccionar el sistema de archivos hasta hallar la carpeta de datos de la aplicación estudiada en la siguiente ruta:

/data/data/<paquete_app>

Dentro de la carpeta databases debiese existir el archivo introspy.db. Podemos copiar el archivo utilizando la GUI de Android Device Monitor o bien mediante el comando adb pull <ruta_origen> <ruta_destino>.

img_5

Para analizar el archivo de base de datos requeriremos descargar Introspy-Analyzer: una herramienta basada en scripts de Python, creada por iSECPartners para el análisis de los registros almacenados que nos permitirá generar un reporte en formato HTML.

Abre una terminal de comandos y localízate donde se encuentra el archivo introspy.py. A continuación ingresa el siguiente comando:

python introspy.py –p android –o <ruta_reporte> <ruta_introspy.db>

También puedes instalar Introspy-Analyzer mediante el comando que se muestra a continuación:

pip install git+https://github.com/iSECPartners/Introspy-Analyzer.git

En cuyo caso luego podrás ejecutar la herramienta como se describe en la siguiente línea:

python -m introspy -p android -o <ruta_destino> <ruta_introspy.db>

Una vez que el proceso haya terminado, navega hasta la carpeta donde has guardado el reporte y abre report.html con tu navegador web. Podrás acceder a un reporte muy similar al que se muestra en la siguiente captura de pantalla:

img_6

Conclusión

Puedes utilizar Cydia Substrate para mucho más que personalizar tu dispositivo. Incluyendo esta herramienta en tu entorno de análisis podrás descubrir comportamientos maliciosos en aplicaciones mediante el testeo de caja negra, identificar vulnerabilidades –como información sensible que está siendo filtrada a entornos inseguros– o encontrar fallas de rendimiento. Por esto, no resulta difícil entender cómo Cydia Substrate aún hoy continúa siendo una herramienta útil en todo entorno móvil de pruebas.