Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
L'RDP Hijacking è una tecnica di Lateral Movement (TA0008) che consente a un avversario di sottrarre una sessione Remote Desktop Protocol già autenticata, spostandosi lateralmente nell'ambiente senza dover conoscere le credenziali della vittima. Il meccanismo sfrutta una funzionalità nativa di Windows: il comando tscon.exe, parte dei Terminal Services, permette di riassegnare una sessione RDP — attiva o disconnessa — a un'altra sessione, a patto di disporre di privilegi SYSTEM.
Il risultato è devastante nella sua semplicità. Un attaccante che ha già elevato i propri privilegi su un host può enumerare le sessioni RDP, individuare quella di un Domain Admin e "agganciarla" a sé senza che la vittima riceva alcuna notifica. Non servono credenziali aggiuntive, non compaiono prompt, non si generano nuovi eventi di autenticazione tradizionali. La tecnica funziona sia localmente sia da remoto e rappresenta un ponte naturale tra privilege escalation e lateral movement.
I dati del framework attestano 1 gruppo APT, 1 malware e 7 mitigazioni associate, a conferma che il vettore, pur non richiedendo tool sofisticati, è ben noto alla comunità difensiva. L'impatto operativo è elevato: il dirottamento di una sessione privilegiata può garantire accesso diretto a risorse critiche del dominio, rendendo la detection tempestiva un requisito non negoziabile per qualunque SOC maturo.
La catena d'attacco per simulare un RDP Hijacking in laboratorio è sorprendentemente lineare, ma richiede una precondizione fondamentale: privilegi SYSTEM sull'host bersaglio. Parti da qui.
Il primo passo è enumerare le sessioni attive e disconnesse sul sistema. Da un prompt elevato, il comando nativo è immediato:
query user
L'output mostra username, ID sessione, stato (Active/Disc) e tempo di inattività. Annota il Session ID della sessione target — tipicamente quella di un account con privilegi superiori ai tuoi.
Per ottenere il contesto SYSTEM necessario a eseguire tscon.exe senza prompt, la strada classica passa dalla creazione di un servizio Windows. Questo approccio funziona perché i servizi Windows vengono eseguiti come SYSTEM per default:
sc create hijack binPath= "cmd.exe /k tscon 2 /dest:rdp-tcp#0" net start hijack
In questo esempio, 2 è il Session ID da dirottare e rdp-tcp#0 è il nome della sessione di destinazione (la tua). Dopo l'esecuzione, la sessione della vittima viene trasferita alla tua console RDP, completa di desktop, applicazioni aperte e token di sicurezza.
Un'alternativa più pulita per il contesto SYSTEM sfrutta PsExec (Sysinternals, gratuito):
PsExec.exe -s -i cmd.exe
Da questa shell SYSTEM puoi poi lanciare direttamente tscon [ID] /dest:[sessione] senza creare servizi persistenti.
Per ambienti red team strutturati, Mimikatz (open source) offre la funzionalità ts::sessions per enumerare le sessioni e token::elevate per ottenere il contesto SYSTEM, concatenando il tutto in un'unica sequenza operativa. Anche Cobalt Strike (a pagamento) integra il dirottamento RDP tramite il suo modulo di lateral movement.
Alcune raccomandazioni per il lab. Documenta il Session ID originale prima del dirottamento per poter ripristinare lo stato. Verifica che la GPO del dominio non limiti già il timeout delle sessioni disconnesse, altrimenti la finestra di opportunità potrebbe essere troppo breve per il test. Infine, esegui il cleanup rimuovendo il servizio creato:
sc delete hijack
Testa anche lo scenario con sessioni disconnesse: sono il bersaglio più realistico, perché gli amministratori spesso chiudono il client RDP senza fare logoff, lasciando sessioni orfane con token attivi per ore o giorni.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo