Mineros invisibles: desvelando las operaciones de minería de criptomonedas de GHOSTENGINE

Elastic Security Labs ha identificado REF4578, un conjunto de intrusión que incorpora varios módulos maliciosos y aprovecha los controladores vulnerables para desactivar soluciones de seguridad conocidas (EDRs) para la criptominería.

25 min de lecturaPatrón de ataque
Mineros invisibles: revelar las operaciones de criptominería de GHOSTENGINE

Preámbulo

Elastic Security Labs identificó un conjunto de intrusiones que incorpora varios módulos maliciosos y aprovecha los controladores vulnerables para desactivar soluciones de seguridad conocidas (EDR) para la minería de criptomonedas. Además, el equipo descubrió capacidades para establecer persistencia, instalar una puerta trasera previamente no documentada y ejecutar un criptominero. Nos referimos a este conjunto de intrusiones como REF4578 y a la carga útil principal como GHOSTENGINE (la investigación tangental realizada por el equipo de Antiy nombró partes de este conjunto de intrusiones HIDDENSHOVEL).

Conclusiones clave

  • Los autores de malware incorporaron muchos mecanismos de contingencia y duplicación
  • GHOSTENGINE aprovecha los controladores vulnerables para terminar y eliminar agentes EDR conocidos que probablemente interferirían con el minero de monedas implementado y conocido
  • Esta campaña implicó una cantidad poco común de complejidad para garantizar tanto la instalación como la persistencia del minero XMRIG

Análisis de código

On May 6, 2024, at 14:08:33 UTC, the execution of a PE file named Tiworker.exe (masquerading as the legitimate Windows TiWorker.exe file) signified the beginning of the REF4578 intrusion. The following alerts were captured in telemetry, indicating a known vulnerable driver was deployed.

Tras la ejecución, este archivo descarga y ejecuta un script de PowerShell que orquesta todo el flujo de ejecución de la intrusión. El análisis reveló que este binario ejecuta una línea de comandos de PowerShell codificada de forma rígida para recuperar un script ofuscado, get.png, que se usa para descargar más herramientas, módulos y configuraciones del atacante C2, como se muestra en la captura de pantalla a continuación.

GHOSTENGINE

GHOSTENGINE se encarga de recuperar y ejecutar módulos en la máquina. Emplea principalmente HTTP para descargar archivos de un dominio configurado, con una IP de respaldo en caso de que los dominios no estén disponibles. Además, emplea FTP como protocolo secundario con credenciales integradas. A continuación se muestra un resumen del flujo de ejecución:

Este script descarga y ejecuta clearn.png, un componente diseñado para purgar el sistema de restos de infecciones anteriores pertenecientes a la misma familia pero a diferentes campañas; Elimina los archivos maliciosos de C:\Program Files\Common Files\System\ado y C:\PROGRA~1\COMMON~1\System\ado\ y elimina las siguientes tareas programadas por nombre:

  • Microsoft Assist Job
  • System Help Center Job
  • SystemFlushDns
  • SystemFlashDnsSrv

La evidencia de esos artefactos de tareas programadas puede ser indicadores de una infección previa.

Durante la ejecución, intenta deshabilitar Windows Defender y limpiar los siguientes canales de registro de eventos de Windows:

  • Application
  • Security
  • Setup
  • System
  • Forwarded Events
  • Microsoft-Windows-Diagnostics-Performance
  • Microsoft-Windows-AppModel-Runtime/Operational
  • Microsoft-Windows-Winlogon/Operational

get.png deshabilita Windows Defender, habilita los servicios remotos y borra el contenido de:

  • C:\Windows\Temp\
  • C:\Windows\Logs\
  • C:\$Recycle.Bin\
  • C:\windows\ZAM.krnl.trace

get.png también verifica que el volumen C:\ tenga al menos 10 MB de espacio libre para descargar archivos, almacenándolos en C:\Windows\Fonts. De lo contrario, intentará eliminar archivos grandes del sistema antes de buscar otro volumen adecuado con suficiente espacio y crear una carpeta en $RECYCLE.BIN\Fonts.

Para obtener la resolución DNS actual de los nombres de dominio C2, GHOSTENGINE emplea una lista codificada de servidores DNS, 1.1.1.1 y 8.8.8.8.

A continuación, para establecer la persistencia, get.png crea las siguientes tareas programadas como SYSTEM:

  • OneDriveCloudSync usando msdtc para ejecutar el servicio malicioso DLL C:\Windows\System32\oci.dll cada 20 minutos (se describe más adelante)
  • DefaultBrowserUpdate para ejecutar C:\Users\Public\run.bat, que descarga el script get.png y lo ejecuta cada 60 minutos
  • OneDriveCloudBackup para ejecutar C:\Windows\Fonts\smartsscreen.exe cada 40 minutos

get.png finaliza todos los procesos curl.exe y cualquier proceso de PowerShell con *get.png* en su línea de comandos, excluyendo el proceso actual. Esta es una forma de terminar cualquier instancia del malware que se ejecute simultáneamente.

A continuación, este script descarga config.txt, un archivo JSON que contiene los hashes de los archivos PE que recuperó. Este archivo verifica si se van a descargar archivos binarios actualizados comprobando los hashes de los archivos descargados anteriormente de cualquier infección pasada.

Por último, get.png descarga todos sus módulos y varios archivos PE. A continuación se muestra una tabla que contiene una descripción de cada archivo descargado:

caminoTipoDescripción
C:\Windows\System32\drivers\aswArPots.sysControlador del kernelControlador vulnerable de Avast
C:\Windows\System32\drivers\IObitUnlockers.sysControlador del kernelControlador vulnerable de IObit
C:\Windows\Fonts\curl.exeEjecutable de PESe emplea para descargar archivos a través de cURL
C:\Windows\Fonts\smartsscreen.exeEjecutable de PECore payload (GHOSTENGINE), su objetivo principal es desactivar la instrumentación de seguridad, completar la infección inicial y ejecutar el minero.
C:\Windows\System32\oci.dllDLL de servicioPersistence/updates module
backup.pngScript de PowershellBackdoor module
kill.pngScript de PowershellUn script de PowerShell que inyecta y ejecuta un archivo PE responsable de matar los sensores de seguridad

Módulos GHOSTENGINE

GHOSTENGINE despliega varios módulos que pueden manipular las herramientas de seguridad, crear una puerta trasera y buscar actualizaciones de software.

Controlador de agente EDR y módulo minero: smartsscreen.exe

Este módulo finaliza principalmente cualquier proceso activo del agente EDR antes de descargar e instalar un criptominero.

El malware escanea y compara todos los procesos en ejecución con una lista codificada de agentes EDR conocidos. Si hay coincidencias, primero finaliza el agente de seguridad aprovechando el archivo Avast Anti-Rootkit Driver aswArPots.sys con el 0x7299C004 IOCTL para finalizar el proceso mediante PID.

smartscreen.exe A continuación, se emplea para eliminar el binario del agente de seguridad con otro controlador vulnerable, iobitunlockers.sys de IObit, con el 0x222124IOCTL .

smartscreen.exe A continuación, descarga el programa de minería del cliente XMRig (WinRing0x64.png) del servidor C2 como taskhostw.png. Finalmente, ejecuta XMRig, sus controladores y el archivo de configuración config.json, iniciando el proceso de minería.

Update/Persistence module: oci.dll

El script de PowerShell crea un archivo DLL de servicio (oci.dll), un archivo DLL fantasma cargado por msdtc. La arquitectura de la DLL varía en función de la máquina; Puede ser de 32 bits o de 64 bits. Su función principal es crear persistencia del sistema y descargar cualquier actualización de los servidores C2 descargando el script get.png del C2 y ejecutándolo.

Cada vez que se inicie el servicio msdtc , se cargará oci.dll para generar la línea de PowerShell que ejecuta get.png :

Módulo de terminación del agente EDR: kill.png

kill.png es un script de PowerShell que inyecta shellcode en el proceso actual, descifrando y cargando un archivo PE en la memoria.

Este módulo está escrito en C++, y los autores integraron la redundancia en su funcionamiento. Esta redundancia es evidente en la replicación de la técnica empleada en smartsscreen.exe para terminar y eliminar binarios de agentes EDR; Escanea continuamente en busca de nuevos procesos.

Módulo de puerta trasera de Powershell: backup.png

El script de PowerShell funciona como una puerta trasera, lo que permite la ejecución remota de comandos en el sistema. Envía continuamente un objeto JSON codificado en Base64 que contiene un ID único, derivado de la hora actual y el nombre del equipo mientras espera comandos codificados en base64. A continuación, se devuelven los resultados de esos comandos.

En este ejemplo eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9 es el objeto JSON codificado en Base64:

$ echo "eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9" | base64 -D
{"id":"171568624072626","host":"analysis"}

Configuración del minero

XMRig es un minero de criptomonedas legítimo, y documentaron el uso y los elementos del archivo de configuración aquí. Como se señaló al principio de esta publicación, el objetivo final del conjunto de intrusión REF4578 era obtener acceso a un entorno y desplegar un minero de criptomonedas Monero persistente, XMRig.

Extrajeron el archivo de configuración del minero, que fue tremendamente valioso, ya que nos permitió informar sobre el ID de pago de Monero y realizar un seguimiento de las estadísticas del trabajador y del grupo, la criptomoneda minada, los ID de transacciones y los retiros.

A continuación se muestra un extracto del archivo de configuración de XMRig REF4578:

{
    "autosave": false,
    "background": true,
    "colors": true,

...truncated...

    "donate-level": 0,
    "donate-over-proxy": 0,
    "pools": [
        {
            "algo": "rx/0",
            "coin": "monero",
            "url": "pool.supportxmr[.]com:443",
            "user": "468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f",
            "keepalive": true,
            "tls": true

...truncated...

    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "verbose": 0,
    "watch": true,
    "pause-on-battery": false,
    "pause-on-active": false
}

ID de pago de Monero

Monero es una criptomoneda blockchain que se centra en la ofuscación y la fungibilidad para garantizar el anonimato y la privacidad. El ID de pago es un archivo adjunto de transacción arbitrario y opcional que consta de 32 bytes (64 caracteres hexadecimales) o 8 bytes (en el caso de direcciones integradas).

Usando el ID de pago del extracto de configuración anterior (468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f) podemos ver las estadísticas del trabajador y del grupo en uno de los sitios del grupo de minería de Moneroenumerados en la configuración.

Además, podemos ver los hashes de las transacciones, que podemos consultar en el explorador de blockchain de Monero. Tenga en cuenta que, si bien las transacciones se remontan a cuatro meses atrás, esto solo indica la ganancia monetaria potencial de este trabajador y cuenta específicos.

Usando el Explorador de Blockchain y uno de los hashes de transacción que obtuvimos del ID de pago, podemos ver la clave pública, el monto que se retira y cuándo. Tenga en cuenta que estas claves públicas se emplean con direcciones de un solo uso, o direcciones ocultas con las que el adversario emplearía una clave privada para desbloquear los fondos.

In the above example for transaction 7c106041de7cc4c86cb9412a43cb7fc0a6ad2c76cfdb0e03a8ef98dd9e744442 we can see that there was a withdrawal of 0.109900000000 XMR (the abbreviation for Monero) totaling $14.86 USD. The Monerao Mining Pool site shows four transactions of approximately the same amount of XMR, totaling approximately $60.70 USD (January - March 2024).

A partir de la publicación de esta investigación, todavía hay mineros activos conectados al ID de pago REF4578.

Si bien este ID de pago específico no parece ser una gran fuente de ingresos, es evidente que REF4578 podría operar este conjunto de intrusiones con éxito. Otras víctimas de esta campaña podrían tener diferentes ID de pago empleados para rastrear intrusiones, que podrían combinar para obtener un botín general mayor.

Malware y MITRE ATT&CK

Elastic usa el marco MITRE ATT&CK para documentar tácticas, técnicas y procedimientos comunes que las amenazas emplean contra las redes empresariales.

Táctica

La táctica representa el porqué de una técnica o subtécnica. Es el objetivo táctico del adversario: la razón para realizar una acción.

Técnicas

Las técnicas representan cómo un adversario logra un objetivo táctico mediante la realización de una acción.

Mitigación de GHOSTENGINE

Detección

El primer objetivo del malware GHOSTENGINE es incapacitar las soluciones de seguridad de endpoints y deshabilitar registros de eventos específicos de Windows, como los registros de seguridad y del sistema, que registran la creación de procesos y el registro de servicios. Por lo tanto, es crucial priorizar la detección y prevención de estas acciones iniciales:

  • Ejecución sospechosa de PowerShell
  • Ejecución desde directorios inusuales
  • Elevar los privilegios a la integridad del sistema
  • Implementación de controladores vulnerables y establecimiento de servicios de modo kernel asociados.

Una vez que se cargan los controladores vulnerables, las oportunidades de detección disminuyen significativamente y las organizaciones deben encontrar puntos de conexión comprometidos que dejen de transmitir registros a su SIEM.

El tráfico de red puede generar y ser identificable si las búsquedas de registros DNS apuntan a dominios de grupos de minería conocidos a través de puertos conocidos como HTTP (80) y HTTPS (443). Stratum también es otro protocolo de red popular para los mineros, de forma predeterminada, a través del puerto 4444.

El análisis de este conjunto de intrusiones reveló las siguientes reglas de detección y eventos de prevención de comportamiento:

Prevención

Prevención de archivos maliciosos:

Prevención de inyección de shellcode:

Prevención de creación de archivos de controladores vulnerables (Windows.VulnDriver.ArPot y Windows.VulnDriver.IoBitUnlocker )

YARA

Elastic Security creó reglas YARA para identificar esta actividad.

Observaciones

Todos los observables también están disponibles para su descarga tanto en formato ECS como en STIX.

En esta investigación se discutieron los siguientes observables.

ObservableTipoNombreReferencia
2fe78941d74d35f721556697491a438bf3573094d7ac091b42e4f59ecbd25753SHA-256C:\Windows\Fonts\smartsscreen.exeMódulo controlador GHOSTENGINE EDR
4b5229b3250c8c08b98cb710d6c056144271de099a57ae09f5d2097fc41bd4f1SHA-256C:\Windows\System32\drivers\aswArPots.sysControlador vulnerable de Avast
2b33df9aff7cb99a782b252e8eb65ca49874a112986a1c49cd9971210597a8aeSHA-256C:\Windows\System32\drivers\IObitUnlockers.sysControlador vulnerable de Iobit
3ced0552b9ecf3dfecd14cbcc3a0d246b10595d5048d7f0d4690e26ecccc1150SHA-256C:\Windows\System32\oci.dllMódulo de actualización/persistencia (64 bits)
3b2724f3350cb5f017db361bd7aae49a8dbc6faa7506de6a4b8992ef3fd9d7abSHA-256C:\Windows\System32\oci.dllMódulo de actualización/persistencia (32 bits)
35eb368c14ad25e3b1c58579ebaeae71bdd8ef7f9ccecfc00474aa066b32a03fSHA-256C:\Windows\Fonts\taskhostw.exeCliente minero
786591953336594473d171e269c3617d7449876993b508daa9b96eedc12ea1caSHA-256C:\Windows\Fonts\config.jsonArchivo de configuración del minero
11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5SHA-256C:\Windows\Fonts\WinRing0x64.sysConductor minero
aac7f8e174ba66d62620bd07613bac1947f996bb96b9627b42910a1db3d3e22bSHA-256C:\ProgramData\Microsoft\DeviceSync\SystemSync\Tiworker.exeEtapa inicial
6f3e913c93887a58e64da5070d96dc34d3265f456034446be89167584a0b347eSHA-256backup.pngMódulo de puerta trasera GHOSTENGINE
7c242a08ee2dfd5da8a4c6bc86231985e2c26c7b9931ad0b3ea4723e49ceb1c1SHA-256get.pngCargador GHOSTENGINE
cc4384510576131c126db3caca027c5d159d032d33ef90ef30db0daa2a0c4104SHA-256kill.pngMódulo de terminación GHOSTENGINE EDR
download.yrnvtklot[.]comdominioServidor C2
111.90.158[.]40IPv4-ADDRServidor C2
ftp.yrnvtklot[.]comdominioServidor C2
93.95.225[.]137IPv4-ADDRServidor C2
online.yrnvtklot[.]comdominioServidor C2

Referencias

A lo largo de la investigación anterior se hizo referencia a lo siguiente: