Extraído de:
https://www.welivesecurity.co
m/la-es/2011/12/22/herramient
as-analisis-dinamico-malware/
Cómo analizar archivos APK
con MobSF (parte 1)
MobSF es un entorno completo de análisis que permite hacer pruebas
estáticas y dinámicas en ejecutables de Android (APK), iOS (IPA) y
Windows Mobile (APPX).
El proceso de análisis de múltiples archivos APK puede resultar
bastante reiterativo para un investigador de malware, especialmente
si consideramos la gran cantidad de muestras con las que
diariamente se encuentra. Aunque cada uno posea un método
singular de análisis, ciertas tareas deben realizarse tarde o temprano,
ya sea para identificar actividades exportadas o content providers,
capturar el tráfico de red o desofuscar strings, entre otras.
Afortunadamente, existen numerosas herramientas que buscan
simplificar este proceso; anteriormente dimos un vistazo a una de
ellas, AppMon, y esta semana nos dedicaremos a probar otra tool
llamada MobSF (Mobile Security Framework). Es un entorno
multiplataforma de análisis de malware, capaz de desentrañar
rápidamente la esencia de un APK para mostrar al analista un
panorama de aquello a lo que se enfrenta.
¿En qué consiste la herramienta?
MobSF es un entorno completo de análisis que incluye funcionalidad
para la realización de pruebas tanto estáticas como dinámicas.
Podremos descargar la última versión de la aplicación desde Github y
las instrucciones para su instalación se encuentran claramente
detalladas en la documentación del proyecto, por lo que no
profundizaremos en ellas a lo largo de este artículo.
La herramienta puede ser utilizada para analizar ejecutables de
Android (APK), iOS (IPA) y Windows Mobile (APPX), como también
código fuente empaquetado en archivos ZIP. Dentro del alcance de
esta publicación, nos centraremos en el análisis estático de un
archivo APK.
¡Manos a la obra!
Una vez que hemos completado la preparación del ambiente de
trabajo y lanzado el servidor de MobSF, nos encontraremos con una
interfaz web de inicio que nos invita a cargar al sistema el archivo
que queremos analizar. Esta vez utilizaremos una muestra de
malware identificado por las soluciones de ESET
como Android/Crosate.O.
Tras concretar el análisis estático, MobSF nos mostrará una interfaz
similar a lo que se puede ver en la siguiente imagen, resaltando
algunas características propias de la muestra y su código.
Un menú lateral nos permitirá rápidamente navegar entre las
diferentes secciones del análisis, mientras que en la barra superior
podremos acceder al listado de todos los análisis realizados con
anterioridad por la herramienta.
Los resultados del análisis estático se categorizan en las siguientes
secciones:
Información del archivo: nos mostrará un resumen de sus
características más sobresalientes, que podrán permitirnos su
posterior identificación. Entre ellas encontramos el nombre de
la muestra, su tamaño y los hashes resultados de diferentes
funciones hash (MD5, SHA1, SHA256).
Información de la aplicación: aquí encontraremos detalles
de la aplicación mayormente obtenidos del Android Manifest,
como ser el nombre del paquete, el nombre de clase de la
actividad principal a ser lanzada por el laucher y atributos
referentes a los requisitos de la plataforma para la cual la
aplicación fue desarrollada.
Posibles elementos vulnerables: seguidamente
encontraremos en la pantalla cuatro recuadros que nos
resumen la información referente a las actividades, servicios,
receptores de intentos y proveedores de contenidos, indicando
cuántos de ellos son exportados. La identificación de estos
cuatro elementos es un paso rutinario en cualquier proceso de
análisis de malware o pentesting de aplicaciones, ya que nos
permitirá no solo saber cómo se comporta la aplicación, sino
también vislumbrar posibles puntos de explotación.
Naturaleza del código: esta sección resulta muy interesante
ya que nos permite determinar qué tan compleja es la muestra
que estamos analizando, pudiendo determinar si ejecuta código
nativo, si realiza la carga dinámica de código, si utiliza métodos
por reflexión, si posee alguna función de cifrado o si el código
se encuentra ofuscado.
Análisis del código decompilado: dentro de las opciones
para el análisis del código fuente, MobSF nos permite acceder a
un listado de las clases tanto en formato java como en smali, y
también al archivo manifiesto. Además, encontramos dos
opciones: una para escanear nuevamente la muestra y otra
para iniciar su análisis dinámico.
Información del certificado: el análisis del certificado de un
APK puede arrojar datos muy interesantes en cuanto a quién ha
desarrollado la aplicación y qué otras muestras maliciosas se
han encontrado con el mismo certificado, pudiendo utilizar su
identificador para realizar búsquedas en plataformas
como Koodous.
Listado de permisos: en esta sección podremos observar una
lista de los permisos declarados en el manifiesto de la
aplicación, conjuntamente a una descripción del mismo y una
categorización según la peligrosidad que puede representar
para el sistema al acceder a información o funcionalidad
sensible.
Android API: esta sección resulta muy útil para un analista, ya
que permite identificar rápidamente qué funcionalidades de la
API del sistema son accedidas por cada clase de la aplicación.
De este modo, es muy sencillo identificar qué función realiza
cada clase y podremos concentrarnos en aquello que realmente
nos interese.
Extras de seguridad: además de las secciones antes
discutidas, podremos encontrar otras categorías con detalles de
elementos a ser considerados en cualquier análisis. Por
ejemplo, podremos ver una sección donde se especifica con
detalle cuáles son las actividades, servicios, broadcast
receivers y content providers especificados en la aplicación, o
podremos acceder a un listado de las strings encontradas
dentro del código fuente.
Análisis dinámico
Para realizar el análisis dinámico de APK, la herramienta incluye una VM de
Android que funciona sobre VirtualBox y que debemos configurar al preparar el
entorno de trabajo. Si damos un vistazo a las aplicaciones que en dicha VM
están instaladas obtendremos algunas pistas de cómo funciona el análisis
dinámico de aplicaciones: vemos que se trata de un sistema rooteado que
posee Xposed con diferentes módulos instalados dedicados a burlar técnicas
antiemulación, ocultar el hecho de que el sistema está rooteado, espiar
conexiones SSL incluso con certificate pinning o registrar el funcionamiento de
la aplicación a través de Droidmon.
La imagen que vemos a continuación nos ayudará a recordar cómo se veía la
interfaz web una vez que hemos concretado el análisis estático. Para dar
comienzo al análisis dinámico podemos dirigirnos al menú lateral o bien a la
sección “Options”.
Esto restaurará la snapshot de la VM que guardamos al configurar el entorno de
análisis y abrirá una segunda interfaz web a través de la cual podremos
controlar el proceso. En la parte superior podremos encontrar una secuencia de
botones. Lo primero que deberemos hacer es inicializar el ambiente de trabajo
haciendo clic en el primer botón comenzando por la izquierda; esto configurará
un proxy para las conexiones HTTP(S), instalará el APK y lo inicializará, entre
otras cosas.
Una vez que el ambiente fue creado exitosamente podremos ver en la máquina
virtual cómo se inicializa la aplicación, con la que deberemos interactuar para
detonar diferentes comportamientos. En este caso podemos ver que se trata de
una aplicación extorsiva, una variante del “virus de la policía”.
En la interfaz web también podremos ejecutar comandos directamente
mediante adb y dispondremos de un conjunto de botones que, entre otras
funciones, nos permitirán ver la pantalla de la VM en la página web, generar
intentos para detonar las diferentes actividades –exportadas o no– y
crear snapshots de la máquina virtual. Una vez que hayamos concretado el
análisis podemos proceder a finalizarlo presionando el botón “Finish”.
Esto nos abrirá otra interfaz web que nos permitirá sondear los resultados del
análisis dinámico. En la parte superior podremos ver un conjunto de botones
que nos permitirán descargar el registro de los paquetes HTTP(S) enviados, de
Logcat, de Droidmon, de los dumps del sistema y también los archivos
almacenados en la carpeta de datos de la aplicación ( /data/data/<paquete>).
Otra cosa que podremos observar en la anterior imagen es un botón verde con
la inscripción “Start Web API Fuzzer”. Esto nos abrirá una nueva interfaz que
nos permitirá realizar inteligencia sobre los dominios que hayan sido detectados
al interceptar el tráfico de red, por ejemplo, para recolectar más información
sobre ese dominio.
Del mismo modo que en la interfaz de análisis estático, dispondremos de un
menú lateral que nos permitirá desplazarnos rápidamente entre las diferentes
secciones de los resultados del análisis dinámico. Si observamos la diversidad
de las opciones en este menú podremos darnos una idea de la gran cantidad de
información que podremos obtener con esta herramienta.
A continuación repasaremos algunos de los resultados arrojados por MobSF
para la muestra en cuestión. Parte de la información que se pudo obtener fue la
siguiente:
Archivos accedidos: la herramienta nos muestra un listado de todos
los archivos que fueron accedidos por la aplicación durante su ejecución.
En particular, podemos ver cómo esta muestra accedió al archivo de
preferencias compartidas y a demás ficheros correspondientes a la
apertura de puertos y gestión de conexiones de red.
Información del dispositivo: en esta sección encontraremos todas las
características del dispositivo que permiten su identificación y que
fueron accedidas por la aplicación, como ser el IMEI, el número
telefónico, el nombre de la operadora telefónica o el código ISO del país.
Base 64: cada vez que una cadena de texto sea decodificada en base
64, el resultado de tal función será registrado por MobSF y mostrado al
analista en esta sección.
Reflexión: en esta sección podremos ver las diferentes veces que la
función invoke ha sido llamada con sus respectivos argumentos.
Activity Tester: muestra las capturas de pantallas obtenidas tras iniciar
automáticamente las actividades declaradas en el manifiesto de la
aplicación.
Paquetes HTTP(S): todos los paquetes capturados durante la ejecución
de la aplicación serán mostrados en esta sección, incluyendo aquellas
conexiones protegidas por SSL.
Direcciones URL: las direcciones URL que hayan sido procesadas por la
API de Android aparecerán listadas en esta sección, ya sea que
correspondan al análisis de tráfico de red o a un recurso local. Cabe
mencionar que encontraremos varias URL resultantes de la operatoria de
la VM no necesariamente vinculadas a la ejecución de la muestra.
Malware check: sobre el listado de URL registradas, la aplicación
generará un estimativo de cuán benigno es cada dominio.
Otros: obtendremos mucha más información en el análisis dinámico,
como ser el listado de bases de datos utilizadas por la aplicación y el
listado de archivos accedidos junto a un enlace para poder echarles un
vistazo. La herramienta también nos mostrará un conjunto de strings que
podrían llegar a ser direcciones de correo electrónico, aunque puede
tratarse muchas veces de falsos positivos como ocurre en este caso.
Conclusión
La importancia de este tipo de herramientas gratuitas para el trabajo diario de
los analistas de malware radica en la disminución de tiempo
al automatizar tareas reiterativas, por ejemplo, al analizar archivos APK. El
alcance de MobSF excede ampliamente la funcionalidad que hemos
ejemplificado en esta reducida serie de publicaciones. No obstante, hemos
logrado poner en evidencia cómo este entorno de trabajo puede llegar a ser un
gran aliado en el análisis de códigos móviles.