En ocasiones, un analista de malware recurre a la ayuda de un entorno de análisis para poder detectar automáticamente comportamientos que puedan ser maliciosos o identificar vulnerabilidades en una aplicación dentro de un proceso de auditoría.
Inspeckage (Android Package Inspector) es un framework de análisis para aplicaciones de Android que funciona como un módulo de Xposed. Una vez instalado y habilitado, levanta un servidor en el terminal que puede ser accedido vía adb y que permite ver en tiempo real los eventos que ocurren en el teléfono.
Con anterioridad hemos publicado revisiones de otros entornos de análisis móvil, como MobSF o AppMon. La gran diferencia de Inspeckage con estos módulos radica en su capacidad de acceder a los eventos en tiempo real –sin necesidad de detener el análisis dinámico– y la posibilidad de configurar de manera sencilla hooks de los métodos de la aplicación.
El código de la herramienta puede ser accedido desde el sitio en GitHub, o también puede descargarse el archivo APK desde la Play Store o el repositorio de Xposed. Una vez instalado, debe habilitarse desde la sección de módulos en Xposed:
Luego, podremos ver en la ventana principal el estado del servidor (activo o no), la interfaz que se está utilizado, el puerto y el comando adb que deberemos ingresar en nuestra máquina para acceder a las páginas servidas localmente en el teléfono o emulador.
Veremos una lista de aplicaciones desde la cual podremos elegir la app que deseamos analizar. La opción “Only user app” permitirá que se seleccionen o no apps del sistema, según esté desactivada o activada respectivamente.
Si accedemos al menú lateral, podremos configurar además la interfaz de red y el puerto que utilizará el servidor. También podremos activar un mecanismo de autenticación para acceder a la herramienta mediante usuario y contraseña.
Tras seleccionar la aplicación e iniciarla, comenzará el análisis dinámico de su funcionamiento. En nuestra máquina local, podremos acceder a los resultados mediante el navegador. En el menú superior dispondremos de algunos botones que, de izquierda a derecha, nos permitirán:
- Desplegar el menú lateral
- Descargar el APK de la app o los datos del almacenamiento interno
- Tomar una instantánea de la pantalla
- Configuraciones varias, incluyendo la capacidad de desactivar FLAG_SECURE, terminar o reiniciar la aplicación (útil para luego de agregar un hook), elegir un proxy o el tipo de características que queremos analizar, entre otras
- Refrescar los resultados en tiempo real
- Abrir una pestaña con los resultados de LogCat
- Chequear si la app está corriendo o si el módulo está activo
- Ocultar el panel de detalles de la app
En la imagen anterior veremos que inmediatamente debajo de menú superior se puede acceder a un panel de detalles de la aplicación donde se detallan nombre del paquete, UID, GUID, si permite realizar el backup... También se puede acceder al almacenamiento interno de la aplicación mediante el botón “TreeView”, pudiendo descargar cualquiera de esos archivos haciendo clic sobre ellos.
Dentro del cuerpo del informe encontraremos una pestaña dedicada a información sobre actividades, permisos, servicios, proveedores de contenido, Broadcast Receivers y librerías compartidas. En estas secciones encontraremos botones para iniciar actividades o consultar proveedores de contenido.
En otra pestaña puede accederse a las Shared Preferences, ya sea en formato de registro (que nos permite apreciar los cambios de las variables a través del tiempo), como verás a continuación:
O bien accediendo al archivo en su estado actual:
Otra característica bastante interesante es el registro de toda la actividad criptográfica que ha realizado la aplicación, donde se pueden apreciar los algoritmos de cifrado, las claves y la información cifrada.
La pestaña “Hash” nos permitirá ver todos los valores a los cuales se les haya aplicado una función de hash, junto al tipo de función correspondiente en cada caso.
Bajo “File System” podremos apreciar todos los archivos con los cuales la aplicación a interactuado. Esto podría ser útil para detectar si está creando nuevos archivos o descargando aplicaciones desde fuentes no oficiales.
La sección “IPC” nos permitirá monitorear todos los intentos que la aplicación haya generado.
La solapa “Hooks” nos mostrará la actividad relacionada a todos los métodos que hayamos hookeado de manera personalizada. La creación de hooks es bastante sencilla y puede hacerse mediante una interfaz gráfica, simplemente estipulando el método a intervenir.
Pueden crearse dos tipos de hooks: uno en el que se modifiquen los parámetros que el método recibe, u otro en que se modifica el valor devuelto por el método.
Finalmente, en el menú lateral podemos encontrar funcionalidad extra que nos permite modificar los valores de fingerprinting del emulador o dispositivo (lo que puede servir a saltar alguna comprobación que la aplicación esté realizando), o las coordenadas GPS.
Además de toda la funcionalidad detallada en este artículo, Inspeckage permite registrar otras cosas, como consultas a bases de datos, tráfico de red, WebViews o información miscelánea sobre recursos accedidos por los Content Providers.
A decir verdad, se trata de una herramienta muy completa que puede reducir el tiempo de análisis de una muestra, especialmente para personas que se inicializan en el análisis de malware móvil.