principal2.jpg
Blog HbS

MobSF: Instalación mediante Docker. Análisis Estático. (Parte I)

cabecer_20211130-182042_1

Normalmente, antes de instalar cualquier aplicación me gusta "curiosear" acerca de su funcionamiento: conocer a qué servidores va a lanzar peticiones y qué tipos de datos recopila sobre mi dispositivo. Para ello, utilizo una herramienta que es MobSF.

Este artículo constará de tres partes:

  • PARTE I: MobSF y el análisis estático.
  • PARTE II: Análisis dinámico.
  • PARTE III: Análisis y explotación de una APK vulnerable.

 ¿Qué es MobSF?

MobSF es una herramienta automatizada para auditar, encontrar y verificar vulnerabilidades en aplicaciones Android e iOS. Esta herramienta cuenta con múltiples opciones y configuraciones que irás descubriendo a medida que vayamos publicando las diferentes partes del artículo. 

 Instalación de MobSF

Puedes instalarlo de diferentes formas, aunque yo suelo recomendar generalmente el uso del un contenedor de Docker siempre y cuando se quiera realizar solo un análisis estático, para el análisis dinámico es mejor tenerlo instalado en el equipo.

Para ello se puede instalar el contenedor de la siguiente forma: 

docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf

Una vez lo hayas ejecutado, si accedes al puerto 8000 de tu equipo deberías obtener una página muy similar a la siguiente:

Lo único que tienes que hacer para que MobSF analice tu aplicación es subir el fichero.

 Aplicaciones Android

Todas las aplicaciones (hasta la versión de Android 12) se distribuyen en un fichero APK que cuenta con los siguientes directorios/archivos:

  • AndroidManifest.xml: define el nombre del paquete, permisos de la aplicación y otras características como: compatibilidad de dispositivos, si una aplicación es depurable, etc.
  • Classes.dex: código de las aplicaciones compilado. Android utiliza ART o Dalvik VM que están más optimizadas que la Java VM para dispositivos móviles por lo tanto se convierten a .dex.
  • Resources.arsc: un fichero con todos los recursos precompilados.
  • Res: contiene recursos como imágenes, diseño, ficheros con strings, etc.
  • Assets: contiene recursos "extra" como ficheros HTML, fuentes, videos, etc.
  • Lib: contiene librerías compiladas.
  • META-INF: contiene un manifesto con metadatos sobre la aplicación, CERT.RSA con el contenido firmado del CERT.SF junto a la cadena de certificados de clave pública que se ha utilizado para firmar ese contenido, y también el CERT.SF que contiene una lista de todos los ficheros junto a su correspondiente SHA-1 (codificado en base64).

Las aplicaciones de Android cuentan con 4 tipos de componentes:

  • Actividades: cada ventana que nos muestra la aplicación.
  • Servicios: tareas que se ejecutan en segundo plano.
  • Receptores de emisiones: recibe mensajes que le manda el sistema y según el tipo de mensaje puede realizar diferentes acciones.
  • Proveedores de contenido: para poder compartir datos de la aplicación con otras aplicaciones y/o componentes.

 Formas de analizar la aplicación

Hay dos formas de analizar una aplicación:

  • Análisis estático: intenta encontrar las vulnerabilidades analizando el código fuente y otros ficheros de la aplicación.
  • Análisis dinámico: podemos ir analizando la aplicación sobre la marcha mientras la estamos ejecutando.

 Análisis Estático

Para realizar en análisis estático de la aplicación emplea algunas de las siguientes herramientas:

  • APKiD: le aporta información sobre cómo se ha programado dicha aplicación, es decir, le permite identificar en muchos casos cosas como los compiladores y ofuscadores.
  • Jadx: sirve para decompilar la aplicación (y también cuenta con un deofuscador).
  • Quark Engine: es una herramienta para el análisis de malware en Android.

Una vez obtiene toda esa información, busca en el código fuente de cadenas de texto que pueda ser interesantes (contengan contraseñas, tokens de APIs, URLs a páginas web, emails) y también lanza un análisis de malware en los dominios que haya encontrado.

Una vez ha finalizado el análisis, se refleja toda esa información en un panel web en diferentes secciones:

  • Permisos: indica todos los permisos que tiene dicha aplicación y una breve descripción de qué se puede hacer con cada uno.
  • Análisis de seguridad: indica las diferentes vulnerabilidades que se hayan podido encontrar durante el escaneo en el fichero AndroidManifest.xml, en el código y en posibles ficheros que haya podido encontrar.
  • Reconocimiento: indica posibles URLs, bases de datos de Firebase, emails, trackers, cadenas de texto y claves.
  • Componentes: contiene un listado de actividades, servicios, receptores, proveedores, librerías y archivos de la aplicación.

En la parte II del artículo explicaremos como realizar un análisis dinámico de una aplicación con MobSF para entender su funcionamiento.


Hacker en Hack by Security
Entrevista a Juan Carlos Fernández
Entrevista a Francisco Nadador

Artículos relacionados

By accepting you will be accessing a service provided by a third-party external to https://www.hackbysecurity.com/

Agrega tu email para recibir novedades de seguridad
Estoy de acuerdo con el Términos y Condiciones