Durante casi dos años, el troyano Shlayer ha sido la amenaza más extendida en la plataforma macOS: en 2019, uno de cada diez usuarios de nuestras soluciones de seguridad para Mac se topó con este malware al menos una vez, y en relación con todas las detecciones de malware realizadas en este sistema operativo, su cuota es de casi el 30%. Los primeros ejemplares de esta familia cayeron en nuestras manos en febrero de 2018, y hasta ahora, hemos recopilado casi 32 mil muestras maliciosas diferentes del troyano. También hemos identificado 143 dominios de servidores de administración.
TOP 10 de amenazas para macOS, por porcentaje de usuarios de soluciones de seguridad de Kaspersky Lab para macOS atacados, enero – noviembre de 2019 (descargar)
Desde el descubrimiento de Shlayer, su algoritmo de funcionamiento casi no ha cambiado y su actividad no ha disminuido mucho: en este momento, el número de detecciones se mantiene al mismo nivel que los primeros meses tras su descubrimiento.
Estadísticas de detección de la familia del malware Shlayer por las soluciones de seguridad de Kaspersky Lab para macOS, febrero de 2018 – octubre de 2019 (descargar)
Detalles técnicos
A pesar de su “popularidad”, desde el punto de vista técnico Shlayer resulta ser un ejemplar bastante común de malware. Entre todas las modificaciones del troyano, se distingue una de las últimas: Trojan-Downloader.OSX.Shlayer.e. Esta opción, a diferencia de sus congéneres, está escrita en el lenguaje de programación Python, y no en Bash, y su algoritmo de operación es algo diferente del resto. Lo mostraremos con el ejemplo de un archivo DMG con MD5 4d86ae25913374cfcb80a8d798b9016e.
Primera etapa de infección
Después de montar esta imagen DMG, le solicita al usuario que ejecute el supuesto archivo de instalación. Sin embargo, el instalador -en apariencia normal- resulta ser un script en Python, y esto es ya una forma atípica de instalar software para macOS.
En el directorio con archivos ejecutables incorporado en el paquete de la aplicación hay dos scripts Python: gjpWvvuu847DzQPyBI, el principal y goQWAJdbnuv6, el auxiliar. Este último implementa funciones de cifrado de datos utilizando un desplazamiento de bytes en la clave key:
- El par de funciones encryptText y decryptText se encargan de cifrar y descifrar las cadenas;
- encryptList cifra el contenido de la lista proporcionada en los argumentos y decryptList realiza la operación inversa.
- La función getKey (), como su nombre permite adivinar, genera una clave de cifrado basada en el tiempo en el sistema operativo.
A continuación, el script principal genera un identificador único del usuario y del sistema, y también recopila información sobre la versión de macOS utilizada. En base a estos datos, se generan los parámetros de la solicitud GET para descargar el archivo ZIP:
El archivo ZIP que se descarga en el directorio /tmp/%(sessionID) se descomprime en el directorio /tmp/tmp utilizando la función de descompresión:
En el momento en que lo analizábamos, dentro del archivo ZIP había un paquete de aplicación con el archivo ejecutable 84cd5bba3870:
Después de desempaquetar el archivo, el script principal de Python, mediante la utilidad chmod, le concede al archivo 84cd5bba3870 el derecho de ejecutarse en el sistema:
Para que el usuario tenga más confianza en la legitimidad de lo que está sucediendo, el malware usa las funciones moveIcon y findVolumePath para copiar en el directorio con el paquete de aplicación recién descargadoel icono de la imagen DMG original montada:
Después, el troyano ejecuta el paquete de aplicación descargado y desempaquetado utilizando la utilidad incorporada open, y elimina el archivo descargado y su contenido desempaquetado:
Segunda etapa de la infección
Shlayer solo lleva a cabo la etapa inicial del ataque: penetra en el sistema, descarga la carga útil principal y la ejecuta. Para ver las consecuencias negativas para el usuario, analicemos la familia AdWare.OSX.Cimpli, que el troyano descargaba activamente en el momento de la redacción de este artículo.
A primera vista, el instalador de Cimpli no genera sospechas, ya que solo ofrece instalar una aplicación asociada (por ejemplo, Any Search):
Pero en realidad, Cimpli también realiza varias acciones ocultas para el usuario. En primer lugar, instala una extensión maliciosa en Safari, bloqueando la ventana de malware con una notificación de seguridad falsa del sistema operativo, para hacerla invisible. Al hacer clic en los botones de la notificación, el usuario acepta la instalación de la extensión.
Una de estas extensiones es ManagementMark, que detectamos como no not-a-virus:HEUR:AdWare.Script.SearchExt.gen. Este programa monitorea las búsquedas del usuario y pone un script script.js en las páginas del navegador para desviarlas a la dirección hxxp://lkysearchex41343-a.akamaihd[.]net/as?q=.
El ejemplar de malware también carga la utilidad mitmdump, empaquetada con PyInstaller. Para que mitmdump pueda ver el tráfico HTTPS, agrega al sistema un certificado especial de confianza. Esto también se hace usando una ventana falsa que aparece superpuesta a la confirmación de instalación. A partir de ese momento, todo el tráfico de usuario se desvía al proxy SOCKS5 lanzado mediante mitmdump.
En la captura de pantalla, se puede ver que todo el tráfico que pasa por mitmdump (SearchSkilledData) es procesado por el script SearchSkilledData.py (opción –s):
Este script desvía todas las consultas de búsqueda de los usuarios, que en vez de llegar a los motores de búsqueda, terminan en hxxp: //lkysearchds3822-a.akamaihd [.] Net. Las soluciones de Kaspersky Lab detectan este script como not-a-virus:AdWare.Python.CimpliAds.a.
De esta forma, el adware de la familia Cimpli se afianza completamente en el sistema: si el tráfico no pasa por el servidor proxy, el código de extensión JS incrustado en la página se encarga de desviar las solicitudes. El atacante obtiene acceso a las consultas de búsqueda del usuario y puede modificar los resultados de los motores de búsqueda para mostrar ofertas publicitarias. Al final, el usuario recibe mucha publicidad no deseada.
Cabe señalar que Cimpli no es la única familia de aplicaciones publicitarias que Shlayer puede descargar. Esta lista también incluye AdWare.OSX.Bnodlero, AdWare.OSX.Geonei y AdWare.OSX.Pirrit, que ocupan casi todas las posiciones restantes del TOP 10 de amenazas para macOS en 2019.
Relación con otras modificaciones de la familia
Es fácil notar la similitud del comportamiento de la versión de Shlayer escrita en Python con las modificaciones anteriores de la familia escritas en Bash: la recopilación de identificadores y de versión del sistema, la descarga del archivo en un directorio temporal, la ejecución del archivo descargado y la eliminación de los rastros de la descarga, todo esto ya estaba presente en las versiones anteriores. Al mismo tiempo, ambas modificaciones usan curl con la combinación de opciones “–f0L”, que en realidad es el sello distintivo de toda la familia:
Propagación
La difución del malware es una parte importante de su ciclo de vida, y los creadores de Shalyer han tratado este problema con mucho cuidado. ¿Está buscando un nuevo episodio de su serie favorita? ¿Quiere ver la transmisión en vivo de un partido de fútbol? Entonces tiene que estar más alerta, porque tiene altas probabilidades de toparse con Shlayer.
Vimos varios programas de afiliados de archivos (aquí se describe en detalle qué son estos programas), que proponían a Shlayer como método de monetización. Después de analizar las ofertas de varios proveedores, identificamos una tendencia general: Shlayer se distingue de los demás por generar un pago relativamente alto por su instalación y, además, solo se cuentan las instalaciones realizadas por usuarios en Estados Unidos. Lo más probable es que la perspectiva de altas ganancias también haya contribuido a la gran popularidad de esta “oferta” (contamos más de 1000 sitios “asociados” que distribuyen Shlayer).
En la mayoría de los casos, a través de las páginas de aterrizaje publicitarias, los usuarios llegaban a la siguiente etapa de la cadena de distribución: páginas de hermoso diseño, que, aparentando ser una actualización de FlashPlayer, sugerían instalar malware. De esta manera se distribuía, sobre todo, la modificación Trojan-Downloader.OSX.Shlayer.a.
La versión de Trojan-Downloader.OSX.Shlayer.e discutida anteriormente se distribuía de una manera ligeramente diferente. De manera similar al esquema anterior, a fin de cuentas los usuarios llegaban a una página preparada de descarga de actualizaciones de Adobe Flash. Pero a ella se los desviaba desde grandes servicios en línea con una audiencia multimillonaria. Notamos varios casos en los que los enlaces que conducen a la descarga del malware estaban contenidos en la descripción del video en YouTube:
Otro ejemplo: los enlaces a las páginas desde las cuales se distribuía Shlayer se encontraban en Wikipedia, como notas de los artículos:
No eran los delincuentes quienes los agregaban a los recursos mencionados; descubrimos que todos los dominios “maliciosos” habían expirado recientemente y, a juzgar por los datos de WHOIS, ahora el propietario es una sola persona. El nuevo propietario publicó en los sitios un script malicioso que redirige a los usuarios a las páginas de descarga de Shlayer. En total, existen más de 700 de estos dominios.
Las estadísticas que hemos recopilado muestran que la mayoría de los ataques de Shlayer (31%) afectan a los usuarios en EE. UU., seguidos de aquellos en Alemania con el 14%, en Francia con el 10% y en Inglaterra también con 10%. Esto es consistente con los términos de los programas de afiliados que entregan este malware, así como con el hecho de que casi todos los sitios que conducen a páginas con un reproductor Flash falso tenían contenido en inglés.
Distribución geográfica de los usuarios atacados por el troyano Shlayer, febrero de 2018 a octubre de 2019. (descargar)
Conclusiones
Después de estudiar a la familia Shlayer, podemos concluir que la plataforma macOS es una buena fuente de ingresos para los atacantes. El usuario puede toparse con este troyano incluso si se limita a visitar recursos legítimos: los atacantes hacen un excelente uso de las técnicas de ingeniería social y es bastante difícil predecir qué tan sofisticado será el próximo método de engaño.
Las soluciones de Kaspersky Lab detectan Shlayer y sus artefactos, y descargan páginas con los siguientes veredictos:
- HEUR:Trojan-Downloader.OSX.Shlayer.*
- not-a-virus:HEUR:AdWare.OSX.Cimpli.*
- not-a-virus:AdWare.Script.SearchExt.*
- not-a-virus:AdWare.Python.CimpliAds.*
- not-a-virus:HEUR:AdWare.Script.MacGenerator.gen
IOCS:
- 4d86ae25913374cfcb80a8d798b9016e
- fa124ed3905a9075517f497531779f92
- 594aa050742406db04a8e07b5d247cdd
Enlaces maliciosos:
- hxxp://80.82.77.84/.dmg
- hxxp://sci-hub[.]tv
- hxxp://kodak-world[.]com
Direcciones URL de los servidores de administración:
- hxxp://api.typicalarchive[.]com
- hxxp://api.entrycache[.]com
- hxxp://api.macsmoments[.]com
Shlayer: un troyano que ataca a uno de cada diez usuarios de macOS