APT-Q-27 Dragon Breath: Análise do RONINGLOADER e Gh0st RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Dragon Breath é um APT de cibercrime chinês que visa usuários de língua chinesa na região Ásia-Pacífico. O grupo emprega técnicas avançadas, incluindo instaladores trojanizados, carregamento lateral de DLL e drivers de kernel assinados para implantar a cadeia de infecção RONINGLOADER e variantes personalizadas do Gh0st RAT. Os atores também demonstraram capacidade de comprometer provedores de certificados e obter material de assinatura de código para seu malware.
Investigação
O relatório examina a evolução do Dragon Breath de 2020 a 2026, documentando sua transição de ataques de watering-hole para carregamento lateral avançado de DLL e abuso do Protected Process Light (PPL). Destaca uma intrusão em 2026 envolvendo a DigiCert, onde o grupo supostamente obteve material de assinatura de código. A análise também cobre várias técnicas de injeção, incluindo abuso de objeto de thread-pool e terminação de processos em modo kernel.
Mitigação
As organizações devem validar os controles de segurança de endpoints contra técnicas de ataque simuladas do Dragon Breath e fortalecer proteções em torno da execução de aplicativos. Políticas rigorosas de controle de aplicativos devem ser aplicadas, enquanto os defensores monitoram a criação não autorizada de serviços e o carregamento lateral suspeito de DLLs. Detectar abuso do Protected Process Light (PPL) e políticas WDAC não autorizadas ou não assinadas também é crítico.
Resposta
Se houver atividade do Dragon Breath detectada, hosts afetados devem ser isolados imediatamente e investigados para contas locais não autorizadas e persistência através de Serviços do Windows. Os respondedores devem examinar de perto a atividade de injeção de processos envolvendo processos de sistema confiáveis, como TrustedInstaller.exe or taskhostw.exe. Certificados de assinatura de código devem ser validados, e modificações no Windows Defender ou produtos de segurança regionais devem ser revisadas.
Fluxo de Ataque
Detecções
Comportamento Possível de Execução Atrasada (via cmdline)
Criação Suspeita de Hard Link para Técnica de Redirecionamento de Pasta (via cmdline)
Possível Tentativa de Abuso do ClipUp para Manipular Soluções de Segurança (via cmdline)
Persistência Dragon Breath: Criação de Conta Backdoor Local [Log de Eventos de Segurança do Microsoft Windows]
Detecção de Comunicação C2 via WebSocket do Golden Gh0st RAT [Conexão de Rede do Windows]
Persistência Dragon Breath via Modificação do Registro do Winlogon [Evento de Registro do Windows]
Execução de Proxy Binário do Sistema Dragon Breath via regsvr32.exe e appR.exe [Criação de Processo do Windows]
Execução de Simulação
Pré-requisito: O Check Pre-flight de Telemetria e Base deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para disparar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar exatamente a telemetria esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão ao diagnóstico incorreto.
-
Narrativa & Comandos do Ataque: Um adversário obteve acesso inicial e está tentando estabelecer um canal de Comando e Controle (C2) persistente. Para evitar a detecção baseada em assinaturas tradicionais e firewalls que apenas procuram por requisições HTTP/S padrão, o atacante implementa um agente leve que inicia uma requisição de upgrade para WebSocket. Ao transicionar de uma requisição padrão HTTP GET para uma conexão WebSocket, o atacante estabelece um canal de comunicação full-duplex, permitindo que eles emitam comandos e recebam dados (como digitação ou exfiltração de arquivos) em tempo real sob a aparência de tráfego web persistente.
-
Script de Teste de Regressão:
# Script de simulação para imitar um handshake/conexão WebSocket # Isso usa uma implementação de socket PowerShell para iniciar uma conexão estilo WebSocket. # Observação: Isso requer um ouvinte ativo ou um serviço de eco WebSocket público para sucesso. $wsUri = "wss://echo.websocket.org" # Usando um serviço de eco público para simulação Write-Host "[*] Tentando estabelecer conexão WebSocket com $wsUri..." try { $ws = New-Object System.Net.WebSockets.ClientWebSocket $ct = New-Object System.Threading.CancellationTokenSource $connectTask = $ws.ConnectAsync($wsUri, $ct.Token) # Aguarde conexão para simular o evento 'Conexão de Rede' if ($connectTask.Wait(10000)) { Write-Host "[+] Conexão WebSocket estabelecida com sucesso." Write-Host "[!] Verifique seu SIEM para alertas 'Protocolo: WebSocket'." # Envie um pequeno pulso para manter o socket aberto $buffer = [System.Text.Encoding]::UTF8.GetBytes("Ping") $sendTask = $ws.SendAsync((New-Object ArraySegment[byte]($buffer)), [System.Net.WebSockets.WebSocketMessageType]::Text, $true, $ct.Token) $sendTask.Wait(5000) # Mantenha a conexão brevemente para garantir captura de telemetria Start-Sleep -Seconds 10 $ws.CloseAsync([System.Net.WebSockets.WebSocketCloseStatus]::NormalClosure, "Fechando", $ct.Token).Wait() } else { Write-Host "[-] Tempo de conexão excedido. Certifique-se de que o alvo possa alcançar o URI WebSocket." } } catch { Write-Error "[-] Erro durante a simulação: $($_.Exception.Message)" } finally { if ($ws) { $ws.Dispose() } } -
Comandos de Limpeza:
# Nenhum artefato persistente é criado pelo script PowerShell. # Certifique-se de que quaisquer conexões abertas manualmente sejam fechadas. Write-Host "[*] Limpando o ambiente de simulação..." Stop-Process -Name "powershell" -ErrorAction SilentlyContinue