El giro de MuddyWater a Rust: Dentro del implante RustyWater
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
MuddyWater lanzó una campaña de spear-phishing dirigida a organizaciones diplomáticas, marítimas, financieras y de telecomunicaciones en todo el Medio Oriente. Los atacantes utilizaron documentos de Word armados con macros incrustadas para desplegar RustyWater, un implante basado en Rust. Una vez instalado, el malware persiste a través de una clave de registro Run, se comunica con el comando y control a través de HTTP e inyecta código en explorer.exe para mimetizarse con la actividad normal del usuario. El implante incorpora salvaguardas contra análisis y admite funcionalidades modulares post-compromiso para extender el control del atacante.
Investigación
El equipo TRIAD de CloudSEK analizó el documento malicioso, recuperó la carga codificada en hex y identificó el ejecutable de Rust reddit.exe. La inspección estática mostró el uso de la biblioteca reqwest para C2 basado en HTTP, un mecanismo de Controlador de Excepciones Vectorizadas para anti-depuración y persistencia a través de la ruta de registro CurrentUser Run. Las pruebas dinámicas confirmaron la inyección de procesos en explorer.exe y el comportamiento C2 asincrónico con tiempos de respuesta aleatorios. La investigación recopiló indicadores clave, incluidos hashes, artefactos de registro y los dominios maliciosos utilizados para las comunicaciones.
Mitigación
Vigilad las modificaciones sospechosas a HKCUSoftwareMicrosoftWindowsCurrentVersionRun, especialmente las entradas que apuntan a binarios almacenados en ProgramData. Detectad cadenas de ejecución impulsadas por macros donde Office inicia cmd.exe vía WScript.Shell. Añad detectores de red para patrones de tráfico HTTP consistentes con JSON → Base64 → codificación XOR y para balizamiento con jitter aleatorio. Fortaleced los controles de correo electrónico para bloquear o poner en cuarentena adjuntos de Word habilitados con macros de remitentes desconocidos o no confiables.
Respuesta
Si se detecta actividad de RustyWater, aislade el extremo y adquiere una imagen de memoria para apoyar la forensia enfocada en la inyección. Elimina la persistencia maliciosa de la clave Run y borra cualquier archivo depositado en ProgramData. Bloquea los dominios e IPs C2 identificados en los controles de perímetro. Ampliad la caza para identificar actividades relacionadas con macros e inyecciones de explorer.exe en todo el entorno para asegurar un confinamiento completo.
graph TB %% Definiciones de Clases classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef file fill:#e6e6e6 classDef process fill:#c2f0c2 classDef registry fill:#ffd9b3 classDef data fill:#d9d9ff %% Nodos action_phishing[«<b>Acción</b> – <b>T1566.001 Adjunto de Spearphishing</b><br/>Se envía al usuario un correo con un documento Word malicioso»] class action_phishing action file_doc[«<b>Archivo</b> – <b>Nombre</b>: Cybersecurity.doc<br/><b>Tipo</b>: Documento Word con macro VBA»] class file_doc file action_user_execution[«<b>Acción</b> – <b>T1204.002 Archivo malicioso</b><br/>La víctima abre el documento adjunto, activando la ejecución»] class action_user_execution action technique_vba_macro[«<b>Técnica</b> – <b>T1059.005 Visual Basic</b><br/>La macro VBA se ejecuta y realiza acciones maliciosas»] class technique_vba_macro technique file_ini[«<b>Archivo</b> – <b>Nombre</b>: CertificationKit.ini<br/><b>Propósito</b>: Script ejecutado vía WMI»] class file_ini file technique_native_api[«<b>Técnica</b> – <b>T1106 API Nativa</b><br/>La macro crea objetos COM para interactuar con el sistema»] class technique_native_api technique technique_wmi[«<b>Técnica</b> – <b>T1047 Instrumentación de Administración de Windows</b><br/>WMI se usa para ejecutar el script .ini»] class technique_wmi technique technique_reflective_loading[«<b>Técnica</b> – <b>T1620 Carga de Código Reflectiva</b><br/>El payload codificado en hexadecimal se decodifica en memoria y se escribe en disco»] class technique_reflective_loading technique technique_process_injection[«<b>Técnica</b> – <b>T1055.002 Inyección de Ejecutable Portable</b><br/>El shellcode se inyecta en explorer.exe»] class technique_process_injection technique process_explorer[«<b>Proceso</b> – <b>Nombre</b>: explorer.exe»] class process_explorer process technique_persistence[«<b>Técnica</b> – <b>T1547 Ejecución Automática al Inicio</b><br/>Se crea una clave Run en el Registro para persistencia»] class technique_persistence technique registry_run[«<b>Registro</b> – <b>Clave</b>: HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run»] class registry_run registry technique_encrypted_channel[«<b>Técnica</b> – <b>T1573 Canal Cifrado</b><br/>El tráfico C2 está cifrado»] class technique_encrypted_channel technique technique_symmetric_crypto[«<b>Técnica</b> – <b>T1573.001 Criptografía Simétrica</b><br/>Se usa XOR/Base64 para ocultar datos»] class technique_symmetric_crypto technique technique_credential_hooking[«<b>Técnica</b> – <b>T1056.004 Interceptación de API de Credenciales</b><br/>La interceptación de API captura credenciales del usuario»] class technique_credential_hooking technique credentials[«<b>Datos</b> – <b>Tipo</b>: Credenciales capturadas»] class credentials data %% Conexiones action_phishing –>|entrega| file_doc file_doc –>|abierto por el usuario| action_user_execution action_user_execution –>|activa| technique_vba_macro technique_vba_macro –>|crea| file_ini technique_vba_macro –>|usa| technique_native_api technique_native_api –>|llama| technique_wmi technique_wmi –>|ejecuta| file_ini file_ini –>|carga| technique_reflective_loading technique_reflective_loading –>|conduce a| technique_process_injection technique_process_injection –>|inyecta en| process_explorer process_explorer –>|habilita| technique_persistence technique_persistence –>|escribe| registry_run registry_run –>|soporta| technique_encrypted_channel technique_encrypted_channel –>|usa| technique_symmetric_crypto technique_symmetric_crypto –>|protege| technique_credential_hooking technique_credential_hooking –>|captura| credentials
Flujo de ataque
Detecciones
Extensión Inusual de Binario Ejecutable (vía creación_proceso)
Ver
Posibles Puntos de Persistencia [ASEPs – Software/NTUSER Hive] (vía evento_registro)
Ver
Proceso Sospechoso sin Argumentos (vía cmdline)
Ver
Proceso Hijo MSOffice Sospechoso (vía cmdline)
Ver
IOCs (HashSha256) para detectar: Reborn in Rust: Muddy Water Evoluciona Herramientas con Implante RustyWater
Ver
Detección de Ejecución del Implante RustyWater de Muddy Water [Creación de Proceso de Windows]
Ver
Detección de Artefactos de Ataque Spear-Phishing de Muddy Water APT [Evento de Archivo de Windows]
Ver
Ejecución de Simulación
Prerequisito: El control previo de Telemetría y Línea Base 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 reflejan directamente los TTPs identificados y tienen como objetivo generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa de Ataque y Comandos:
Un operador APT recibe un correo de spear-phishing con un adjunto de Office habilitado con macro maliciosa. Al abrirlo, la macro deposita dos archivos de carga—Cybersecurity.docandCertificationKit.ini—en el directorioProgramDatapara ocultarlos en una ubicación confiable por muchas aplicaciones. La macro utiliza PowerShell para escribir los archivos, lo que desencadena eventos de creación de archivos Sysmon que la regla de detección monitorea. -
Guion de Prueba de Regresión:
# ------------------------------------------------- # Simulación de colocación de archivos de MuddyWater APT (Windows) # ------------------------------------------------- $progData = $Env:ProgramData # Definir contenido de carga (datos ficticios para pruebas) $docContent = "Este es un documento de ciberseguridad simulado para pruebas de detección." $iniContent = "[Settings]`nKey=Value`n" # Crear Cybersecurity.doc $docPath = Join-Path -Path $progData -ChildPath "Cybersecurity.doc" $docContent | Out-File -FilePath $docPath -Encoding UTF8 # Crear CertificationKit.ini $iniPath = Join-Path -Path $progData -ChildPath "CertificationKit.ini" $iniContent | Out-File -FilePath $iniPath -Encoding UTF8 Write-Host "Archivos de simulación de MuddyWater creados:" Write-Host "`t$docPath" Write-Host "`t$iniPath" # ------------------------------------------------- -
Comandos de Limpieza:
# Eliminar artefactos de simulación Remove-Item -Path "$Env:ProgramDataCybersecurity.doc" -ErrorAction SilentlyContinue Remove-Item -Path "$Env:ProgramDataCertificationKit.ini" -ErrorAction SilentlyContinue Write-Host "Archivos de simulación eliminados."