Auditorías de seguridad para Apps (I)

¿Quién no lleva su smartphone a mano en este mismo momento? A la vista de todos está que éstos dispositivos se han convertido en algo esencial pero, por este mismo motivo, se convierten en los más crítico en cuanto a seguridad se refiere. ¿Que ocurriría si perdieras tu móvil o si éste se ve afectado por un incidente de seguridad, por ejemplo, una intrusión? ¿Qué información podrían conseguir? ¿Qué acciones podría llevar a cabo un tercero malintencionado? Sólo de pensarlo asusta.

No sólo hay que tener en cuenta las vulnerabilidades del propio sistema operativo, sino también, y quizás más importante, las de las propias aplicaciones (App), las que pueden suponer un punto de entrada perfecto para un potencial atacante, ya sea mediante la explotación de vulnerabilidades en la propia aplicación o, como está de moda últimamente entre los ciberdelincuentes, mediante malware.

En esta serie de artículos se pretende realizar una breve aproximación a la herramienta Mobile Security Framework (MobSF), mostrando sus capacidades. Queda a cargo del lector la exploración práctica, profundizando en análisis más completos.

MobSF es una herramienta especialmente diseñada para el análisis de seguridad de aplicaciones móviles, tanto Android como iOS, con la capacidad de realizar análisis estáticos (de código) y dinámicos, bastante completos y con parte del proceso automatizado. Además, presenta la información de forma elegante e intuitiva mediante su interfaz, pudiendo también obtener el informe completo en formato PDF.

 Para su funcionamiento, se necesitan una serie de requisitos:

Para la puesta en marcha, se deben descargar dos archivos: el propio framework MobSF y la máquina virtual preparada para realizar los análisis dinámicos (en Google Drive). Por el momento, solo está disponible el análisis dinámico para el sistema operativo Android.

El proceso de instalación, como las configuraciones necesarias para preparar el entorno completo, es muy sencillo y se encuentra perfectamente explicado en su Wiki oficial.

Análisis estático

Una vez ejecutamos la herramienta, podemos acceder a su interfaz web, donde nos da la posibilidad de subir una App que analizará de forma automática, llevándonos al informe del análisis al finalizar. Para este caso, hemos seleccionado una aplicación ejemplo cualquiera (Android), la primera que hemos encontrado googleando.

La aplicación presenta la información en diferentes categorías, comenzando por información básica de la App: nombre, tamaño, hashes, nombre del paquete, actividad principal, SDK de compilación, números de actividades, servicios, etc.

cp0

En la opción Code Nature, se da información útil que nos pone en contexto sobre la aplicación analizada: carga de código nativo y dinámico, que utiliza Java Reflection API y librerías de Crypto. Además, el código no se encuentra ofuscado.

También tenemos la posibilidad de visualizar y descargar el código (Java o Smali), decompilado previamente de forma automática al subir el APK a la herramienta. Como función adicional, podemos comenzar con el análisis dinámico, que permite ser configurado para la ejecución del mismo en un dispositivo Android real, con el modo debug activado, sin necesidad por tanto de máquina virtual.

cp1

Contamos con otras muchas opciones de interés, como el certificado de la aplicación para visualizarlo, todos los componentes a nuestra disposición (android activity, services, receivers, providers, librerías y archivos), permisos, análisis de seguridad, URLs (¿URLs sospechosas?), emails, strings, etc.

En cuanto a los permisos, el propio framework los cataloga diferenciando entre los que pueden utilizarse para acciones maliciosas y los que son seguros.

cp2

Los análisis de seguridad se dividen en tres categorías: Análisis del Manifest de la aplicación, análisis de código y análisis de ficheros.

Analizando las especificaciones de archivo Manifest, podemos detectar varias vulnerabilidades o, más bien, malas configuraciones. En este caso, se indica que la aplicación puede ser copiada desde el propio dispositivo y que otras aplicaciones instaladas pueden interactuar con la App analizada mediante el uso de intent-filter, ya que se está permitiendo de forma explícita.

cp3 Igual de sencillo es realizar el análisis de código, aunque con esta opción se proporciona más información que investigar. Sigue la misma categorización por criticidad, indicándonos la posible vulnerabilidad y las clases donde podemos encontrar el código vulnerable.

cp4

Pulsando sobre cualquier de las clases java, se muestra el código de una manera muy cómoda. ¿Por qué no mirar las clases ApiKey.java, Credential.Java o ServerURL.java? Quizás nos encontremos con información sensible hardcodeada

cp5

En un próximo post, comentaremos algunas características del análisis dinámico y conclusiones que podemos abstraer acerca de la herramienta.