ClickFix a MaaS: Dentro de un RAT Modular de Windows y su Panel de Control
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Netskope Threat Labs observó una campaña de ClickFix entregando un RAT personalizado para Windows construido en Node.js a través de instaladores MSI maliciosos. La carga útil mantiene módulos clave en memoria y utiliza transmisión gRPC a través de Tor para C2. Un error de OPSEC expuso el protocolo del panel de administración, apuntando a un modelo de malware como servicio con seguimiento de monederos. La persistencia se establece a través de un valor de Run a nivel de usuario en HKCU.
Investigación
Los investigadores capturaron el MSI, decodificaron el bootstrap de PowerShell y rastrearon la carga dinámica de módulos Node.js. Extrajeron y descifraron el blob de configuración para recuperar una dirección C2 .onion. Un archivo admin.proto filtrado reveló funciones de MaaS como la gestión multi-operador y el monitoreo de monederos, y los analistas notaron un watchdog auto-regenerador más el uso de Tor para tráfico anonimizado.
Mitigación
Bloquee la ejecución de MSI no firmados de fuentes no confiables y monitoree HKCU…Run para nuevas entradas sospechosas. Detecte PowerShell que descargue cargas útiles de MSI desde dominios como cloud-verificate.com. Alerta en conhost.exe o node.exe lanzados con argumentos ocultos y en tor.exe apareciendo en endpoints que no lo requieran.
Respuesta
Aísle los hosts afectados, recolecte memoria para análisis de módulos en memoria y elimine la persistencia de HKCU Run. Revise %LOCALAPPDATA%LogicOptimizer para buscar artefactos de preparación y cualquier actividad programada de tor.exe, luego bloquee el endpoint .onion y los dominios/IPs relacionados. Cace a nivel empresarial artefactos del mismo instalador y cadenas de procesos.
Flujo de Ataque
Detecciones
Ejecución de Binario NodeJS Desde Ubicación No Común (vía cmdline)
Ver
Puntos de Persistencia Posibles [ASEPs – Software/NTUSER Hive] (vía evento_registro)
Ver
Descarga o Carga a través de Powershell (vía cmdline)
Ver
Conhost LOLBAS (vía cmdline)
Ver
MsiExec Generado por Proceso de Shell (vía cmdline)
Ver
Intento de Comunicaciones de Dominio de Búsqueda de IP Posible (vía dns)
Ver
Posibles Herramientas de Red Tor (vía cmdline)
Ver
Detección de Ejecución de Conhost para Generar Nodo para Script de Bootstrap [Creación de Proceso de Windows]
Ver
Ejecución de Comando Malicioso de PowerShell para Descargar e Instalar MSI [PowerShell de Windows]
Ver
Ejecución de Simulación
Prerrequisito: La Comprobación de Telémetría y Línea de Base Pre-vuelo debe haber pasado.
Justificación: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta que espera la lógica de detección.
-
Narrativa del Ataque y Comandos:
- Objetivo: El atacante quiere iniciar una carga útil maliciosa de Node.js (
bootstrap.js) sin levantar sospechas. - Método: Usar un binario de Windows firmado (
conhost.exe) como un proxy para lanzarnode.exeen modo sin cabeza, pasando el script bootstrap como argumento. - Pasos:
- Colocar un
bootstrap.jsmalicioso en un directorio de escritura (por ejemplo,%TEMP%). - Invocar
conhost.execon la cadena de argumento exacta que la regla observa. - El comando se ejecuta bajo el contexto del usuario actual, simulando un proceso legítimo de generación.
- Colocar un
# 1. Colocar bootstrap.js malicioso (contenido inofensivo simulado para prueba) $bootstrapPath = "$env:TEMPbootstrap.js" Set-Content -Path $bootstrapPath -Value "// placeholder de bootstrap malicioso" # 2. Ejecutar conhost.exe para generar node.exe con las banderas requeridas $conhost = "$env:windirsystem32conhost.exe" $args = '--headless "node.exe" "bootstrap.js"' Start-Process -FilePath $conhost -ArgumentList $args -WorkingDirectory $env:TEMP - Objetivo: El atacante quiere iniciar una carga útil maliciosa de Node.js (
-
Script de Prueba de Regresión:
# ------------------------------------------------- # Prueba de Regresión: Desencadenar Conhost → Bootstrap Node # ------------------------------------------------- # Asegúrese de que Sysmon esté ejecutando y registrando eventos ProcessCreate. # Colocar un script de bootstrap ficticio $bootstrap = "$env:TEMPbootstrap.js" Set-Content -Path $bootstrap -Value "// contenido de prueba de bootstrap" # Definir la línea de comando exacta que la regla de detección busca $conhostPath = "$env:windirsystem32conhost.exe" $cmdLine = '--headless "node.exe" "bootstrap.js"' # Lanzar conhost con los argumentos de apariencia maliciosa Start-Process -FilePath $conhostPath -ArgumentList $cmdLine -WorkingDirectory $env:TEMP Write-Host "Simulación completada – verificar SIEM para la alerta." -
Comandos de Limpieza:
# Detener cualquier proceso node o conhost restante lanzado por la prueba Get-Process -Name node, conhost -ErrorAction SilentlyContinue | Stop-Process -Force # Eliminar el script de bootstrap temporal Remove-Item -Path "$env:TEMPbootstrap.js" -Force -ErrorAction SilentlyContinue Write-Host "Limpieza finalizada."