paint-brush
Cómo los mutantes RAT, en Python, roban datos y evaden la detecciónpor@hernanortiz
3,749 lecturas
3,749 lecturas

Cómo los mutantes RAT, en Python, roban datos y evaden la detección

por Hernán Ortiz7m2023/02/02
Read on Terminal Reader

Demasiado Largo; Para Leer

A pesar de que nuestros investigadores de seguridad encuentran paquetes maliciosos de Python todos los días, un nuevo tipo de malware que llamamos mutantes RAT está llamando nuestra atención. Han cambiado y se han adaptado con el tiempo para ser más evasivos y peligrosos. Esta es la historia de cómo pueden robar sus billeteras de criptomonedas y datos personales, controlar de forma remota su mouse y teclado y evolucionar para evadir la detección.
featured image - Cómo los mutantes RAT, en Python, roban datos y evaden la detección
Hernán Ortiz HackerNoon profile picture



"Un ninja sabio no busca a un enemigo al que no comprende del todo". - Splinter de Teenage Mutant Ninja Turtles


Como escritor técnico apasionado por la ciencia ficción, una de las partes más emocionantes de mi trabajo en Sonatype es cuando tengo la oportunidad de colaborar con el equipo de investigación de seguridad.


Desde que encontramos  una serie de paquetes de Python el mes pasado que corresponden a lo que llamamos mutantes RAT, malware novedoso que aprovecha las capacidades de los troyanos de acceso remoto y los ladrones de información, nuestros investigadores de seguridad han tenido una persistente sensación de déjà vu.


No es una ocurrencia rara: evalúan constantemente cientos de paquetes sospechosos de registros de código abierto para determinar si son realmente maliciosos. Durante este procedimiento, identifican patrones familiares entre los paquetes y, a veces, al reconocer fuertes similitudes, realizan más investigaciones para localizar al actor/campaña detrás de ellos.


Entre la última semana de 2022 y principios de 2023, nuestro sistema de inteligencia artificial marcó paquetes sospechosos cargados en el registro de PyPI, incluidos pyrologin , easytimestamp , discorder , discorder discord-dev , style.py y pythonstyles . Nuestros investigadores de seguridad los examinaron y confirmaron que, en efecto, eran maliciosos. Y después de un análisis más profundo, notaron que estos paquetes agregaron una serie de características que no se ven a menudo en el malware de Python.


En lo que se ha convertido en una estrategia de facto, los malos actores ocultan una carga útil en el archivo setup[.]py para que los desarrolladores solo tengan que usar una instalación pip simple para infectarse. En este caso, estarían lanzando sin darse cuenta un script de PowerShell que descarga un archivo ZIP para instalar bibliotecas que permiten al atacante controlar el mouse y el teclado de la víctima, tomar capturas de pantalla y crear conexiones remotas ocultas. Y además de eso, estos paquetes también filtran información confidencial como contraseñas, cookies y datos de billetera de criptomonedas, e incluso intentan instalar una herramienta para acceso remoto. Nuestros hallazgos coincidieron con Informe técnico de Phylum de los mismos paquetes.


Sin embargo, el investigador de seguridad Carlos Fernández estaba teniendo una inquietante sensación de déjà vu. Durante la semana posterior a la divulgación de los paquetes, los recuerdos de haber visto versiones anteriores de este malware pasaron por su mente. Un actor de amenazas podría haber estado desarrollando su malware a lo largo del tiempo, pero necesitábamos asegurarnos, así que me puse mi sombrero OSINT para ayudarlo a ver si había algo de verdad en su intuición.

la historia del origen

Mirando hacia atrás en nuestra base de datos, el 25 de septiembre de 2022, se cargó un paquete llamado pygradient en el repositorio de PyPI. Nuestra IA lo marcó como sospechoso y nuestros investigadores de seguridad confirmaron que contenía malware y que incluía las fuentes de otro paquete llamado pystyle . Ambas bibliotecas fueron escritas por billythegoat356 , también conocido como BillyTheGoat, también conocido como BillyV3 (con contribuciones de loTus04 y BlueRed). Este autor de Francia (al menos eso es lo que sugiere su ubicación en GitHub y el idioma que habla a través de sus canales de Discord) está acreditado como la persona detrás Hiperión , un ofuscador de Python que hemos encontrado a menudo en malware cargado recientemente, así como uno de los creadores de ladrón de W4SP , un ladrón de información que ha estado activo desde julio en un ataque continuo a la cadena de suministro para abrir registros.


El ladrón W4SP cuenta con persistencia (se reactiva cada vez que los usuarios reinician la PC), ofuscación (el autor promete que es completamente indetectable) y técnicas de esteganografía para ocultar cargas útiles polimórficas y altamente ofuscadas dentro de un archivo de imagen. El malware envía todas las cuentas de Discord, tarjetas de crédito, contraseñas y monederos criptográficos de la víctima al atacante a través de una dirección de webhook de Discord codificada. Los malos actores interesados en este malware lo han comprado pagando unos 20 USD en criptomonedas.



Después de decodificar la imagen, se revela un código oculto de Python ofuscado en base64.



Originalmente, pystyle no tenía una naturaleza maliciosa: un paquete inofensivo para diseñar y colorear la salida de la consola para mejorar la legibilidad y la experiencia del usuario. Pero según la investigación de Phylum, una vez que se hizo popular (el paquete aún está activo en PyPI y acumula más de 40.000 descargas cada mes), decidieron agregar el malware W4SP en un par de lanzamientos.


Los paquetes de código abierto como pystyle pueden actuar como agentes durmientes durante meses solo para ser activados más tarde por su propio autor con fines maliciosos. Un movimiento arriesgado, ya que su popular paquete puede ser descubierto por investigadores de seguridad como nosotros, quienes lo reportarán como malicioso y lo eliminarán para siempre. Es por eso que a menudo crean nuevos paquetes en los que incluyen el código fuente de una biblioteca inocua, agregan algún tipo de carga útil maliciosa y la cargan con un nuevo nombre: algo genérico, que suena benigno y parece inocente. Un nombre como pygradient .


Después de observar más de cerca a Carlos, encontramos que este malware mutante proto-RAT carecía de algunas de las características de las versiones de diciembre: aunque también lanzó un script de PowerShell y exfiltró datos confidenciales, no usó cargas útiles codificadas en base64 ni una lista blanca. txt para evitar la autoinfección. En cierto modo, era una variante más suave y menos sofisticada.


Pero luego observamos los paquetes cargados a principios de noviembre, incluidos paintpy , devicespoof y devicespoofer , y después de profundizar más, encontramos la confirmación de nuestra sospecha: el malware realmente estaba evolucionando.

Un imitador persiguiendo malware

Aunque BillyTheGoat no ha estado activo en GitHub desde noviembre, seguimos encontrando malware basado en sus creaciones o robándoles directamente, principalmente por parte de un usuario que aparentemente tiene su sede en Portugal llamado zeeckt .


Este usuario subió un paquete eliminado recientemente en PyPI llamado pystilez , falsamente acreditado a BillyTheGoat en lo que parecía InicioJacking —una técnica para aumentar la reputación de su nuevo paquete vinculándolo a una biblioteca popular de GitHub, asociándose así con sus cientos de estrellas y bifurcaciones.


Checkmarx ha estado rastreando este mal actor después de encontrar un ataque W4SP en un paquete llamado apicolor (junto con variaciones con nombres similares) que incluía un enlace al servidor Discord dentro de su código malicioso. El perfil de administrador vinculado a una cuenta de Steam verificada y el nombre "zeeckt" apareció como uno de los alias de Steam del atacante.


punto de control también informó que este actor de amenazas estaba creando usuarios falsos copiando los perfiles de cuentas populares de GitHub para aumentar la legitimidad. Y una de sus víctimas decidió crear un video de youtube advirtiendo a las personas sobre este ataque después de caer en uno de sus perfiles falsos.


Un investigador de seguridad publicó una de las cargas útiles de zeeckt con fines educativos y recibió una respuesta interesante del coautor del ladrón W4SP:




Qué irónico que te roben a tu ladrón.


El mismo autor, aparentemente un desarrollador de Python de 17 años, reitera su frustración en un archivo README en su perfil de GitHub:



No sabemos exactamente qué código malicioso ha robado zeeckt de otros malhechores, pero una cosa es cierta: ese nombre sigue apareciendo en campañas de malware en registros de código abierto.


Las variantes más furtivas roen su riqueza criptográfica

Carlos encontró recientemente cuatro paquetes más por zeeckt : forenitq , forenith , forenity y forenitz . Después de una mayor investigación, los etiquetó como maliciosos y los informó a PyPI para que los eliminaran. El caso más rápido tardó unos 20 minutos desde la publicación hasta la eliminación.


Mirando setup[.]py en forenitq , Carlos encontró la siguiente carga útil de primera etapa:




El atacante crea tres archivos temporales que descargan y ejecutan binarios de Windows desde direcciones URL específicas mediante el comando "iniciar". Aunque las babosas /rat y /clip sugieren intenciones maliciosas, no pudimos confirmar esa suposición sin mirar debajo del capó.


Al momento de escribir este artículo, la página alojada en hxxp://20[.]226[.]18[.]203 todavía está activa y solo muestra un enlace a una invitación de Discord que ya venció o es privada.


Carlos notó que el paquete se hacía pasar por el popular colorama paquete, utilizando sus metadatos para un posible intento de StarJacking.


Después de desofuscar el archivo RAT, encontró una línea que carga un posible secuestrador del portapapeles, pero los detalles estaban codificados en base64:


Tras la decodificación, obtenemos un código de Python diseñado para secuestrar el portapapeles de una víctima para reemplazar la dirección de la billetera de criptomonedas deseada con la dirección del atacante:


Busca patrones específicos como bitcoin (bc1), Ethereum (0x), Monero (4) y l itecoin (L o M o 3), y cuando encuentra un patrón, reemplaza la dirección deseada con la dirección de la billetera de criptomonedas del atacante. .


El código utiliza el clipper biblioteca para copiar y pegar datos del portapapeles. Instalará la biblioteca si aún no está instalada y luego copiará la dirección de la billetera de criptomonedas en el portapapeles. Luego, el código se configura en un bucle continuo para monitorear el portapapeles en busca de patrones de dirección de billetera.


Además, descubrimos más técnicas que utiliza este mutante RAT para evadir la detección: una carga útil de primera etapa agregada al archivo forenitq/ansi[.]py en lugar de setup[.]py y una carga útil polimórfica de segunda etapa que cambia cada vez que ejecuta el binario


El atacante también agregó un nuevo comando y control con un menú de ayuda muy completo, y esta vez se fala português:



Como puede ver, los actores maliciosos están ansiosos por robar sus fondos criptográficos y las credenciales del sistema para penetrar aún más en su infraestructura. Su malware RAT sigue mutando para ser más evasivo y dañino para los desarrolladores. Por lo tanto, si no está protegiendo su cadena de suministro de software hoy, considere tomar medidas para hacerlo lo antes posible.


IOC (Indicadores de Compromiso)

hxxp://20[.]226[.]18[.]203/inject/tCxFLYLT6ViY9ZnP

hxxp://20[.]226[.]18[.]203/clip

hxxp://20[.]226[.]18[.]203/rat