La Campaña TerminalFix Permite El Pivotaje de Red a Través de Hosts Comprometidos
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
TerminalFix es una variante de la técnica ClickFix en la que los atacantes utilizan falsos avisos de verificación de Cloudflare para manipular a los usuarios para que ejecuten comandos maliciosos de PowerShell. El ataque combina carga lateral de DLL, entrega de carga útil basada en esteganografía y un túnel inverso basado en WebSocket. Esto permite que la estación de trabajo comprometida funcione como un pivote de red para un reconocimiento adicional y un posible despliegue de ransomware.
Investigación
La investigación examinó el ciclo de vida del ataque desde el señuelo inicial basado en web hasta la actividad post-explotación. Los analistas identificaron que LockScreenContentServer.exe se estaba utilizando para la carga lateral de DLL y que los archivos PNG se utilizaban para la entrega de cargas útiles esteganográficas. La campaña se asoció además con Vice Spider según informes de medios alemanes y las recomendaciones publicadas por el BSI.
Mitigación
Los defensores deberían monitorizar para detectar iframes sospechosos basados en navegador seguidos por la ejecución de PowerShell o Windows Terminal. Las organizaciones deberían detectar comportamientos inusuales de carga de DLL, en particular binarios legítimos cargando DLLs desde ubicaciones inesperadas como C:ProgramData. Restringir las políticas de ejecución de PowerShell y monitorear tareas programadas no autorizadas y modificaciones en las claves Run del registro puede reducir aún más la exposición al ataque.
Respuesta
Cuando se detecta actividad de TerminalFix, aísle la estación de trabajo afectada para evitar que funcione como un pivote de red. Analice el tráfico de red para conexiones WebSocket externas a dominios desconocidos y actividad de reconocimiento interno como consultas LDAP. Revise la telemetría del punto final para detectar la ejecución no autorizada de scripts de Python y el uso de herramientas incluyendo Impacket y Certipy.
Flujo de Ataque
Aún estamos actualizando esta parte.
Detecciones
Operaciones Sospechosas en la Clave de Registro NoWarningNoElevationOnInstall (a través de registry_event)
Puntos de Persistencia Posibles [ASEPs – Software/NTUSER Hive] (a través de registry_event)
Posibles Patrones de Línea de Comando de Impacket (a través de cmdline)
Posible Ejecución Remota de Código usando Impacket (a través de cmdline)
Ejecución de Python desde Carpetas Sospechosas (a través de cmdline)
Posible Enumeración de Cuenta de Administrador o Grupo (a través de cmdline)
Descubrimiento de Confianzas de Dominio Sospechosas (a través de cmdline)
Posible Movimiento Lateral vía PsExec o Similar (a través de system)
Posible Movimiento Lateral vía PsExec o Similar (a través de audit)
Posible Uso de PsExec (a través de audit)
IOCs (SourceIP) para detectar: TerminalFix: Cuando una Estación de Trabajo se Convierte en un Pivote de Red
IOCs (DestinationIP) para detectar: TerminalFix: Cuando una Estación de Trabajo se Convierte en un Pivote de Red
Detección de Pivote de Red de TerminalFix [Conexión de Red de Windows]
Detectar Ejecución Maliciosa de TerminalFix [Creación de Procesos de Windows]
Detección de Comandos Maliciosos de PowerShell para Recuperación de ZIP y PNG [PowerShell de Windows]
Ejecución de Simulación
-
Narrativa del Ataque y Comandos: El adversario ha obtenido acceso inicial y está intentando establecer un canal C2 persistente para pivotar a través de la estación de trabajo. Para mezclarse con el tráfico web estándar, utilizan el protocolo WebSocket. El atacante ejecuta un script de PowerShell que inicia una conexión a
gitnow.dev. Esto imita el comportamiento de TerminalFix donde la estación de trabajo actúa como un relé. El objetivo es activar laselección_dominioandselección_conexióncriterios de la regla de detección. -
Script de Prueba de Regresión:
# Simulación de conexión de TerminalFix C2 WebSocket # Dominio Objetivo: gitnow.dev $targetDomain = "gitnow.dev" $uri = "wss://$targetDomain/path/to/c2" Write-Host "Simulando conexión TerminalFix C2 a $targetDomain..." $ws = New-Object System.Net.WebSockets.ClientWebSocket $ct = New-Object System.Threading.CancellationTokenSource try { # Intentando la conexión para generar telemetría de Conexión de Red $connectTask = $ws.ConnectAsync($uri, $ct.Token) # Usamos un tiempo de espera porque probablemente el dominio no existe/no responderá if ($connectTask.Wait(10000)) { Write-Host "Conexión exitosa a $targetDomain" $ws.CloseAsync([System.Net.WebSockets.WebSocketCloseStatus]::NormalClosure, "Cerrando", $ct.Token).Wait() } } catch { Write-Host "Intento de conexión. La telemetría debería generarse en los logs de Sysmon/EDR." Write-Host "Detalle de Error: $($_.Exception.Message)" } finally { $ws.Dispose() } -
Comandos de Limpieza:
# No se crearon persistencias o archivos en este script de simulación específico. # Si se utilizaron archivos temporales, deberían eliminarse aquí. Write-Host "Limpieza de simulación completa. No se dejaron artefactos por este script."