Malware Castle RAT Client: Táticas, Técnicas e Comércio
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
CastleRAT é um trojan de acesso remoto primeiro observado em março de 2025, disponível em variantes tanto em Python quanto em C compilado. Ele coleta metadados do sistema, pressionamentos de tecla, conteúdos da área de transferência, capturas de tela e detalhes de dispositivos de mídia, então exfiltra essas informações para um servidor C2 usando criptografia RC4. O malware pode buscar cargas adicionais, lançá-las via rundll32 e estabelecer persistência através de tarefas agendadas e métodos de desvio de UAC.
Investigação
A Equipe de Pesquisa de Ameaças do Splunk fez engenharia reversa das implementações em Python e C, mapeando seus comportamentos para técnicas MITRE ATT&CK, incluindo descoberta de sistema, registro de teclas, captura de tela, enumeração de dispositivos de áudio/vídeo, resolvedores drop-dead e duplicação de manipuladores para escalonamento de privilégios. A pesquisa enfatizou a dependência do CastleRAT em binários legítimos do Windows (rundll32, ComputerDefaults.exe) e seu uso de www.ip-api.com para obter o endereço IP público.
Mitigação
Os defensores devem detectar conexões de saída suspeitas para domínios desconhecidos, padrões de tráfego criptografados com RC4 e execuções de rundll32 usando carregamentos de DLL baseados em ordinal. Monitore tarefas agendadas criadas para iniciar o CastleRAT, tentativas de desvio de UAC aproveitando o ComputerDefaults.exe e processos iniciados com flags de navegador de áudio desativado. Bloqueie o acesso a locais conhecidos de resolvedores drop-dead, incluindo páginas abusivas da Comunidade Steam.
Resposta
Quando a atividade do CastleRAT for identificada, isole o host afetado, encerre os processos maliciosos e remova qualquer tarefa agendada associada ou artefatos de persistência. Colete evidências forenses, como hierarquias de processos, argumentos de linha de comando e alterações no registro. Realize uma busca abrangente por plugins DLL adicionais e canais C2, depois implemente medidas de remediação e fortalecimento em todo o ambiente.
mermaid graph TB %% Class definitions classDef technique fill:#e6f7ff %% Node definitions t1016_001[“<b>Técnica</b> – T1016.001 Descoberta de Configuração de Rede do Sistema<br />Coleta detalhes do sistema como nome do computador, nome de usuário, GUID da máquina, versão do SO e endereço IP público para enviar ao C2”] class t1016_001 technique t1115[“<b>Técnica</b> – T1115 Dados da Área de Transferência<br />Coleta dados da área de transferência do Windows e os exfiltra, muitas vezes usando ações de colagem simuladas”] class t1115 technique t1036[“<b>Técnica</b> – T1036 Mascaramento<br />Nomeia arquivos soltos e variáveis de ambiente para parecerem componentes legítimos de Python ou Java”] class t1036 technique t1056_001[“<b>Técnica</b> – T1056.001 Captura de Entrada: Registro de Teclas<br />Interceta pressionamentos de teclas, grava-os em um arquivo local, criptografa o arquivo com RC4 e o envia ao atacante”] class t1056_001 technique t1559[“<b>Técnica</b> – T1559 Comunicação Inter-Processos<br />Inicia um processo de shell oculto com seus fluxos padrão redirecionados através de pipes anônimos, permitindo execução remota de comandos sem um console visível”] class t1559 technique t1123[“<b>Técnica</b> – T1123 Captura de Áudio<br />Enumera dispositivos de captura de mídia via Media Foundation”] class t1123 technique t1125[“<b>Técnica</b> – T1125 Captura de Vídeo<br />Enumera dispositivos de captura de mídia via Media Foundation”] class t1125 technique t1218_011[“<b>Técnica</b> – T1218.011 Execução Proxy de Binário do Sistema: Rundll32<br />Carrega função de exportação de DLL maliciosa por ordinal”] class t1218_011 technique t1055_001[“<b>Técnica</b> – T1055.001 Injeção de Processo: Injeção de Biblioteca de Vinculação Dinâmica<br />Usa rundll32.exe para carregar uma DLL maliciosa”] class t1055_001 technique t1547_010[“<b>Técnica</b> – T1547.010 Execução Autostart de Boot ou Logon: Monitores de Porta<br />Baixa plugins DLL adicionais do C2, descriptografa-os com RC4 e os carrega”] class t1547_010 technique t1053[“<b>Técnica</b> – T1053 Tarefa/Trabalho Agendado<br />Cria uma tarefa agendada para lançar malware na inicialização”] class t1053 technique t1113[“<b>Técnica</b> – T1113 Captura de Tela<br />Periodicamente captura capturas de tela e as exfiltra”] class t1113 technique t1102_001[“<b>Técnica</b> – T1102.001 Serviço Web: Resolver Drop-dead<br />Recupera configuração ou cargas de sites externos benignos”] class t1102_001 technique t1127[“<b>Técnica</b> – T1127 Execução de Proxy de Utilitários de Desenvolvedor Confiável<br />Usa ComputerDefaults.exe e duplicação de manipuladores para desviar do UAC e executar código com privilégios elevados”] class t1127 technique t1027[“<b>Técnica</b> – T1027 Arquivos ou Informações Ofuscados<br />Usa criptografia RC4 para comandos e cargas de dados”] class t1027 technique t1048_001[“<b>Técnica</b> – T1048.001 Exfiltração por Protocolo Alternativo: Protocolo não C2 Criptografado Simétrico<br />Envia dados criptografados para C2”] class t1048_001 technique t1132_001[“<b>Técnica</b> – T1132.001 Codificação de Dados: Codificação Padrão<br />Codifica dados antes da transmissão”] class t1132_001 technique %% Connections showing attack flow t1016_001 u002du002d>|leads_to| t1115 t1115 u002du002d>|leads_to| t1036 t1036 u002du002d>|leads_to| t1056_001 t1056_001 u002du002d>|leads_to| t1559 t1559 u002du002d>|leads_to| t1123 t1123 u002du002d>|leads_to| t1125 t1125 u002du002d>|leads_to| t1218_011 t1218_011 u002du002d>|leads_to| t1055_001 t1055_001 u002du002d>|leads_to| t1547_010 t1547_010 u002du002d>|leads_to| t1053 t1053 u002du002d>|leads_to| t1113 t1113 u002du002d>|leads_to| t1102_001 t1102_001 u002du002d>|leads_to| t1127 t1127 u002du002d>|leads_to| t1027 t1027 u002du002d>|leads_to| t1048_001 t1048_001 u002du002d>|leads_to| t1132_001
Fluxo de Ataque
Detecções
Possível Execução por Atividade de Tarefa Agendada com PowerShell (via powershell)
Ver
Requisição de DNS da Comunidade Steam Realizada por Processo Suspeito (via dns_query)
Ver
IOCs (HashSha256) para detectar: Por Trás das Paredes: Técnicas e Táticas no Malware Castle RAT Client
Ver
Possível Execução por Atividade de Tarefa Agendada com PowerShell (via powershell)
Ver
Requisição de DNS da Comunidade Steam Realizada por Processo Suspeito (via dns_query)
Ver
Execução de Simulação
Pré-requisito: A verificação prévia de Telemetria e Base passou.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (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 um diagnóstico incorreto.
-
Narrativa de Ataque & Comandos:
-
Estágio 1 – Implantar binário CastleRAT: O atacante copia
CastleRAT.exepara o diretório%APPDATA%da vítima para se misturar com os dados do usuário. -
Estágio 2 – Executar captura de teclas: Usando um pequeno carregador C# na memória, o atacante invoca
SetWindowsHookExpara instalar um hook de teclado de baixo nível, fazendo com que o Sysmon registre a API no CallTrace do evento de criação do processo. -
Estágio 3 – Escalonamento de privilégios: O mesmo carregador então chama
DuplicateHandlepara duplicar um manipulador de um processo de sistema privilegiado (por exemplo,lsass.exe), permitindo que o malware seja executado com direitos de SISTEMA. Ambas as chamadas de API aparecem no mesmo CallTrace do Sysmon, satisfazendo os critérios da regra de detecção.
-
Estágio 1 – Implantar binário CastleRAT: O atacante copia
-
Script de Teste de Regressão:
# ------------------------------------------------- # Simulação do CastleRAT – aciona SetWindowsHookEx e DuplicateHandle # ------------------------------------------------- $castlePath = "$env:APPDATACastleRAT.exe" # 1. Soltar um stub mínimo que carrega a carga real (simulado aqui) $payload = @" using System; using System.Runtime.InteropServices; public class Loader { [DllImport("user32.dll")] public static extern IntPtr SetWindowsHookEx(int idHook, IntPtr lpfn, IntPtr hMod, uint dwThreadId); [DllImport("kernel32.dll", SetLastError = true)] public static extern bool DuplicateHandle(IntPtr hSourceProcessHandle, IntPtr hSourceHandle, IntPtr hTargetProcessHandle, out IntPtr lpTargetHandle, uint dwDesiredAccess, bool bInheritHandle, uint dwOptions); public static void Execute() { // Instala um hook de teclado de baixo nível (WH_KEYBOARD_LL = 13) SetWindowsHookEx(13, IntPtr.Zero, IntPtr.Zero, 0); // Duplica um manipulador do processo atual (simulado) IntPtr dupHandle; DuplicateHandle((IntPtr)-1, (IntPtr)0x1234, (IntPtr)-1, out dupHandle, 0, false, 0); } }
“@
# Compilar o código C# no momento
Add-Type -TypeDefinition $payload -Language CSharp
# Copiar o processo atual do PowerShell (atua como CastleRAT.exe) para o caminho de destino
Copy-Item -Path $PSCommandPath -Destination $castlePath -Force
# Executar a carga maliciosa
[Loader]::Execute()
# Manter o processo vivo brevemente para garantir que o Sysmon registre a pilha de chamadas
Start-Sleep -Seconds 5
-
Comandos de Limpeza:
# Remover o binário simulado CastleRAT Remove-Item -Path "$env:APPDATACastleRAT.exe" -Force # Opcionalmente descarregar quaisquer hooks (não necessário para o stub, mas incluído para completude) # Nenhuma descarga explícita é necessária para a chamada SetWindowsHookEx com callback NULO usado acima.