Dentro do Banana RAT do SHADOW-WATER-063: Do Servidor de Compilação para Fraude Bancária
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Banana RAT é um trojan bancário usado pelo ator de ameaça SHADOW-WATER-063, motivado financeiramente, para roubar credenciais e realizar transações fraudulentas visando bancos brasileiros. O malware é entregue por meio de um arquivo batch malicioso e se baseia em ofuscação em camadas de PowerShell, execução em memória e criptografia AES-256 para evitar detecção. Mantém persistência por meio de uma tarefa agendada oculta e se comunica com seu servidor de comando e controle por HTTP e TLS. A campanha também apresenta uma capacidade de interceptação de código QR do Pix voltada para o ecossistema de pagamento instantâneo do Brasil.
Investigação
Analistas do Trend Micro MDR obtiveram tanto ferramentas do lado do servidor quanto payloads do lado do cliente, permitindo que reconstruíssem toda a cadeia de ataque desde um crypter polimórfico baseado em FastAPI até o stager de PowerShell e a etapa final de compilação em memória em C#. A análise deles revelou a infraestrutura do atacante, o fluxo de trabalho de ofuscação e um conjunto de capacidades que incluíam transmissão de tela, manipulação de entrada e adulteração de código QR. A operação foi vinculada ao ecossistema mais amplo de trojans bancários Tetrade, embora os pesquisadores tenham observado várias diferenças arquitetônicas.
Mitigação
Defensores devem bloquear a requisição HTTP GET inicial para o ponto de entrega de malware na borda da rede, monitorar o comportamento específico da tarefa agendada oculta e impor controles estritos sobre PowerShell e csc.exe execução. Defesas de endpoint também devem detectar atividades de PowerShell sem arquivos, carregamento de DLLs em memória e criação de arquivos em caminhos enganosos como ProgramDataMicrosoftDiagnosisETW. Treinamento de conscientização dos usuários também deve abordar arquivos batch maliciosos e links de phishing distribuídos por canais como o WhatsApp.
Resposta
Se a atividade do Banana RAT for detectada, isolar o endpoint afetado imediatamente, terminar o processo malicioso do PowerShell, remover a tarefa agendada oculta e deletar quaisquer arquivos descartados de diretórios públicos e mascarados. Investigadores devem coletar a linha de comando completa do PowerShell, preservar quaisquer artefatos de compilação em C# e revisar o tráfego de rede conectado aos domínios de comando e controle. As credenciais expostas devem ser redefinidas, e as equipes financeiras devem ser alertadas para monitorar sinais de atividade bancária fraudulenta.
"graph TB %% Class definitions classDef technique fill:#99ccff %% Node definitions step_A["<b>Técnica</b> – <b>T1204.001 Execução do Usuário</b>: Link malicioso entregue via WhatsApp ou email para baixar arquivo batch."] class step_A technique step_B["<b>Técnica</b> – <b>T1027.014 Arquivos Ofuscados</b>: Arquivo batch executa código PowerShell ofuscado."] class step_B technique step_C["<b>Técnica</b> – <b>T1027.016 Inserção de Código Inútil</b>: Nove camadas de ofuscação personalizada, renomeação de variáveis, XOR, AES."] class step_C technique step_D["<b>Técnica</b> – <b>T1036.008 Mascaramento</b>: Lança msedge.txt em Documentos Públicos imitando caminho Microsoft ETW."] class step_D technique step_E["<b>Técnica</b> – <b>T1564.005 Ocultar Artefatos</b>: Escreve arquivo malicioso em ProgramData Microsoft Diagnosis ETW para misturar com arquivos legítimos."] class step_E technique step_F["<b>Técnica</b> – <b>T1620 Carregamento de Código Reflexivo</b>: Usa csc.exe para compilar DLLs em C# em memória."] class step_F technique step_G["<b>Técnica</b> – <b>T1134.001 Impersonação de Token</b>: Duplica token SYSTEM e inicia PowerShell em sessão interativa."] class step_G technique step_H["<b>Técnica</b> – <b>T1134.002 Criar Processo com Token</b>: Inicia processo com token duplicado."] class step_H technique step_I["<b>Técnica</b> – <b>T1571 Porta Não-Convencional</b>: Comunicação C2 pela porta HTTPS 443 usando protocolo AES-256-CBC customizado."] class step_I technique step_J["<b>Técnica</b> – <b>T1048.002 Exfiltração por Protocolo Alternativo</b>: Exfiltração de dados criptografados usando protocolo não-C2 criptografado assimetricamente."] class step_J technique step_K["<b>Técnica</b> – <b>T1140 Desofuscar Decodificar</b>: PowerShell descriptografa carga envolta em AES na memória."] class step_K technique step_L["<b>Técnica</b> – <b>T1659 Injeção de Conteúdo</b>: PowerShell usa Net.WebClient ou Start-BitsTransfer para buscar carga do servidor web do atacante."] class step_L technique step_M["<b>Técnica</b> – <b>T1566 Phishing</b>: Link malicioso entregue via WhatsApp/email para baixar arquivo batch."] class step_M technique %% Connections step_A –>|leva a| step_B step_B –>|leva a| step_C step_C –>|leva a| step_D step_D –>|leva a| step_E step_E –>|leva a| step_F step_F –>|leva a| step_G step_G –>|leva a| step_H step_H –>|leva a| step_I step_I –>|leva a| step_J step_J –>|leva a| step_K step_K –>|leva a| step_L step_L –>|leva a| step_M "
Fluxo de Ataque
Detecções
Tarefa Agendada Suspeita (via auditoria)
Ver
Chamar Métodos de .NET Suspeitos a partir do Powershell (via powershell)
Ver
A Possibilidade de Execução Através de Linhas de Comando PowerShell Ocultas (via cmdline)
Ver
Strings PowerShell Suspeitas (via powershell)
Ver
Chamar Funções de API do Windows Suspeitas a partir do Powershell (via powershell)
Ver
Arquivos Suspeitos no Perfil Público do Usuário (via file_event)
Ver
Download de Arquivo Suspeito Diretamente via IP (via proxy)
Ver
IOCs (HashSha256) para detectar: Dentro do Banana RAT de SHADOW-WATER-063: Do Servidor de Compilação à Fraude Bancária
Ver
IOCs (SourceIP) para detectar: Dentro do Banana RAT de SHADOW-WATER-063: Do Servidor de Compilação à Fraude Bancária
Ver
IOCs (DestinationIP) para detectar: Dentro do Banana RAT de SHADOW-WATER-063: Do Servidor de Compilação à Fraude Bancária
Ver
Detecção da Comunicação C2 do SHADOW-WATER-063 [Conexão de Rede do Windows]
Ver
Detecção do Acesso Inicial e Execução do Banana RAT [Powershell do Windows]
Ver
Execução de Simulação
Pré-requisito: O Check de Pré-vôo de Telemetria e Padrão deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (comunicação C2) projetada para acionar a regra de detecção. Os comandos e a narrativa refletem diretamente as TTPs identificadas e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa & Comandos do Ataque:
O ator de ameaça implantou o Banana RAT no endpoint da vítima. Para manter a persistência e receber comandos, o RAT inicia comunicação de saída para sua infraestrutura C2 codificada:- Beacon HTTP (IP 24.199.90.58:80): Abre um socket TCP bruto e envia uma requisição HTTP GET mínima.
- Beacon HTTPS (IP 162.141.111.227:443): Usa
Invoke-WebRequestcom TLS para o servidor C2. - Beacon Baseado em Domínio: Executa uma consulta DNS para
c.windowsk-cdn.com, que o C2 monitora quanto ao volume de consultas.
Todas as três ações são executadas sequencialmente para maximizar a chance de atingir pelo menos uma seleção na regra do Sigma.
-
Script de Teste de Regressão:
# ------------------------------------------------- # Simulação de Comunicação C2 do Banana RAT (TC-20260522-A1B2C) # ------------------------------------------------- # 1. Beacon HTTP para 24.199.90.58:80 try { $httpClient = New-Object System.Net.Sockets.TcpClient("24.199.90.58",80) $stream = $httpClient.GetStream() $writer = New-Object System.IO.StreamWriter($stream) $writer.WriteLine("GET / HTTP/1.1") $writer.WriteLine("Host: 24.199.90.58") $writer.WriteLine("Connection: Close") $writer.WriteLine() $writer.Flush() $reader = New-Object System.IO.StreamReader($stream) $response = $reader.ReadToEnd() $writer.Dispose() $reader.Dispose() $httpClient.Close() } catch { Write-Error "Falha no beacon HTTP: $_" } # 2. Beacon HTTPS para 162.141.111.227:443 try { Invoke-WebRequest -Uri "https://162.141.111.227" -UseBasicParsing -TimeoutSec 10 } catch { Write-Error "Falha no beacon HTTPS: $_" } # 3. Consulta DNS para domínio malicioso try { Resolve-DnsName -Name "c.windowsk-cdn.com" -Type A -ErrorAction Stop } catch { Write-Error "Falha na consulta DNS: $_" } # Fim da simulação -
Comandos de Limpeza:
# ------------------------------------------------- # Limpeza – remover quaisquer sockets remanescentes ou arquivos temporários # ------------------------------------------------- # Não são criados artefatos persistentes pela simulação. # Assegure-se de que não restem conexões de rede residuais: Get-NetTCPConnection -RemotePort 80,443 ` | Where-Object {$_.RemoteAddress -in @("24.199.90.58","162.141.111.227")} ` | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } # Limpar cache DNS para evitar afetar testes subsequentes Clear-DnsClientCache