HiddenAds Malware | Blogs de McAfee


Miles de aplicaciones troyanas de HiddenAds se disfrazan como aplicaciones de Google Play

El equipo de investigación móvil de McAfee ha descubierto recientemente una nueva variante del troyano HiddenAds. HiddenAds Trojan es una aplicación de adware que se utiliza para mostrar publicidad y recopilar datos de usuario para marketing. El objetivo de tales aplicaciones es generar ingresos redirigiendo a los usuarios a anuncios. Por lo general, hay dos formas de ganar dinero con adware; la visualización de publicidad en la computadora de un usuario y un pago por clic realizado si un usuario hace clic en el anuncio.

Aunque se puede utilizar para difundir y mostrar publicidad en un programa de marketing de afiliación, el adware también se puede utilizar para propagar malware en un programa de fraude de afiliación. La mayoría de los programas de adware abusarán de una aplicación legítima para engañar al usuario y aumentar el número de instalaciones. En nuestro análisis, nos centramos en dos versiones falsas de aplicaciones populares de Android:

– FaceApp: una aplicación utilizada para modificar fotos con aprendizaje automático.

– Call of Duty: un famoso juego adaptado para Android.

Notamos que estas aplicaciones son muy populares y generalmente son descargadas por jóvenes. Además, ambas aplicaciones están utilizando el modelo de negocio de compra de aplicaciones. Estos dos elementos son interesantes porque aumentan las posibilidades de que las personas busquen versiones gratuitas y tengan preocupaciones potencialmente bajas con respecto a la seguridad. También notamos varias otras variantes de HiddenAds que se hacen pasar por aplicaciones genuinas, como Spotify u otros juegos conocidos.

A nivel mundial, observamos más de 30,000 muestras relacionadas con esta campaña de HiddenAds.

https://www.virustotal.com/graph/g05e894f94d9b40ab9651e0b353a66b8b4eb54e6dc8884fc2b52b86e205bc8fcc

Las muestras analizadas no están disponibles en Google Play Store; La entrega de las últimas variantes proviene principalmente de partes no confiables de Internet que proponen descargas de archivos APK. Los canales de YouTube también se han visto con enlaces maliciosos para descargar las aplicaciones falsas.

Estas variantes de HiddenAds utilizan algunas otras tecnologías interesantes para engañar a los usuarios y frustrar el análisis de los investigadores de malware. En esta publicación de blog, profundizaremos en el análisis de una aplicación falsa de FaceApp.

Canal de distribución

Estas muestras de malware se disfrazan de aplicaciones populares, por lo que, cuando un usuario desea encontrar las aplicaciones de una fuente desconocida, puede ser infectado por malware. Por ejemplo, "Call of Duty" es un juego popular, con muchas personas que buscan la versión móvil en línea. Si son desafortunados, pueden encontrar el resultado que se muestra a continuación:

Figura 11 Canal de distribución

En el video, el autor proporciona enlaces de descarga. Si hacemos clic en el enlace para descargar el archivo, recibimos "Call of Duty_1.0.4.apk" (como se ve en la Tabla 1). Si instalamos esta muestra en nuestros dispositivos, seremos infectados por este malware. Además, detectamos este malware en otras fuentes no confiables.

Técnicas de truco

  1. Truco del nombre de la aplicación.

Como usuario, reconocemos una aplicación por su nombre e icono. Como investigador, el nombre del paquete es una identificación de una aplicación. Esta variante utiliza nombres de aplicaciones, íconos y nombres de paquetes populares en la tienda Google Play, para engañar a los usuarios haciéndoles creer que son aplicaciones genuinas.

Tabla 1: Información básica de algunas muestras de amenazas

Buscamos el nombre de la aplicación en Google Play y hacemos clic en el resultado de la búsqueda para ver sus detalles.

Figura 1. Información de FaceApp en Google Play

Esta es una aplicación muy popular con compras en la aplicación. Si las víctimas quieren encontrar una versión crackeada gratuita de fuentes alternativas, pueden terminar con nuestra muestra de análisis. El nombre de la aplicación, el ícono y el número de versión de la aplicación Google Play y la aplicación falsa son muy similares. Sin embargo, el tamaño del archivo es muy diferente, por lo que debemos tenerlo muy en cuenta.

  1. Truco de iconos.

Normalmente, los usuarios esperan que los iconos vistos antes y después de la instalación sean los mismos. En esta muestra, son diferentes. La muestra define dos iconos en el archivo AndroidManifest.xml; la etiqueta de actividad es "Configuración".

Figura 2.1. Se definen dos iconos en AndroidManifest.xml

Antes de instalar la muestra, la vemos en el Explorador de archivos, que muestra el primer ícono (tv_icon.png). En la vista de instalación del sistema, también vemos el primer icono. Una vez que hacemos clic en el botón "Listo", la muestra se instala en el dispositivo y el sistema muestra el segundo icono (but_invertc.png).

Figura 2.2. Iconos antes / durante / después de la instalación

Este es el truco del icono. Los usuarios se sorprenden después de instalar la muestra, ya que no pueden encontrar el icono esperado en sus dispositivos; tal vez piensan que algo salió mal durante la instalación y la aplicación no pudo instalarse. En realidad, la aplicación ya se ha instalado; está al lado del icono de la aplicación "Configuración" del sistema. Cuando un usuario va a iniciar la aplicación "Configuración" del sistema, tiene la posibilidad de hacer clic en el icono falso, iniciando la aplicación maliciosa.

  1. Lanzador truco.

Una vez que una víctima hace clic en el icono falso de "Configuración", se inicia la aplicación maliciosa, al igual que la siguiente etapa del truco.

Figura 3. Icono oculto después de hacer clic en el botón "Aceptar"

El ejemplo muestra este diálogo de alerta de inmediato; no realiza comprobaciones disponibles en el país. Este es un mensaje engañoso, para hacer creer a las víctimas que el ícono está oculto porque "La aplicación no está disponible en su país". De hecho, la aplicación aún se está ejecutando en segundo plano. No está disponible en un país determinado, simplemente no está disponible para las víctimas.

Técnica de ofuscación

Arriba están las formas en que la aplicación se utiliza para defraudar a las víctimas. Ahora, miramos las técnicas antianálisis de esta muestra. Al inicio de la aplicación, invoca una función MultiDex.install. MultiDex es un módulo Android popular y válido que se utiliza para admitir archivos DEX múltiples. Cuando investigamos esta función, tenemos curiosidad de por qué un módulo Android popular invoca una función en un módulo de aplicación específico.

Figura 4. El código malicioso en la función "MultiDex.install"

La pregunta nos lleva a hacer más análisis. Finalmente, encontramos que esta es la entrada de código malicioso. Principalmente hace 2 cosas aquí:

  • Descifrar así biblioteca
    La función descifrada está muy ofuscada, no solo ofusca el nombre de la variable de modo que no tiene sentido, sino que también divide una función simple en muchas subfunciones, cada una de las cuales inserta una gran cantidad de código sin sentido, diseñado para frustrar el análisis.
  • Afortunadamente, podemos entender el código y obtener el proceso de descifrado.

Figura 5.1. Se divide en muchas subfunciones

Figura 5.2. Una subfunción, mucho código no tiene sentido

Lectura de datos del archivo resource / string.xml según el tipo de CPU (Figura 6.2):

  • Si la CPU es arm64, lea el valor x1.
  • Si la CPU es armeabi, lea el valor x0.
  • Otras CPU no son compatibles.

Figura 6.1. leer datos del recurso string.xml file

Los datos tienen 2 partes, la primera parte es el encabezado del archivo ELF, la segunda parte es un índice de matriz.

  • Desde el índice ("a58ax") en el último paso, encontramos datos de codificación base64 del archivo arrays.xml.
  • Utilice la operación base64 y XOR para decodificar la matriz y generar una biblioteca de código nativo.

Figura 6.2. Datos de codificación base64 en el archivo resources.arsc / res / values ​​/ arrays.xml

3) Cargue la biblioteca para extraer la carga útil de DEX y, finalmente, el código malicioso invoca system.load para cargar la biblioteca y llama a una función nativa.

Figura 7. Cargue la biblioteca y llame a una función nativa

En la función nativa, extraerá y descifrará el archivo assets / geocalc_lite.dat y restaurará la carga útil de DEX en la ruta /data/data/de.fastnc.android.geocalc_lite/app_app_apk/geocalc_lite.dat.jar.

Análisis de carga útil DEX

La carga útil DEX se utiliza para mostrar anuncios. Los datos publicitarios provienen del servidor. Una vez que la carga útil obtiene los datos, los mostrará en el dispositivo. Del análisis del código, vemos que hay docenas de tipos de publicidad (Figura 10.2). La carga útil, que es muy compleja, cargará y mostrará los datos de diferentes maneras para cada tipo.

  • Parámetros de configuración predeterminados
    La carga útil DEX define una cadena de codificación base64 en el código; obtenemos muchos parámetros de configuración predeterminados después de decodificarlo:

Figura 8.1. Parámetros de configuración predeterminados (codificación)

Figura 8.2. Parámetros de configuración predeterminados (Decodificación)

Este es un objeto json; es muy complejo y a continuación se muestra el uso de algunos parámetros:

  • metricsApiKey: la clave API del SDK de Yandex Metrica.
  • installFrequencySeconds: se utiliza para controlar la frecuencia de la solicitud de "instalación". El valor decide el intervalo de tiempo mínimo para enviar solicitudes de "instalación" (consulte la sección Solicitud y respuesta) que, en este caso, es de 1000 segundos (16 minutos y 40 segundos). La solicitud de instalación solo puede ser activada por el iniciador de aplicaciones. Sin embargo, muchas veces reiniciamos la aplicación, solo envía una solicitud en 1000 segundos.
  • overappStartDelaySeconds: está diseñado para controlar el retraso de las solicitudes http. Está destinado a ejecutar cargas maliciosas después de 30000 segundos (5 horas 20 minutos) desde el primer lanzamiento. Pero en la versión actual, este valor es el mismo que "installFrequencySeconds" y se usa para controlar la frecuencia de instalación. El valor más pequeño de "overappStartDelaySeconds" e "installFrequencySeconds" se utiliza como el intervalo de tiempo mínimo para enviar solicitudes de instalación.
  • paquetes _ * (b, c, l, n): Parece que estos se usan para determinar si se muestran anuncios en estos paquetes o no.

El parámetro "dominios" es importante; define la lista de candidatos del servidor remoto. Payload selecciona uno aleatorio como el servidor remoto; Si el seleccionado no está disponible, cambiará al siguiente.

Solicitar respuesta

Hay 3 tipos de solicitudes en la carga útil, con diferentes solicitudes que tienen diferentes condiciones de activación. Solo podemos capturar 2 tipos de solicitudes:

Figura 9.1. Solicitud y respuesta de captura

  • Solicitud "instalar"
    Durante el inicio de la aplicación, si se cumplen las condiciones de activación, la carga enviará una solicitud de "instalación" al servidor remoto. Esta solicitud tiene un archivo llamado "tipo" cuyo valor es "instalar".

Figura 9.2. Instalar solicitud

El cliente archivado también es un objeto json; Contiene la información versionName y sdkEdition, que muestran que esta carga útil es muy nueva.

Figura 9.3. VersionName y definición sdkEdition

Las respuestas del servidor remoto son a menudo un json vacío que aumenta la dificultad de nuestro análisis. Continuamos probando durante unos días y capturamos una respuesta no vacía.

Figura 9.4. Datos de respuesta

La configuración del servidor remoto cubre la configuración predeterminada:

  • Habilitado: indicador de anuncio habilitado, incluida la solicitud a continuación "b / request" El valor predeterminado es False, y True se configura desde una respuesta del servidor remoto.
    • 7 nuevos dominios en respuesta:
      'http://hurgadont.com', 'http://asfintom.com', 'http://eklampa.com', 'http://glanmoran.com', 'http://cantomus.com', 'http://fumirol.com' y 'http://bartingor.com'
    • 7 dominios predeterminados

"Http://minasorp.com", "http://omatist.com", "http://retinba.com", "http://baradont.com", "http://lindostan.com", "Http://avgon.net" y "http://dorontalka.com"

Hay 7 nuevos servidores y 7 servidores predeterminados, un total de 14 servidores, y podemos hacer ping a todos ellos; ellos están vivos.

2) solicitud "b / request"

Esta es una solicitud central. Hay un campo llamado "tipo" y su valor es "b / solicitud" en esta solicitud.

Figura 10.1. b / solicitud de solicitud

La biblioteca registra muchos filtros / observadores de eventos y, cuando ocurren estos eventos, se cumplen las condiciones de activación, lo que hace que la biblioteca envíe solicitudes apropiadas al servidor remoto.

Tabla 2. Monitoreo de eventos

El tipo de banner se usa para identificar el banner y Spot se usa para identificar la detección de eventos.

Figura 10.2. Tipo de banner y tipo de punto

Los datos de respuesta son los siguientes. Tiene 3 funcionalidades principales:

  • Datos "sdkUpdate": se utilizan para cargar versiones actualizadas del archivo SDK.
  • Datos de "pancartas": se utilizan para mostrar anuncios de pancartas.
  • Datos de "mediatorSDKs": se utilizan para publicar solicitudes de mediatorSDKs en los dispositivos de las víctimas.

Figura 10.3. Respuesta "b / request"

Mencionamos que capturamos una respuesta de "b / solicitud" en la Figura 9.1. La respuesta contiene datos de un banner, los campos de los datos del banner son los siguientes después de la decodificación.

Figura 10.4. Datos de banner y contenido de campo "html"

"Html" es el campo más importante: el contenido de la carga útil se carga en un WebView invocando la API loadDataWithBaseURL. Según el html, WebView cargará la página desde la primera URL, hxxp: //bestadbid.com/afu.php? Zoneid = 1558701. Esta es una URL de redireccionamiento que redirigirá a diferentes URL cada vez que la abramos. En nuestra prueba, redirige a un sitio web de juegos de azar.

Figura 10.5. Redireccionar a un sitio web de juegos de apuestas

Los datos de mediatorSdks son una matriz json. La definición de cada artículo es la siguiente. No podemos capturar este tipo de datos del servidor remoto ya que no conocemos el valor real de cada campo. Según nuestro análisis, "seguimiento" es una lista de URL. Cada URL se ejecutará en el dispositivo y el resultado ejecutado se enviará al servidor remoto.

Figura 10.6. definición de elemento mediatorSdks

3) Peticiones de estadísticas de mediadores

Después de que se ejecute la URL de seguimiento, ejecutará / sdk / stat / mediator_ * solicitudes al servidor remoto que solo informa los resultados de ejecución. Hay 4 tipos de solicitudes de mediador, uno para informar el estado de falla, los otros 3 tipos son para informar el estado de éxito. Hay 3 tipos de estado de éxito; Suponemos que hay 3 tipos de URL de seguimiento en los datos de mediatorSdks (Figura 10.6). Cada tipo de URL de seguimiento utiliza cada solicitud de estadísticas de mediador para informar el estado.

Figura 10.7. 4 tipos de solicitud de estadísticas de mediador

Conclusión

Este es un malware tradicional de Hidden Icon Ads; primero oculta el ícono de la aplicación, luego muestra anuncios de la carga útil de DEX. Pero aplica mucha tecnología para implementar su propósito, para engañar a los usuarios haciéndoles creer que es una aplicación normal, para obstaculizar la detección de herramientas de seguridad. La carga útil de DEX es un SDK muy complejo: se encuentran más de 14 candidatos de servidores remotos, una gran cantidad de monitoreo de eventos y control de activación remota, todo lo cual significa que se trata de un malware bien diseñado. Una vez que las víctimas están infectadas con este malware, es poco probable que se den cuenta y, incluso si lo hacen, es posible que no puedan localizarlo y eliminarlo.

McAfee Mobile Security detecta esta amenaza como Android / HiddenAds. Para protegerse de esta y otras amenazas similares, emplee la aplicación McAfee Mobile Security en sus dispositivos móviles y no instale aplicaciones de fuentes desconocidas.

Para obtener más información sobre McAfee Mobile Security, visite https://www.mcafeemobilesecurity.com.

Hashes

bc6f9c6d9beecd6f1353953ef6d883c51739ecec7e5b55e15319fe0d0b124a6d

7c40fabb70556d7d294957ec0fa1215a014a33f262710a793dd927100b183454

12be1c7ffdcf1b1917b71afa4b65a84b126ab0f0fbf6dc13390a32e6a8b84048

ed47a5871132c22bf4b7888908f35cacc2cd0c2a6e8e0afffea61d0e14792ea4

8c5826441a7000f957ece60a3e5294732f9a430d4bec0113bb13b99c73fba47c

04e6493d3cb0b92bebb450f37b21f9176fe266c662f65919baf7d6229741aa73





Enlace a la noticia original