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)
Requisição de DNS da Comunidade Steam Realizada por Processo Suspeito (via dns_query)
IOCs (HashSha256) para detectar: Por Trás das Paredes: Técnicas e Táticas no Malware Castle RAT Client
Possível Execução por Atividade de Tarefa Agendada com PowerShell (via powershell)
Requisição de DNS da Comunidade Steam Realizada por Processo Suspeito (via dns_query)
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.