Cómo analizar archivos APK con MobSF (parte 1)

Share this…

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.

mobsf

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.

interfaz

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.

recent scans

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

file information

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

app information

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

elementos vulnerables

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

naturaleza del código

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

opciones mobsf

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

informacion del certificado

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

listado de permisos

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

android api

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

extras de seguridad

strings

Próximamente…

A lo largo de este post hemos realizado el análisis estático de un APK con MobSF detallando la información más relevante que esta herramienta nos ha brindado. Dado que la funcionalidad de este framework es bastante extensiva, continuaremos con el análisis dinámico de la aplicación en próximas publicaciones.

Fuente:https://www.welivesecurity.com/