WSL en el Ecosistema de Malware
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El artículo explica cómo un JavaScript malicioso puede detectar el Subsistema de Windows para Linux (WSL) en un host y luego enumerar la información y directorios de usuarios de Windows. La muestra—ottercookie-socketScript-module-3.js—se atribuye a la familia de infostealer Cryxos. Utilizando variables de entorno más sondas del sistema de archivos, el código busca marcadores de WSL y luego mapea datos de Windows expuestos a través de puntos de montaje de WSL (por ejemplo, rutas de usuario bajo /mnt/c/Users). El escrito enmarca esto como un uso incorrecto de WSL como capacidad de vivir de la tierra.
Investigación
El análisis señala dos funciones, is_wsl() y get_wu(), que buscan artefactos específicos de WSL y recuperan el nombre de usuario de Windows conectado. Si WSL está presente, el malware amplía su alcance de recopilación al agregar /mnt a sus objetivos de escaneo para poder recorrer unidades del host a través de rutas montadas y enumerar directorios de usuarios. No se publicó el hash SHA256 de la muestra, pero se proporcionó el nombre de archivo para caza y correlación.
Mitigación
Vigile el uso inusual de WSL en terminales de producción, incluida la actividad sospechosa a través de compartir wsl$ y el acceso inesperado a volúmenes de host montados. Deshabilite o restrinja WSL donde no sea necesario y detecte scripts que interroguen variables de entorno de WSL o que lean /proc/version. También monitoree ejecuciones de JavaScript que invocan cmd.exe para hacer echo %USERNAME% durante el perfilado del host.
Respuesta
Si se detecta, aísle el terminal, conserve evidencia forense de montajes WSL y archivos accedidos, y ejecute un escaneo completo de malware. Elimine ottercookie-socketScript-module-3.js y cualquier carga útil relacionada, luego verifique que las configuraciones de WSL estén reforzadas o deshabilitadas.
"graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef data fill:#ccffcc %% Action: Check for WSL environment action_check_wsl["<b>Acción</b> – Verificar entorno WSL<br/><b>Técnica</b> – T1497.002: Evasión de Virtualización/Sandbox: Verificaciones basadas en actividad del usuario<br/><b>Descripción</b>: El adversario inspecciona el entorno en busca de artefactos de virtualización o sandbox basados en la actividad del usuario para evitar análisis."] class action_check_wsl action %% Technique node for T1497.002 (optional, shown within action text) %% Action: Retrieve Windows username action_retrieve_username["<b>Acción</b> – Recuperar nombre de usuario de Windows vía cmd.exe y /mnt/c/Users<br/><b>Técnica</b> – T1056.004: Captura de Entrada: Enganche de API de Credenciales<br/><b>Descripción</b>: El adversario captura la entrada de credenciales enganchando las API relevantes de Windows."] class action_retrieve_username action %% Action: Locate browser data paths action_locate_browser["<b>Acción</b> – Localizar rutas de datos del navegador<br/><b>Técnica</b> – T1555.003: Credenciales de Almacenes de Contraseñas: Credenciales de Navegadores Web<br/><b>Descripción</b>: El adversario busca en directorios típicos de navegadores para acceder a credenciales web almacenadas."] class action_locate_browser action %% Action: Add /mnt mount point to priority directories action_add_mount["<b>Acción</b> – Añadir punto de montaje /mnt a directorios prioritarios<br/><b>Técnica</b> – T1564.004: Ocultar Artefactos: Atributos de Archivo NTFS<br/><b>Descripción</b>: El adversario utiliza atributos NTFS para ocultar puntos de montaje y priorizar ubicaciones maliciosas."] class action_add_mount action %% Action: Collect files from mounted Windows drives action_collect_files["<b>Acción</b> – Recopilar archivos de unidades de Windows montadas<br/><b>Técnicas</b> – T1025: Datos de Medios Extraíbles; T1091: Replicación a través de Medios Extraíbles<br/><b>Descripción</b>: El adversario recopila datos y replica archivos maliciosos a través de medios extraíbles montados."] class action_collect_files action %% Action: Harvest credentials from browser stores action_harvest_credentials["<b>Acción</b> – Cosechar credenciales de almacenes de navegadores<br/><b>Técnica</b> – T1555.003: Credenciales de Almacenes de Contraseñas: Credenciales de Navegadores Web<br/><b>Descripción</b>: Passwords guardados, cookies y tokens de sesión extraídos de navegadores."] class action_harvest_credentials action %% Action: Potential lateral movement via collected data action_lateral_movement["<b>Acción</b> – Potencial movimiento lateral mediante datos recopilados<br/><b>Descripción</b>: Utilizar credenciales y archivos recopilados para moverse lateralmente dentro de la red."] class action_lateral_movement action %% Connections action_check_wsl –>|leads_to| action_retrieve_username action_retrieve_username –>|leads_to| action_locate_browser action_check_wsl –>|enables| action_add_mount action_add_mount –>|enables| action_collect_files action_locate_browser –>|enables| action_harvest_credentials action_collect_files –>|enables| action_lateral_movement action_harvest_credentials –>|supports| action_lateral_movement "
Flujo de Ataque
Ejecución de Simulación
Requisito previo: La comprobación previa de telemetría y línea base debe haber pasado.
Justificación: Esta sección detalla la ejecución precisa de la técnica adversaria (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 de Ataque y Comandos:
El atacante ha conseguido un punto de apoyo inicial en la máquina de la víctima y busca enumerar el nombre de usuario registrado para personalizar las cargas útiles. Para mantenerse oculto, el adversario utiliza un shell de comandos nativo de Windows (Living-off-the-Land) y ejecuta el comando exacto
echo %USERNAME%comando, que expande la variable de entorno al nombre del usuario actual. Esta actividad genera un evento de creación de procesocmd.execon la línea de comandosecho %USERNAME%, coincidiendo con la firma de la regla de detección. -
Script de Prueba de Regresión:
# Simular troyano Cryxos recuperando el nombre de usuario vía cmd.exe $cmd = "cmd.exe" $args = "/c echo %USERNAME%" Write-Host "Ejecutando: $cmd $args" Start-Process -FilePath $cmd -ArgumentList $args -NoNewWindow -Wait -
Comandos de Limpieza:
# No quedan artefactos persistentes; asegúrese de que cualquier instancia persistente de cmd.exe se termine Get-Process -Name cmd -ErrorAction SilentlyContinue | Stop-Process -Force