Skip to main content

Técnica de análisis dinámico de malware para Android mediante la inyección de dispositivos pequeños – JPCERT/CC Eyes

agosto 8, 2024


Al analizar dinámicamente el malware de Android, actualmente es difícil seguir su código mediante depuradores a diferencia del malware de Windows. Aunque existe una técnica [1] Para enganchar un método dinámicamente por Frida [2]obtener el estado en progreso del método aún es difícil, y dado que Frida no es una herramienta dedicada a Android, solo se puede obtener información limitada. En este artículo, presento la técnica de inyección de gadgets pequeños como un método más flexible para el análisis dinámico de malware de Android. Este método permite el análisis dinámico mediante la creación e inyección de un gadget para su análisis en el archivo APK para crear un archivo APK reempaquetado.

Confirmar el resultado de la compilación inversa

En primer lugar, compruebe el código del malware de Android para identificar en qué parte desea realizar un análisis dinámico. Los resultados de descompilación de los archivos APK se pueden ver como código Java utilizando una herramienta de descompilación como JADX o JEB Pro. La Figura 1 muestra un ejemplo del resultado de la descompilación. En esta técnica, debe conocer de antemano los métodos para decodificar y descomprimir el resultado de la descompilación. En el ejemplo de la Figura 1, puede ver que el malware recibe un argumento de tipo String en el método a de la clase a en el paquete com.fky.lblabjglab. Luego descifra la cadena y devuelve una variable de tipo String. Tenga en cuenta que, aunque se utiliza RC4 para el cifrado, no es necesario identificar el algoritmo de cifrado en esta técnica.

Figura 1: Resultados de descompilación de un método para descifrar cadenas RC4 utilizando JADX

Extraer archivo pequeño e inyectar gadget

Una vez que hayas identificado qué parte analizar, extrae el malware de Android. Puedes usar Apktool [3] para extraer archivos APK. Al ejecutar el siguiente comando, se extrae el archivo APK especificado como se muestra en la Figura 2, y se puede editar el archivo smali para inyectar un gadget. El archivo smali se puede encontrar consultando el resultado de la descompilación obtenido por JADX u otras herramientas. En este ejemplo, supongamos que el gadget se inyectará en el archivo smali. pequeño/com/fky/lblabjglab/a.smalique llama a la función de descifrado RC4.

$ apktool d mal.apk

Figura 2: Estructura de directorios de los archivos APK descomprimidos

Aquí, a modo de ejemplo, el archivo pequeño/com/fky/lblabjglab/a.smali se abre en un editor de texto y se inyecta un gadget que genera el argumento y devuelve el valor al registro de depuración, como se muestra en la Figura 3. Debe especificar las variables que se mostrarán. En el método, p0 es este puntero y p1 es el primer argumento. Por lo tanto, si desea verificar el valor del primer argumento, p1 se especifica y el registro de cadena se genera en android.util.Log.e.

Figura 3: Ejemplo de inyección de un gadget para su análisis

Recopilar y firmar archivos pequeños

Después de inyectar el dispositivo para su análisis, ensamble el archivo smali y cree un archivo APK. Luego, cree un archivo de certificado y firme el archivo APK. Puede crear un archivo APK con el dispositivo para su análisis inyectado ejecutando los siguientes comandos.

$ apktool b mal
$ keytool -genkey -v -keystore test.store -alias example -keyalg RSA -validity 32767
$ apksigner sign --ks test.store -v --v2-signing-enabled true --ks-key-alias example mal.apk

Ejecute el archivo APK reempaquetado

Por último, puedes realizar un análisis dinámico. Utiliza Android Studio [4] u otras aplicaciones para iniciar un dispositivo virtual Android como se muestra en la Figura 4 e instalar el archivo APK reempaquetado en él. Tenga en cuenta que el entorno del dispositivo virtual debe estar desconectado de Internet antes de ejecutar el malware de Android.

Figura 4: Instalación del archivo APK en el emulador de Android Studio

Después de instalar el archivo APK, inicie la aplicación en el dispositivo virtual. Luego, como se muestra en la Figura 5, al consultar la pestaña Logcat y configurar el filtro apropiado, puede ver las cadenas antes y después del descifrado. Esta técnica se puede aplicar para realizar varios tipos de análisis, como hacer referencia o cambiar el contenido de una variable o llamar a otro método en medio de un método.

Figura 5: Resultado de la salida de cadenas descifradas

Para concluir

Esta técnica permite realizar un análisis dinámico flexible, algo que ha resultado difícil de conseguir con el malware para Android, aunque requiere algunos preparativos previos, como comprobar los resultados de la descompilación y preparar un pequeño dispositivo adecuado. El malware para Android utilizado para probar esta técnica se presenta en el Apéndice.

Yuma Masubuchi

(Traducido por Takumi Nakano)

Referencias

[1] Frida
https://frida.re/

[2] Guía práctica: Cómo derrotar a un empaquetador de Android con FRIDA
https://www.fortinet.com/blog/threat-research/defeating-an-android-packer-with-frida

[3] Herramienta de apk
https://apktool.org/

[4] Estudio Android
https://developer.android.com/studio

Apéndice: Valor hash del malware de Android utilizado

  • Cerbero: 1249c4d3a4b499dc8a9a2b3591614966145daac808d440e5202335d9a4226ff8



Source link

Translate »