Dirottamento Sessioni SSH: SSH Hijacking (T1563.001)
Il dirottamento delle sessioni SSH rappresenta una tecnica di movimento laterale in cui l'attaccante si aggancia a una connessione Secure Shell già autenticata, evitando di dover conoscere credenziali o chiavi private per raggiungere altri sistemi. La tecnica T1563.001 si colloca nella tattica TA0008 (Lateral Movement) del framework MITRE ATT&CK e sfrutta il rapporto di fiducia già stabilito tra host attraverso l'autenticazione a chiave pubblica.
Il vettore principale è l'abuso del socket dell'agente SSH (ssh-agent), tipicamente presente in /tmp/ssh-* su Linux e macOS. Quando un utente utilizza ssh-agent forwarding per saltare tra sistemi, il socket viene esposto sui nodi intermedi: chiunque disponga di privilegi sufficienti (spesso root, ma non solo) può connettersi al socket altrui e utilizzare le chiavi in memoria per aprire nuove sessioni verso destinazioni raggiungibili dal proprietario legittimo.
A differenza dell'uso legittimo di credenziali valide, il dirottamento non genera un nuovo evento di autenticazione tradizionale sull'endpoint di partenza, rendendo la tecnica particolarmente insidiosa per la correlazione degli accessi. Il malware MEDUSA (S1220) integra funzionalità specifiche per catturare credenziali SSH tramite hijacking, dimostrando come questa tecnica sia adottata anche da toolkit criminali. L'impatto operativo è significativo: un singolo host compromesso in una rete che fa uso estensivo di agent forwarding può trasformarsi in un pivot verso decine di sistemi backend, database e infrastrutture cloud gestite via SSH.
In un ingaggio red team, il dirottamento SSH parte tipicamente da un host Linux dove si è ottenuto accesso privilegiato o dove un utente legittimo ha attivato l'agent forwarding verso il proprio jump host. La prima fase consiste nel censire i socket dell'agente presenti sul sistema:
find /tmp -type s -name 'agent.' 2>/dev/null*
ls -la /tmp/ssh-*
Ogni directory /tmp/ssh-XXXXXX contiene un socket appartenente a un utente autenticato via SSH con forwarding attivo. Con privilegi root è possibile impostare la variabile d'ambiente SSH_AUTH_SOCK per puntare al socket della vittima e successivamente elencare le chiavi caricate:
export SSH_AUTH_SOCK=/tmp/ssh-XXXXXX/agent.NNNN
ssh-add -l
Se l'agente contiene chiavi valide, un semplice ssh utente@target-interno userà quelle chiavi senza richiedere password, aprendo una connessione autenticata come l'utente originale. Questa è la vera essenza dell'hijacking: non serve estrarre la chiave privata, basta usare il canale già negoziato.
Esiste anche la variante di hijacking del ControlMaster: se la vittima ha configurato in ~/.ssh/config opzioni come ControlPath e ControlPersist, ogni nuova connessione riutilizza il canale multiplexato esistente. Un attaccante con accesso al socket di controllo può aprire nuove sessioni sulla connessione già autenticata:
ssh -S /home/vittima/.ssh/cm-target target hostname
Sul piano tooling da laboratorio, ssh-mitm (open source) permette di simulare scenari di intercettazione e session hijacking in ambienti controllati per esercizi di consapevolezza. Il framework Empire e Metasploit (open source) includono moduli post-exploitation per l'enumerazione di sessioni SSH attive e dei socket dell'agente. Per l'analisi statica di configurazioni SSH pericolose, Lynis (open source) evidenzia rapidamente forwarding abilitato, permessi lassi su ~/.ssh e configurazioni ControlMaster persistenti.
Un red teamer maturo evita di generare rumore: preferisce operazioni idempotenti che riproducono il comportamento dell'utente legittimo (stessi orari, stessi target, stesse dimensioni di sessione), documentando ogni pivot per la successiva fase di reporting. Il valore dimostrativo dell'esercizio sta nel provare al cliente che un singolo endpoint compromesso può, tramite agent forwarding non necessario, esporre l'intero perimetro amministrativo interno.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo