SOC Prime Bias: Médio

09 Dez 2025 18:46

Malware Castle RAT Client: Táticas, Técnicas e Comércio

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Malware Castle RAT Client: Táticas, Técnicas e Comércio
shield icon

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

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:

    1. Estágio 1 – Implantar binário CastleRAT: O atacante copia CastleRAT.exe para o diretório %APPDATA% da vítima para se misturar com os dados do usuário.
    2. Estágio 2 – Executar captura de teclas: Usando um pequeno carregador C# na memória, o atacante invoca SetWindowsHookEx para 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.
    3. Estágio 3 – Escalonamento de privilégios: O mesmo carregador então chama DuplicateHandle para 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.
  • 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.