Rizados CAMaradas: Activación Hyper-V Anormal
Detection stack
- AIDR
- Alert
- ETL
- Query
Activación Anormal de Hyper-V
La investigación revela un nuevo actor de amenazas, Curly COMrades, que utiliza Windows Hyper-V para iniciar una máquina virtual oculta de Alpine Linux en hosts comprometidos de Windows 10. La máquina virtual ejecuta malware personalizado (CurlyShell y CurlCat) para proporcionar capacidades persistentes de shell inverso y proxy, mientras evade la detección típica de EDR. Las técnicas adicionales incluyen inyección de tickets Kerberos basada en PowerShell, creación de cuentas locales entregadas por directivas de grupo, y el uso de herramientas proxy de código abierto.
¿Qué usa Curly COMrades para ocultar malware en máquinas virtuales Linux?
Curly COMrades oculta el malware creando pequeños invitados Alpine Linux dentro de Microsoft Hyper-V en hosts de Windows comprometidos, ejecutando implantes personalizados (informados como CurlyShell y CurlCat) dentro de esas máquinas virtuales ocultas, al tiempo que utiliza la red de Hyper-V (Default Switch) para que el tráfico saliente parezca provenir del host.
Despliegan ayudantes de PowerShell y curl.exe en el host, asignan nombres engañosos a las máquinas virtuales y restringen las interfaces de gestión de Hyper-V para evitar la detección. Esto se documentó en un análisis de Bitdefender con indicadores técnicos y orientación para la remediación.
Mitigación
Desplegar una inspección de red basada en el host (por ejemplo, Bitdefender NAD) para detectar tráfico anómalo saliente desde la pila de red del host. Fortalecer Windows deshabilitando o controlando estrictamente la habilitación de la función Hyper-V y restringiendo el uso de DISM y cmdlets de PowerShell que importan e inician máquinas virtuales. Aplicar Endurecimiento Proactivo y Reducción de la Superficie de Ataque (PHASR) para bloquear el uso no autorizado de binarios nativos (curl, rar, Import-VM, Start-VM). Monitorear la creación de nuevas máquinas virtuales Hyper-V, archivos VHDX/VMCX inusuales en ProgramData y modificaciones de crontab en máquinas virtuales Linux. Detectar acceso a LSASS e inyección de tickets Kerberos usando alertas de acceso a credenciales de EDR/XDR. Aplicar el principio de privilegio mínimo para los scripts de directiva de grupo y auditar la creación de cuentas locales. Utilizar detección por firmas y comportamientos para implantes personalizados CurlyShell/CurlCat y herramientas proxy conocidas.
Respuesta
Aislar los hosts afectados, deshabilitar Hyper-V y eliminar los archivos de la máquina virtual oculta y las imágenes VHDX/VMCX asociadas. Realizar un escaneo completo del sistema de archivos y del registro en busca de los scripts de PowerShell (kb_upd.ps1, screensaver.ps1, locals.ps1) y eliminarlos. Restablecer o eliminar cualquier cuenta local no autorizada y rotar las contraseñas. Bloquear las conexiones salientes a los IPs C2 identificados (por ejemplo, 45.43.91.10, 88.198.91.116) y actualizar las reglas del firewall. Desplegar reglas de detección para las firmas DLL/ELF específicas de CurlyShell y CurlCat, y para las herramientas proxy observadas. Realizar búsqueda de amenazas utilizando los IOCs del repositorio público de GitHub. Colaborar con los CERTs para compartir inteligencia y monitorear para detectar actividad adicional. Aplicar parches y actualizar para mitigar cualquier CVE explotado (si se identificaron).
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff %% Nodes – Actions action_initial_setup[«<b>Acción</b> – Configuración inicial<br/><b>Técnicas</b>: T1564.006 Ocultar artefactos: Ejecutar instancia virtual, T1497 Evasión de virtualización/sandbox, T1059.012 CLI de hipervisor<br/>Habilita Hyper‑V mediante DISM y deshabilita clientes de administración»] class action_initial_setup action action_vm_deployment[«<b>Acción</b> – Despliegue de VM<br/><b>Técnicas</b>: T1059.012 CLI de hipervisor<br/>Descarga VHDX de Alpine Linux con curl, extrae con WinRAR, importa e inicia la VM mediante PowerShell»] class action_vm_deployment action action_vm_persistence[«<b>Acción</b> – Persistencia en la VM<br/><b>Técnicas</b>: T1037.004 Scripts RC, T1543 Crear/Modificar proceso del sistema<br/>Un trabajo cron ejecuta /bin/alpine_init cada 4 horas para iniciar CurlyShell»] class action_vm_persistence action action_c2_communication[«<b>Acción</b> – Comunicación C2<br/><b>Técnicas</b>: T1071.001 Protocolos web, T1102.002 Servicio web bidireccional<br/>CurlyShell contacta un endpoint HTTPS usando libcurl (GET/POST)»] class action_c2_communication action action_proxy_tunneling[«<b>Acción</b> – Proxy y túneles<br/><b>Técnicas</b>: T1090.001 Proxy interno, T1090.003 Proxy de múltiples saltos<br/>Proxy inverso SSH configurado vía ProxyCommand, reenvía tráfico a través de un proxy SOCKS local»] class action_proxy_tunneling action action_credential_abuse[«<b>Acción</b> – Abuso de credenciales<br/><b>Técnicas</b>: T1550.003 Pass the Ticket, T1059.001 PowerShell<br/>El script de PowerShell kb_upd.ps1 inyecta tickets Kerberos falsificados en LSASS»] class action_credential_abuse action action_lateral_movement[«<b>Acción</b> – Movimiento lateral<br/><b>Técnicas</b>: T1021.002 SMB/Recursos compartidos administrativos de Windows, T1135 Descubrimiento de recursos compartidos de red<br/>Usa tickets inyectados con net use y comandos SMB para enumerar recursos y ejecutar comandos remotos»] class action_lateral_movement action action_persistence_accounts[«<b>Acción</b> – Persistencia mediante cuentas locales<br/><b>Técnicas</b>: T1136.001 Crear cuenta local, T1037.003 Script de inicio de sesión en red<br/>Scripts de directiva de grupo crean o restablecen cuentas locales (p. ej., camera) para acceso continuo»] class action_persistence_accounts action action_defense_evasion[«<b>Acción</b> – Evasión de defensas<br/><b>Técnicas</b>: T1059.003 Intérprete de comandos de Windows, T1202 Ejecución indirecta de comandos, T1001.003 Suplantación de protocolo, T1599 Puenteo de límites de red<br/>Ejecuta todos los binarios maliciosos dentro de una VM oculta y usa codificación Base64 personalizada para reducir la huella forense»] class action_defense_evasion action %% Nodes – Tools / Processes / Malware tool_dism[«<b>Herramienta</b> – DISM<br/><b>Descripción</b>: Despliega características de Windows como Hyper‑V»] class tool_dism tool tool_powershell[«<b>Herramienta</b> – PowerShell<br/><b>Descripción</b>: Entorno de scripting usado para importar la VM, inyectar tickets y otras automatizaciones»] class tool_powershell tool process_curl[«<b>Proceso</b> – curl<br/><b>Descripción</b>: Descarga el VHDX de Alpine y realiza solicitudes HTTPS de C2»] class process_curl process process_winrar[«<b>Proceso</b> – WinRAR<br/><b>Descripción</b>: Extrae el archivo VHDX descargado»] class process_winrar process malware_curlyshell[«<b>Malware</b> – CurlyShell<br/><b>Descripción</b>: Puerta trasera personalizada que se ejecuta dentro de una VM Alpine oculta»] class malware_curlyshell malware malware_ssh_reverse[«<b>Malware</b> – Proxy inverso SSH<br/><b>Descripción</b>: Configurado vía ~/.ssh/config para tunelizar tráfico a través de SOCKS»] class malware_ssh_reverse malware script_kb_upd[«<b>Malware</b> – kb_upd.ps1<br/><b>Descripción</b>: Script de PowerShell que falsifica tickets Kerberos y los inyecta en LSASS»] class script_kb_upd malware %% Connections – Flow action_initial_setup u002du002d>|usa| tool_dism action_initial_setup u002du002d>|usa| tool_powershell action_vm_deployment u002du002d>|descarga con| process_curl action_vm_deployment u002du002d>|extrae con| process_winrar action_vm_deployment u002du002d>|importa/inicia vía| tool_powershell action_vm_persistence u002du002d>|crea trabajo cron en| malware_curlyshell action_c2_communication u002du002d>|se comunica vía| process_curl action_c2_communication u002du002d>|puerta trasera| malware_curlyshell action_proxy_tunneling u002du002d>|establece| malware_ssh_reverse action_credential_abuse u002du002d>|ejecuta| script_kb_upd action_credential_abuse u002du002d>|usa| tool_powershell action_lateral_movement u002du002d>|aprovecha tickets de| script_kb_upd action_lateral_movement u002du002d>|usa comandos SMB| tool_powershell action_persistence_accounts u002du002d>|crea cuentas vía| tool_powershell action_defense_evasion u002du002d>|ejecuta binarios dentro de| action_vm_deployment action_defense_evasion u002du002d>|ofusca datos con| process_curl %% End of diagram
Cadena de Ataque de Máquinas Virtuales Ocultas en Hyper-V
Reglas de Detección
Detección de Importación e Inicio de Máquinas Virtuales en Hyper-V Basado en PowerShell [Windows PowerShell]
Ver
Intento Posible de Comunicación de Dominio de Búsqueda de IP (a través de DNS)
Ver
IOCs (ip) para detectar: Curly COMrades: Evasión y Persistencia a través de Hyper-V Virtual Oculto…
Ver
IOCs (hash) para detectar: Curly COMrades: Evasión y Persistencia a través de Hyper-V Virtual Oculto…
Ver
Uso Sospechoso de CURL (vía línea de comandos)
Ver
Instrucciones de Simulación
Ejecución de la Simulación
Prerrequisito: La Comprobación Previa de Telemetría y Línea Base debe haber sido aprobada.
Fundamento: 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 TTP identificados y tienen como objetivo generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a un diagnóstico erróneo.
-
Narrativa del Ataque y Comandos:
El atacante ya ha comprometido una cuenta de usuario con bajos privilegios y escaló a una cuenta de servicio que posee derechos de Administrador de Hyper-V. Para mantener la persistencia encubierta, crean una imagen de máquina virtual oculta almacenada en el directorio de caché de AppV (c:programdatamicrosoftAppVappVirtual Machines1DBCC80B-5803-4AF1-8772-712C688F408A.vmcx). Usando PowerShell, importan esta máquina virtual de manera silenciosa y la inician con el nombre WSL, haciéndose pasar por una instancia legítima del Subsistema de Windows para Linux. Esta línea de comando exacta coincide con las cadenas codificadas duramente de la regla Sigma, asegurando que la alerta se dispare. -
Script de Prueba de Regresión:
# ------------------------------------------------- # Simulación de la persistencia de Curly COMrades en Hyper-V # ------------------------------------------------- # Variables (reflejando las mismas cadenas exactas en la regla) $vmPath = 'c:programdatamicrosoftAppVappVirtual Machines1DBCC80B-5803-4AF1-8772-712C688F408A.vmcx' $vmName = 'WSL'