MalBus Actor cambió el mercado de Google Play a ONE Store


El equipo de McAfee Mobile Research ha encontrado otra variante de MalBus en una aplicación educativa, desarrollada por un desarrollador surcoreano. En el caso anterior de Malbus, el autor distribuyó el malware a través de Google Play, pero las nuevas variantes se distribuyen a través de Una tienda de la misma manera. ONE Store es una empresa conjunta de las tres principales compañías de telecomunicaciones del país y es una aplicación preinstalada en la mayoría de los teléfonos Android que se venden en Corea del Sur. Tiene 35 millones de usuarios (cerca del 70% de la población de Corea del Sur) y ya ha superado las ventas de la tienda de aplicaciones de Apple desde finales de 2018.

La aplicación en cuestión se distribuye a través de Google Play y ONE Store al mismo tiempo. La aplicación maliciosa descarga y ejecuta una carga útil cifrada con funciones maliciosas.

McAfee Mobile Security detecta esta amenaza como Android / Malbus y alerta a los usuarios móviles si está presente, al tiempo que los protege de cualquier pérdida de datos.

Figura 1. Captura de pantalla desde la página de la aplicación en ONE Store

La campaña

Encontramos código malicioso inyectado por un atacante, a través de la cuenta del desarrollador, en las versiones 27 y 28 de la aplicación distribuida a través de ONE Store. El Certificado de firma de la aplicación para las versiones 26 a 29 distribuidas desde One Store es el mismo. No se encontró ninguna otra aplicación desarrollada por el mismo autor en ONE Store. ONE Store ahora brinda servicio a la versión 29 que no contiene código malicioso. Google Play todavía ofrece la versión 26, aunque también está libre de infección.

Figura 2. Historial de versiones infectadas de la aplicación

El flujo general de esta aplicación, que se centra en la función maliciosa, se explica a continuación:

Figura 3. Descripción general del comportamiento malicioso

Después de instalar el malware, el código malicioso tiene un período de latencia de 10 horas para evitar ser descubierto por análisis dinámico.

Figura 4. Uso de LastUpdateTime para verificar el período latente

Después del período latente, comienza dos hilos. El primero carga la biblioteca nativa "libmovie.so" y llama a una de sus funciones exportadas, "playMovie", con un número de teléfono como argumento, mientras que el segundo crea un socket de servidor Java para comunicarse con otra biblioteca nativa.

Figura 5. La biblioteca nativa maliciosa incrustada en el APK

La primera biblioteca cargada, libmovie.so, contiene un binario curl y URL para cargas secundarias en datos codificados XOR que se decodifican en tiempo de ejecución. El valor XOR es 0x8E y se usa globalmente en esta biblioteca. Parece que todas las URL decodificadas han sido pirateadas y las URL decodificadas eliminan los archivos ELF cifrados con RC4.

Tabla 1. Contenido en libmovie.so

En pocas palabras, libmovie.so es un descargador y un ejecutor. Descarga la siguiente carga útil de un servidor web pirateado mediante el uso de un binario curl descartado, lo descifra y carga la biblioteca. Una vez que se carga la biblioteca, el archivo descargado se elimina para evitar su detección. Por último, el código descargado comienza con el nombre de la función exportada "Libfunc".

Figura 6. El flujo principal de libmovie.so

En cuanto a la biblioteca criptográfica RC4, el cifrado es la forma más común de ocultar o proteger cosas importantes. En consecuencia, se supone que hay algo importante en este archivo.

Tabla 2. Información adicional del archivo descargado

Los tamaños de archivo y los datos para szServer_XX_1 y szServer_XX_2 son los mismos que se muestran en la Tabla 2. Pero szServer_XX_3 tiene varias funciones que se agregan, eliminan o modifican un poco. Sin embargo, no afecta el proceso general.

"DoMainProc" es la función central llamada por "Libfunc". El primer trabajo del "doMainProc" es seleccionar el servidor C2 al azar.

Tabla 3. Lista de servidores C2

Después de seleccionar el servidor C2, se envía un TUID creado al azar al servidor. Adivinando su uso, el TUID podría ser una ID de dispositivo objetivo para gestionar objetivos contaminados. Ahora la aplicación funciona como un agente espía, esperando acciones del servidor seleccionado y lista para ejecutar comandos. Descubrimos los siguientes comandos disponibles:

Tabla 4. Lista de comandos disponibles

Entre los comandos maliciosos, una característica llamativa es la captura de SMS y MMS. SMS y MMS se guardan en "/ data / data // files / "como el nombre del archivo" sms.txt "y" mms.txt "respectivamente.

Figura 7. SMS y MMS se guardan en archivos txt

Esta característica se puede activar registrando el receptor de Android.

Figura 8. RegisterReceiver

Esta aplicación maliciosa abre el puerto TCP 1111 localmente para comunicarse con la biblioteca nativa cargada. A continuación se muestra el código Java interpretado manualmente:

vacío público run ()

CommunicationThread commThread;

Socket socket = nulo;

serverSocket = nuevo ServerSocket (puerto_sock); // sock_port = 1111

if (serverSocket)

while ((! Thread.currentThread (). isInterrupted ()))

commThread = new CommunicationThread (this, serverSocket.accept ());

nuevo hilo (commThread) .start ();

Figura 9. com.joojang.CharacterClassic.MainService

La función de captura de SMS / MMS se habilita cuando se recibe una cadena "SET" en el puerto TCP 1111 local y se deshabilita al recibir "FREE".

Figura 10. SET o FREE

La biblioteca nativa cargada se conecta cuando el comando "SD_SetSMSCapture" recibe y envía "SET"

Figura 11. SD_SetSmsCapture

A continuación se interpreta como lenguaje C.

cliente = socket (AF_INET, SOCK_STREAM, 0);

addr.sin_family = AF_INET;

addr.sin_port = htons (1111);

addr.sin_addr.s_addr = inet_addr ("127.0.0.1");

Otra función que no hemos visto antes es "SD_LoadSoFile". Esto carga una nueva biblioteca nativa y ejecuta una función específica en ella. Esta función parece cambiar la biblioteca nativa en ejecución a una nueva cuando el binario actual tiene un problema, o para agregar nuevas características.

Figura 12. SD_LoadSoFile

En comparación con Malbus

Este código malicioso recientemente descubierto tiene muchas similitudes en comparación con Malbus, como el uso del mismo nombre de función maliciosa que comienza con "SD_", nombre de archivo, cadenas XOR para ocultar cadenas originales, archivos incrustados en bibliotecas, identificadores de comando, la misma versión de compilador y así sucesivamente. También tiene las diferencias mencionadas anteriormente: descargar una biblioteca maliciosa directamente en lugar de instalar un complemento APK y ninguna lista de palabras clave sensibles como "Corea del Norte", "Defensa Nacional", etc.

Figura 13. Los nombres de función idénticos de la biblioteca maliciosa

Figura 14. La misma versión de las cadenas del compilador.

Conclusión

El malware se puede distribuir a través de todo tipo de tiendas de aplicaciones de terceros, no solo las oficiales como Google Play. Este malware está cuidadosamente preparado: la carga útil final del malware es el archivo que fue pirateado y cargado en el servidor vulnerable antes de la distribución del malware. Creemos que los autores de este malware continuarán comprando o pirateando cuentas de desarrolladores confiables para actualizar la funcionalidad maliciosa, infiltrarse y distribuirse a través de tiendas de aplicaciones oficiales. Al igual que en casos anteriores, los usuarios deben verificar las aplicaciones que instalan, incluso si las descargan de las tiendas oficiales. McAfee está trabajando con las agencias policiales coreanas para ayudar con la eliminación de la campaña de ataque.

Hashes (SHA-256)

Descargador inicial (APK)

  • 5e57bc8d83a372bf4d046c272cd43db9000036c9b32d8eecead1af75f4958c57
  • 1613b35c73c6497730490d7712ac015c2b42931446aed149e1292e2ba77d0ff4

Troyano cifrado (carga útil adicional)

  • d328373cd67c467485b9c96349a0ee08fc3b58fe2c11fb19f4dcb9ea6c7a0dae
  • c5bff68022ead6302f710f1ce1c3d5682a8cd3610b1f8ed2563098d7ac4e1909
  • c410cacbb0be8f649f082148c91f4cef27f101b8db3ce64a02882506c9b51a63
  • 178dddf38ec232d540bd88320521d8134644da1e7af19e7ae295b2d614e3ab56

Troyano descifrado (carga útil adicional)

  • 9fc914545fbb99b7e0d4a5207f5a2b32a8a127a36caa9159d4feeac445c509f7
  • df651ac1bfd60cd29cea85cc410002b933552260c2439fe86a4f32486abd0828
  • 63d10c9cd105c7b17effef18d31d571fe4c9c999966cc09bdb40df07c1b6baa8
  • f99212b70729942923fe26b996791cdd8eb561f8ae017e1d71202fbb97f7d245





Enlace a la noticia original