SOC Prime Bias: Medio

09 Dic 2025 18:46

Malware Castle RAT Client: Tattiche, Tecniche e Tradecraft

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Malware Castle RAT Client: Tattiche, Tecniche e Tradecraft
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

CastleRAT è un trojan di accesso remoto osservato per la prima volta a marzo 2025, distribuito in varianti sia Python che C compilate. Raccoglie metadati di sistema, battute di tastiera, contenuti degli appunti, screenshot e dettagli dei dispositivi multimediali, quindi esfiltra queste informazioni a un server C2 utilizzando la crittografia RC4. Il malware può recuperare payload aggiuntivi, lanciarli tramite rundll32 e stabilire persistenza tramite attività pianificate e metodi di bypass UAC.

Indagine

Il team di ricerca sulle minacce Splunk ha eseguito un reverse engineering delle implementazioni Python e C, mappando i loro comportamenti alle tecniche MITRE ATT&CK inclusi rilevamento del sistema, keylogging, cattura dello schermo, enumerazione dei dispositivi audio/video, risolutori dead-drop e duplicazione degli handle per l’elevazione dei privilegi. La ricerca ha sottolineato la dipendenza di CastleRAT dai binari legittimi di Windows (rundll32, ComputerDefaults.exe) e il suo utilizzo di www.ip-api.com per ottenere l’indirizzo IP pubblico.

Mitigazione

I difensori dovrebbero rilevare connessioni in uscita sospette verso domini sconosciuti, schemi di traffico crittografati RC4 ed esecuzioni di rundll32 utilizzando carichi DLL basati su ordinali. Monitorare le attività pianificate create per avviare CastleRAT, i tentativi di bypass UAC sfruttando ComputerDefaults.exe e i processi lanciati con flag del browser audio disattivato. Bloccare l’accesso a posizioni di risolutori dead-drop noti, incluse le pagine della comunità Steam abusate.

Risposta

Quando viene identificata un’attività CastleRAT, isolare l’host impattato, terminare i processi dannosi e rimuovere eventuali attività pianificate o artefatti di persistenza associati. Raccogliere prove forensi come gerarchie di processi, argomenti da riga di comando e modifiche al registro. Effettuare una ricerca completa per plugin DLL aggiuntivi e canali C2, quindi implementare misure di rimedio e indurimento in tutto l’ambiente più ampio.

mermaid graph TB %% Class definitions classDef technique fill:#e6f7ff %% Node definitions t1016_001[“<b>Tecnica</b> – T1016.001 Rilevamento Configurazione di Rete del Sistema<br/>Raccoglie dettagli di sistema come nome del computer, nome utente, GUID della macchina, versione del sistema operativo e indirizzo IP pubblico da inviare a C2”] class t1016_001 technique t1115[“<b>Tecnica</b> – T1115 Dati degli Appunti<br/>Raccoglie dati dagli appunti di Windows ed esfiltra questi, spesso utilizzando azioni di incolla simulate”] class t1115 technique t1036[“<b>Tecnica</b> – T1036 Camuffamento<br/>Nomina file scaricati e variabili di ambiente per apparire come componenti legittimi Python o Java”] class t1036 technique t1056_001[“<b>Tecnica</b> – T1056.001 Cattura dell’Input: Keylogging<br/>Intercetta le battute, le scrive in un file locale, cripta il file con RC4 e lo invia all’attaccante”] class t1056_001 technique t1559[“<b>Tecnica</b> – T1559 Comunicazione Inter-Procedurale<br/>Genera un processo shell nascosto con i suoi stream standard reindirizzati via pipe anonime, consentendo l’esecuzione di comandi remoti senza una console visibile”] class t1559 technique t1123[“<b>Tecnica</b> – T1123 Cattura Audio<br/>Enumera dispositivi di cattura media tramite Media Foundation”] class t1123 technique t1125[“<b>Tecnica</b> – T1125 Cattura Video<br/>Enumera dispositivi di cattura media tramite Media Foundation”] class t1125 technique t1218_011[“<b>Tecnica</b> – T1218.011 Esecuzione Proxy Binari di Sistema: Rundll32<br/>Carica la funzione di esportazione DLL malevola per ordinal”] class t1218_011 technique t1055_001[“<b>Tecnica</b> – T1055.001 Iniezione di Processo: Iniezione Libreria a Collegamento Dinamico<br/>Usa rundll32.exe per caricare una DLL malevola”] class t1055_001 technique t1547_010[“<b>Tecnica</b> – T1547.010 Esecuzione Autostart di Avvio o Accesso: Monitor delle Porte<br/>Scarica plugin DLL aggiuntivi da C2, li decripta con RC4 e li carica”] class t1547_010 technique t1053[“<b>Tecnica</b> – T1053 Attività/Job Pianificati<br/>Crea un’attività pianificata per avviare il malware all’avvio”] class t1053 technique t1113[“<b>Tecnica</b> – T1113 Cattura Schermo<br/>Cattura periodicamente schermate ed esfiltra queste”] class t1113 technique t1102_001[“<b>Tecnica</b> – T1102.001 Servizio Web: Risolutore Dead Drop<br/>Recupera configurazioni o payload da siti web esterni benigni”] class t1102_001 technique t1127[“<b>Tecnica</b> – T1127 Esecuzione Proxy Utilità di Sviluppatori Fidati<br/>Usa ComputerDefaults.exe e duplicazione dell’handle per bypassare UAC ed eseguire codice con privilegi elevati”] class t1127 technique t1027[“<b>Tecnica</b> – T1027 File o Informazioni Offuscate<br/>Usa crittografia RC4 per comandi e payload di dati”] class t1027 technique t1048_001[“<b>Tecnica</b> – T1048.001 Esfiltrazione tramite Protocollo Alternativo: Protocollo Non C2 Criptato Simmetrico<br/>Invia dati criptati al C2”] class t1048_001 technique t1132_001[“<b>Tecnica</b> – T1132.001 Codifica dei Dati: Codifica Standard<br/>Codifica i dati prima della trasmissione”] 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

Flusso di Attacco

Esecuzione Simulazione

Prerequisito: Il Check Telemetry & Baseline Pre‑flight deve essere superato.

Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per innescare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrazione dell’Attacco e Comandi:

    1. Fase 1 – Distribuzione del binario CastleRAT: L’attaccante copia CastleRAT.exe nella directory %APPDATA% della vittima per mimetizzarsi con i dati dell’utente.
    2. Fase 2 – Esecuzione del keylogging: Utilizzando un piccolo loader C#‑in‑memory, l’attaccante invoca SetWindowsHookEx per installare un hook della tastiera a livello basso, facendo sì che Sysmon registri l’API nel CallTrace dell’evento di creazione del processo.
    3. Fase 3 – Escalation dei privilegi: Lo stesso loader quindi chiama DuplicateHandle per duplicare un handle da un processo di sistema privilegiato (ad esempio, lsass.exe), permettendo al malware di funzionare con i diritti di SYSTEM. Entrambe le chiamate API appaiono nello stesso CallTrace di Sysmon, soddisfacendo i criteri della regola di rilevamento.
  • Script di Test di Regressione:

    # -------------------------------------------------
    # Simulazione CastleRAT – trigger SetWindowsHookEx e DuplicateHandle
    # -------------------------------------------------
    $castlePath = "$env:APPDATACastleRAT.exe"
    
    # 1. Rilascia uno stub minimo che carica il payload reale (simulato qui)
    $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() {
            // Installa un hook della tastiera a basso livello (WH_KEYBOARD_LL = 13)
            SetWindowsHookEx(13, IntPtr.Zero, IntPtr.Zero, 0);
            // Duplica un handle dal processo corrente (simulato)
            IntPtr dupHandle;
            DuplicateHandle((IntPtr)-1, (IntPtr)0x1234, (IntPtr)-1, out dupHandle, 0, false, 0);
        }
    }

“@

# Compila il codice C# al volo
Add-Type -TypeDefinition $payload -Language CSharp

# Copia il processo corrente di PowerShell (agisce come CastleRAT.exe) al percorso di destinazione
Copy-Item -Path $PSCommandPath -Destination $castlePath -Force

# Esegui il payload dannoso
[Loader]::Execute()

# Mantieni il processo in vita brevemente per assicurarsi che Sysmon registri lo stack delle chiamate
Start-Sleep -Seconds 5
  • Comandi di Pulizia:

    # Rimuovi il binario simulato CastleRAT
    Remove-Item -Path "$env:APPDATACastleRAT.exe" -Force
    
    # Facoltativamente scarica eventuali hook (non necessario per lo stub, ma incluso per completezza)
    # Non è richiesto nessun disfacimento esplicito per la chiamata SetWindowsHookEx con callback NULL usato sopra.