paint-brush
¿Herramienta criptográfica o ladrón de datos? Cómo el Meme-Token-Hunter-Bot y sus clones roban a los usuarios de macOSpor@moonlock
3,588 lecturas
3,588 lecturas

¿Herramienta criptográfica o ladrón de datos? Cómo el Meme-Token-Hunter-Bot y sus clones roban a los usuarios de macOS

por Moonlock (by MacPaw)7m2024/11/19
Read on Terminal Reader

Demasiado Largo; Para Leer

Los investigadores de Checkmarx descubrieron un paquete PyPI sospechoso que apuntaba a los usuarios de macOS. Si bien el paquete se presentaba como un bot cazador de tokens criptográficos, un análisis más profundo reveló que albergaba una sofisticada carga útil para robar datos. Para comprender mejor cómo Meme-Token-Hunter-Bot ejecuta su ataque, esbozamos un diagrama de flujo que muestra cada paso del proceso del malware.
featured image - ¿Herramienta criptográfica o ladrón de datos? Cómo el Meme-Token-Hunter-Bot y sus clones roban a los usuarios de macOS
Moonlock (by MacPaw) HackerNoon profile picture
0-item

Autores: Kseniia Yamburh, ingeniera de investigación de malware en Moonlock by MacPaw y Mykhailo Pazyniuk, ingeniero de investigación de malware en Moonlock by MacPaw


El software de código abierto es fundamental para la innovación, pero también abre la puerta a la explotación. Recientemente, los investigadores de Checkmarx descubierto Un paquete PyPI sospechoso que apuntaba a los usuarios de macOS, llamado "Meme-Token-Hunter-Bot". Si bien el paquete se presentaba como un bot cazador de tokens criptográficos, un análisis más profundo reveló que albergaba una sofisticada carga útil para robar datos.


En Moonlock, donde nos centramos en proteger a los usuarios de macOS, sabíamos que teníamos que investigar más a fondo este asunto. A medida que desenmarañamos las capas, nuestros hallazgos nos llevaron a 10 repositorios adicionales, cada uno de los cuales compartía un código casi idéntico, con variaciones sutiles. ¿Fue esto el trabajo de una implementación automatizada? ¿Una campaña coordinada? Así es como se desarrolló la investigación.

El primer vistazo a algo más que un simple robot criptográfico

La historia comienza con “Meme-Token-Hunter-Bot”, aparentemente otra herramienta de utilidad para entusiastas de las criptomonedas. Su README indica a los usuarios que ejecuten main.py, un archivo que normalmente inicia la funcionalidad principal en la mayoría de las aplicaciones basadas en Python. Siguiendo las instrucciones, profundizamos en main.py, solo para descubrir que invocaba un script auxiliar llamado base_helper.py. Este archivo auxiliar sería la piedra angular de nuestra investigación.

Mapeo del flujo de ataque

Para entender mejor cómo ejecuta su ataque Meme-Token-Hunter-Bot, hemos esbozado un diagrama de flujo que muestra cada paso del proceso del malware, desde la configuración inicial hasta la exfiltración de datos. Esta representación visual revela las capas de codificación y tácticas de sigilo integradas en el paquete, lo que ofrece una visión completa de cómo funciona.

Nuestro diagrama de flujo comienza con main.py, el punto de partida que llama a base_helper.py si el paquete detecta que se está ejecutando en macOS.

Este archivo incluye URL y nombres de archivos codificados en base64, almacenados en variables como encoded_base_key y encoded_licences.

Estos valores codificados ocultan el verdadero propósito del script, enmascarando la URL que se conecta a https://coinsw[.]app/basec/ y descarga más archivos al directorio ~/tmpcode/.

Una vez descargados los archivos, el siguiente paso en nuestro diagrama de flujo muestra que el malware lanza un archivo llamado MHTBot.py, redirigiendo toda la salida visible a /dev/null, manteniendo sus actividades ocultas tanto para los usuarios como para las herramientas de monitoreo.

Bot MHTBot

En el diagrama de flujo, MHTBot.py se destaca como el punto de inflexión del ataque. Mediante PyQT5, este archivo crea una interfaz gráfica de usuario que imita un software legítimo, mostrando una solicitud de contraseña y una barra de progreso. Este disfraz está diseñado para tranquilizar a los usuarios, mientras que, en realidad, MHTBot.py activa sigilosamente una serie de módulos de captura de datos en segundo plano.

MHTBot.py emplea una técnica de evasión inteligente: rechaza el primer intento de contraseña por considerarlo "inseguro" y solo acepta el segundo. Es probable que este retraso incorporado tenga como objetivo evadir la detección en entornos aislados, ya que muchos entornos aislados tienen un tiempo de ejecución limitado que puede finalizar antes de que el malware se active por completo.

Como parte de sus tácticas de evasión, Meme-Token-Hunter-Bot emplea un retraso antes de iniciar sus principales operaciones de robo de datos. Este retraso también está diseñado para evadir la detección en entornos sandbox, que a menudo tienen duraciones de tiempo de ejecución limitadas para el análisis automatizado. Al retrasar la ejecución, el malware aumenta sus posibilidades de eludir estos análisis iniciales y activarse por completo en el sistema de un usuario real.


La captura de pantalla a continuación destaca el código específico responsable de esta demora. La función start_one_py_main_after_delay inicia una demora de 7000 milisegundos (7 segundos) utilizando QTimer.singleShot, después de lo cual llama a la función run_one_py_main. Esta función luego activa el módulo principal de robo de datos, one.py, en un hilo separado.

Robo de datos

A medida que MHTBot.py transfiere el control a one.py, comienzan las operaciones principales de robo de datos del malware. Los siguientes fragmentos de código revelan cómo one.py utiliza varias funciones y módulos para recopilar información confidencial del sistema del usuario. Analicemos cada parte del código y su propósito.


En el primer fragmento, vemos que la función main() prepara un directorio oculto para el almacenamiento temporal de los datos robados. El malware crea ~/.temp/premium/ como directorio oculto para almacenar archivos sin alertar al usuario. Después de configurar este directorio, la función llama a varias rutinas para recopilar datos de aplicaciones específicas:


  • mediax(): Probablemente apunta a Apple Notes para extraer notas almacenadas.

  • copy_stickies() y copy_stickies_database(): estas funciones recopilan datos de la aplicación Stickies.

  • backup_ssh(): Recopila claves SSH del sistema.

  • copy_terminal_history(): copia archivos del historial de la terminal.

  • copy_ssh_and_keychain(): extrae datos de SSH y macOS Keychain.


Estas funciones están dedicadas a recopilar una amplia gama de datos de aplicaciones, credenciales de usuario y configuraciones SSH, lo que convierte a one.py en un recolector de datos integral.

La función search_files(), que se ve en el siguiente fragmento de código, amplía el alcance de la recopilación de datos al centrarse en tipos de archivos específicos. Esta función busca en directorios comunes (Descargas, Documentos, Escritorio y directorio de inicio) archivos confidenciales con extensiones como .txt, .csv, .json, .config y .env. Estos tipos de archivos suelen contener ajustes de configuración, claves API y otra información valiosa.


Los archivos encontrados se copian a un directorio temporal, se comprimen y se preparan para su exfiltración. Este paso garantiza que se recopilen todos los datos que normalmente se almacenan en directorios de usuarios o archivos de configuración de proyectos.

En el siguiente fragmento, las funciones copy_terminal_history() y copy_ssh_and_keychain() capturan datos críticos del usuario. El malware extrae el historial de la terminal de los archivos .zprofile y .zsh_history, lo que podría revelar los comandos que ejecutó el usuario, incluida cualquier información confidencial o credenciales ingresadas en la terminal.


Además, se accede al llavero de macOS y al directorio SSH para capturar credenciales cifradas, contraseñas y claves SSH almacenadas en el sistema, lo que proporciona a los atacantes credenciales de alto valor.

Una de las partes más notables de este malware es su objetivo de billeteras de criptomonedas. La función zip_additional_wallets() busca específicamente directorios asociados con billeteras de criptomonedas populares. El malware busca sistemáticamente archivos de billetera que pertenezcan a Bitcoin, Electrum, Coinomi, Exodus y otras billeteras de criptomonedas importantes. Una vez identificados, estos directorios de billetera se comprimen y se almacenan en el directorio temporal, listos para la exfiltración.

El malware también incluye funciones específicas para el robo de datos de Telegram. Las funciones backup_telegram() y backup_tdata() buscan directorios de datos de Telegram e intentan acceder a mensajes, contactos y archivos multimedia almacenados en la aplicación. Al copiar estos archivos, el malware puede permitir a los atacantes reconstruir el historial de comunicaciones y archivos multimedia del usuario en Telegram.

Exfiltración

Después de recopilar información confidencial, Meme-Token-Hunter-Bot procede a exfiltrar los datos a un servidor remoto. Esta exfiltración se ejecuta con una serie de funciones que se encargan de renombrar archivos, cargarlos y notificar al bot de Telegram del atacante. Los siguientes fragmentos de código ilustran cómo se desarrolla este proceso.

La función send_telegram_message envía un mensaje a un bot de Telegram preconfigurado para alertar a los atacantes de que se ha subido un nuevo lote de archivos robados. Esta función garantiza que los atacantes reciban actualizaciones oportunas sobre cada exfiltración, lo que les permite monitorear el proceso de robo de datos en tiempo real.


Para ocultar aún más su presencia, el malware renombra los archivos robados con una extensión .minecraft, un truco inusual que probablemente tiene como objetivo eludir los sistemas básicos de detección de intrusiones en la red que monitorean tipos de archivos específicos. Una vez renombrado, upload_file inicia la transferencia de datos al servidor remoto del atacante. El archivo se abre en modo de lectura binaria y se carga usando requests.post() en https://store1.gofile[.]io/, una plataforma pública de intercambio de archivos.


Si la carga es exitosa (indicada por un código de estado 200), la función recupera el enlace de descarga, que luego se envía al atacante a través de Telegram.

11 repositorios adicionales: el panorama general

Durante nuestra investigación, sospechamos que Meme-Token-Hunter-Bot podría no ser un paquete aislado. Utilizando un GitHub específico consulta ('b25lLnB5' AND 'requests.get(url)'), descubrimos 10 repositorios adicionales con código casi idéntico. Estos repositorios presentaban modificaciones menores en los nombres de archivo y las etiquetas de la interfaz de usuario, probablemente generadas a través de una estrategia de implementación automatizada para mantener múltiples copias del malware, lo que garantiza su disponibilidad incluso si se marca o elimina un repositorio.

Curiosamente, si bien Meme-Token-Hunter-Bot existe desde hace 10 meses, recién comenzó a incorporar código malicioso en agosto de 2024, cuando se introdujo por primera vez base_helper.py, el archivo responsable de descargar el ladrón de Python de etapa 2. La última actualización de este archivo se realizó el 28 de septiembre de 2024.

Por otra parte, los 11 repositorios adicionales recibieron sus actualizaciones maliciosas hace unos dos meses, cuando se agregó base_helper.py. Esta sincronización coordinada sugiere que estos repositorios se configuraron específicamente para distribuir el malware, basándose en el éxito inicial y los métodos observados en Meme-Token-Hunter-Bot.


También encontramos instrucciones para omitir Gatekeeper en varios de estos repositorios, diseñadas para guiar a los usuarios a la hora de eludir las advertencias de seguridad de macOS. Las instrucciones se presentaron en un formato visual paso a paso, animando a los usuarios a hacer clic derecho en la aplicación, seleccionar "Abrir" y omitir la advertencia de Gatekeeper.

Además, entre los 10 repositorios adicionales identificados, se destacó una variante llamada “Solana-Bot”. Si bien sigue el mismo flujo malicioso que Meme-Token-Hunter-Bot, observamos ligeras modificaciones, en particular en los nombres de archivo y el uso de funciones. Un análisis comparativo del archivo base_helper.py de Solana-Bot y el de Meme-Token-Hunter-Bot resalta estas diferencias.

Las distinciones clave entre Solana-Bot y Meme-Token-Hunter-Bot incluyen cambios de URL.

 "aHR0cHM6Ly9jb2luc3cuYXBwL2Jhc2VjLw==" + "UENTQm90LnB5" = "https://coinsw.app/basec/PCSBot.py" <-- Solana-Bot "aHR0cHM6Ly9jb2luc3cuYXBwL2Jhc2VjLw==" + "TUhUQm90LnB5" = "https://coinsw.app/basec/MHTBot.py"

Conclusión

Esta investigación sobre Meme-Token-Hunter-Bot y sus variantes relacionadas revela una campaña cuidadosamente orquestada dirigida a los usuarios de macOS. Este paquete ladrón, que en un principio fue descubierto por Checkmarx, se disfrazó de herramienta criptográfica y se ha expandido hasta convertirse en una amenaza más amplia. Nuestro análisis descubrió 11 repositorios adicionales, cada uno de los cuales contiene ligeras variaciones del código original. Los atacantes parecen haber empleado la automatización para generar rápidamente estos repositorios, utilizando modificaciones menores en los nombres, las etiquetas de la interfaz de usuario y la funcionalidad para evadir la detección y garantizar la disponibilidad persistente.


Sin embargo, también observamos tácticas de ingeniería social conocidas dirigidas a los usuarios de macOS, en particular las instrucciones para eludir el control de Gatekeeper. Esto indica que los actores de amenazas todavía dependen en gran medida de explotar la confianza de los usuarios. A pesar de las técnicas avanzadas observadas en esta campaña, esta dependencia de elusiones asistidas por el usuario subraya la necesidad de una educación continua de los usuarios.


La concienciación es la mejor defensa. Recursos como el blog Moonlock moonlock.com/blog Proporcionar a los usuarios de macOS información útil sobre las amenazas actuales y formas de mejorar su seguridad.

Los IoC están disponibles en la colección: https://www.virustotal.com/gui/collection/68e7bff75a6ceb5d3d4faabfdb0e106b6527382a2b29a17c59ec3ce7d8f4233b/iocs