Ataques DangerousPassword dirigidos a entornos de desarrolladores Windows, macOS y Linux – JPCERT/CC Eyes
A finales de mayo de 2023, JPCERT/CC confirmó un ataque dirigido a desarrolladores de negocios de intercambio de criptomonedas, y se considera que está relacionado con el grupo de ataque dirigido DangerousPassword. [1], [2] (también conocido como CryptoMimic o SnatchCrypto), que ha estado atacando continuamente desde junio de 2019. Este ataque tuvo como objetivo entornos Windows, macOS y Linux con Python y Node.js instalados en la máquina. Este artículo explica el ataque que JPCERT/CC ha confirmado y el malware utilizado.
Ataques en el entorno Windows a partir del malware Python
El atacante inserta código malicioso en un archivo llamado builder.py en el módulo de Python (https://github.com/mnooner256/pyqrcode), que es para manejar códigos QR. Luego, el atacante lo distribuye al objetivo de alguna manera. El objetivo ejecuta el archivo sin darse cuenta del código malicioso. Como resultado, se descarga malware adicional que infecta la máquina. La Figura 1 muestra el flujo de ataque en un entorno Windows cuando se ejecuta el malware Python. Este malware de Python se ejecuta en entornos Windows, macOS y Linux, verifica la información del sistema operativo y cambia el flujo de infección según ello. Los ataques en entornos macOS y Linux se describen más adelante.
Figura 1: Flujo de ataque en un entorno Windows a partir del malware Python
El malware Python es un malware simple de tipo descargador que descarga y ejecuta archivos MSI desde una fuente externa. Como se muestra en la Figura 2, se caracteriza por su uso extensivo de ROT13 para ofuscar cuerdas C2 y otras cuerdas utilizadas.
Figura 2: Una parte del código builder.py donde se ejecuta la función maliciosa
El flujo de infección después de descargar el archivo MSI es bastante similar a los «ataques mediante el envío de archivos CHM maliciosos desde LinkedIn» descritos en la publicación del blog. Tendencias de ataques relacionados con DangerousPassword. Después de ejecutar el archivo MSI, se utiliza un script de Powershell eliminado para descargar y ejecutar un archivo MSI adicional desde una fuente externa. Además, se distingue porque la comunicación con el servidor C2 ocurre cada minuto porque la operación desde la descarga hasta la ejecución se registra en el programador de tareas para realizarse cada minuto. La muestra adicional del archivo MSI descargado mediante el script Powershell codifica el nombre de usuario, el sistema operativo y la información del proceso del dispositivo infectado en BASE64 y lo envía al servidor C2.
JPCERT/CC también ha confirmado casos en los que se descarga otro archivo MSI, que es diferente del archivo MSI que solo funciona para enviar información. Cuando se ejecuta otro archivo MSI, coloca un archivo DLL llamado devobj.dll, copia rdpclip.exe, un programa estándar del sistema operativo Windows que realiza operaciones relacionadas con el portapapeles, desde la carpeta del sistema de Windows a la carpeta de destino y lo ejecuta. El malware se ejecuta cuando devobj.dll se carga una DLL en rdpclip.exe. Cuando se ejecuta rdpclip.exe, la información C2 codificada en BASE64 se especifica como argumento.
devobj.dll usa HTTPS para descargar un archivo PE desde el C2 y luego extrae y ejecuta el archivo en la memoria. La figura 3 muestra una parte del código. El código devobj.dll está ofuscado por VMProtect, pero aparte de eso, se caracteriza porque se ejecuta mientras resuelve dinámicamente las API de Windows basadas en las cadenas y que se llama a una serie de funciones sin sentido con el fin de dificultar el código. leer.
Figura 3: Una parte del código de devobj.dll
Ataques en entornos macOS y Linux a partir de malware Python
La Figura 4 muestra el flujo de ataque en entornos macOS y Linux cuando se ejecuta el malware Python. Como se muestra en la Figura 5, las cadenas codificadas en BASE64 se insertan en builder.py. En entornos macOS y Linux, estas cadenas se decodifican, se guardan como un archivo llamado log.tmp y luego se ejecutan como un archivo Python.
Figura 4: Flujo de ataques en entornos macOS y Linux a partir de malware Python
Figura 5: cadenas codificadas en BASE64 insertadas en builder.py
La Figura 6 muestra una parte del código en el log.tmp decodificado. En entornos macOS y Linux, los ID de usuario generados en función de valores aleatorios e información del entorno del sistema operativo se envían al servidor C2 cada minuto. Después de eso, los datos recibidos del servidor C2 se decodifican en BASE64, se guardan como un archivo llamado tmp.py y luego se ejecutan como un archivo Python. Es único porque hay algunas solicitudes y cadenas de respuesta relacionadas con git.
Figura 6: Una parte del código en el log.tmp decodificado
JPCERT/CC ha confirmado PythonHTTPBackdoor, que posiblemente sea una muestra que se descargará en la siguiente etapa de este ataque. PythonHTTPBackdoor es un malware con comandos simples que se muestran en la Tabla 1. Se caracteriza porque también tiene una función de detección del entorno del sistema operativo y porque los comandos a ejecutar son ligeramente diferentes según el entorno. Además, como se muestra en la Figura 7, algunas de las cadenas de solicitud del malware y los nombres de archivos generados están codificados en ROT13 relacionados con git, como los de log.tmp. Esto sugiere que el malware se dirige claramente a los desarrolladores que utilizan git.
Tabla 1: Comandos de PythonHTTPBackdoor y sistema operativo compatible
ID de comando | Contenido | SO de destino |
---|---|---|
«501» | Recuperación de información de red y procesos. | Windows, Linux, macOS |
«502» | comando ejecutivo | Windows, Linux, macOS |
«503» | Descargar y ejecutar | Linux, Mac OS |
«504» | Salida | Windows, Linux, macOS |
Figura 7: Una parte del código PythonHTTPBackdoor
Al igual que PythonHTTPBackdoor, JPCERT/CC también ha identificado el malware Mach-O llamado JokerSpy como una posible muestra secundaria en el entorno macOS. Para obtener más información sobre PythonHTTPBackdoor y JokerSpy, consulte el artículo de Bitdefender. [3] así como de Elastic [4] y SentinelOne [5] publicado.
Ataques con malware Node.js
JPCERT/CC también ha confirmado el malware Node.js relacionado con este ataque. El atacante inserta código malicioso en un archivo llamado route.js en la carpeta de la biblioteca de express (https://expressjs.com), que es un marco Node.js, y el malware Node.js llamado request.js se coloca en la misma carpeta. De manera similar al ataque de malware Python, al ejecutar el archivo sin que el objetivo sea consciente del código malicioso, se descarga malware adicional que infecta la máquina. route.js y request.js contenían las siguientes rutas de archivo, que incluyen el nombre de carpeta «NodeJs_Test». El método de distribución de estos archivos se desconoce por el momento.
NodeJs_Test\Realtime-ChatApp\node_modules\express\lib\router\route.js NodeJs_Test\Realtime-ChatApp\node_modules\express\lib\router\request.js
Con respecto al flujo de ataque, como se muestra en la Figura 8, el objetivo ejecuta un archivo llamado route.js y luego se ejecuta request.js. request.js es un malware simple de tipo descargador que guarda el archivo recibido del servidor C2 como server.js y luego lo ejecuta.
Figura 8: Flujo de ataque con malware Node.js
La Figura 9 muestra una parte del código route.js. El código para ejecutar request.js en la misma carpeta se inserta al final del archivo.
Figura 9: Una parte del código route.js manipulado
La Figura 10 muestra una parte del código request.js. Al igual que el malware Python, el malware Node.js envía UID e información del sistema operativo generados aleatoriamente al servidor C2 cada minuto. Es un malware simple de tipo descargador que decodifica en BASE64 los datos recibidos del C2 y los ejecuta.
Se diferencia del malware Python en que las cadenas no están ofuscadas con ROT13 o BASE64. Sin embargo, es posible que se haya utilizado relativamente en los primeros días de este ataque dirigido a desarrolladores, ya que el archivo se actualizó por última vez el 3 de marzo de 2023. También es similar al malware Python en que se dirige a desarrolladores, incluidas muchas cadenas relacionadas con git. .
Figura 10: Una parte del código request.js
Para concluir
El grupo de ataque dirigido DangerousPassword es único porque se dirige al entorno de desarrollo con una variedad de plataformas. Los desarrolladores de software deben tener cuidado y asegurarse de utilizar marcos y módulos externos obtenidos de repositorios legítimos. Consulte el Apéndice para obtener información sobre los valores C2 y hash del malware cubierto en este informe.
Yuma Masubuchi
(Traducido por Takumi Nakano)
Referencias
[1] Spear Phishing contra empresas de criptomonedas
https://blogs.jpcert.or.jp/en/2019/07/spear-phishing-against-cryptocurrency-businesses.html
[2] Tendencias de ataques relacionados con DangerousPassword
https://blogs.jpcert.or.jp/en/2023/05/dangerouspassword.html
[3] Fragmentos de puerta trasera multiplataforma indican un ataque más grande a Mac OS
https://www.bitdefender.com/blog/labs/fragments-of-cross-platform-backdoor-hint-at-larger-mac-os-attack/
[4] Investigación inicial que expone a JOKERSPY
https://www.elastic.co/jp/security-labs/inital-research-of-jokerspy
[5] JokerEspía | Adversario desconocido dirigido a organizaciones con malware macOS de múltiples etapas
https://www.sentinelone.com/blog/jokerspy-unknown-adversary-targeting-organizations-with-multi-stage-macos-malware/
Apéndice A: C2
- aplicación.developcore.org
- pkginstall.net
- www.git-hub.me
- chequedevinc.com
Apéndice B: Valor hash de malware
- 118c1187c5b37ab9c4f9f39500d777c0a914c379d853439608157379dcb71772
- 35b4550050748c54faad1e5883c281f29c08e817cc193432e7b9b43124a7962a
- 575e852a1f24e84dacec9892042f2d2c1668bd836f9f5b03ed447f68caa7b612
- e0891a1bfa5980171599dc5fe31d15be0a6c79cc08ab8dc9f09ceec7a029cbdf
- 2eea41eefdc11f9fb7607fc4ef90f76ef03b119eda8ee35ebff37b345f559e0e
- 474c8a5ba3614cca1c48f34df73bfad753a95a67998485696391499d9bdba430
- 1599f7365db421e4fe07a169309624e7e25d4f28cd1b101d340d54d66b6eb921
- 528ac7bdd56a6e7ff515c6e0936db66c987e731482845dcd64a96af0f42fc95a
- 56c6ab0083cf7edae7491e9c49b0cd9b4bb6b1fb61b5facf9ddb034ea69125f7
- a7b0fa9c724e7837da97dc9c48ba76b22759e514afc305d43e87a69fa9089d4c
- 39bbc16028fd46bf4ddad49c21439504d3f6f42cccbd30945a2d2fdb4ce393a4
- 5fe1790667ee5085e73b054566d548eb4473c20cf962368dd53ba776e9642272
- 84bfc8c5bdba5b4eaa885af5e698382dd6baa0bf8da967c0716a0a6fce3e742a
- 67a0f25a20954a353021bbdfdd531f7cc99c305c25fb03079f7abbc60e8a8081
- 37850b6a422479e95e9fb856f3541a36cfd753070e2d10c7362f328231af5370
- aa951c053baf011d08f3a60a10c1d09bbac32f332413db5b38b8737558a08dc1
- 6d3eff4e029db9d7b8dc076cfed5e2315fd54cb1ff9c6533954569f9e2397d4c
- 951039bf66cdf436c240ef206ef7356b1f6c8fffc6cbe55286ec2792bf7fe16c
- d895075057e491b34b0f8c0392b44e43ade425d19eaaacea6ef8c5c9bd3487d8
- 6d3eff4e029db9d7b8dc076cfed5e2315fd54cb1ff9c6533954569f9e2397d4c
- 951039bf66cdf436c240ef206ef7356b1f6c8fffc6cbe55286ec2792bf7fe16c
- aa951c053baf011d08f3a60a10c1d09bbac32f332413db5b38b8737558a08dc1
- d895075057e491b34b0f8c0392b44e43ade425d19eaaacea6ef8c5c9bd3487d8