Abuso di Sudo e Sudo Caching: Sudo and Sudo Caching (T1548.003)

La tecnica T1548.003 descrive l'abuso del meccanismo sudo su sistemi Linux e macOS per ottenere privilegi elevati senza necessariamente conoscere la password dell'utente target. L'attaccante sfrutta due caratteristiche legittime del framework: il caching temporale delle credenziali gestito tramite timestamp_timeout e l'isolamento per sessione terminale controllato da tty_tickets.

Quando un utente esegue sudo con successo, il sistema aggiorna un timestamp (storicamente in /var/db/sudo, oggi in /var/run/sudo/ts/ su distribuzioni moderne) che consente esecuzioni successive senza reinserire la password per un intervallo configurato. Un processo malevolo con accesso allo stesso tty può quindi lanciare comandi privilegiati durante questa finestra. Alternativamente, l'attaccante può manipolare direttamente /etc/sudoers aggiungendo regole NOPASSWD o disabilitando tty_tickets, garantendosi persistenza dell'escalation.

La tecnica si colloca in TA0004 (Privilege Escalation) perché consente il passaggio da utente non privilegiato a root, e in TA0005 (Defense Evasion) perché sfrutta un meccanismo di sistema legittimo, aggirando controlli basati sulla richiesta esplicita di password. Nella kill chain interviene dopo l'Initial Access e l'Execution, tipicamente durante il consolidamento dell'accesso. L'impatto è massimo: root shell, capacità di installare rootkit, disabilitare EDR e modificare qualsiasi configurazione. I dati MITRE censiscono 3 famiglie malware (Cobalt Strike, Proton, Dok) e 3 mitigazioni primarie.

In un esercizio red team, l'abuso di sudo caching richiede due precondizioni: accesso a un account utente che compaia in /etc/sudoers e una sessione tty in cui quell'utente abbia già autenticato sudo di recente. La prima verifica è banale: sudo -n -l elenca i permessi senza prompt e restituisce errore se non c'è cache attiva.

Per scoprire una finestra di caching aperta, ispeziona i file di timestamp. Su distribuzioni moderne il percorso è /var/run/sudo/ts/<username>; su macOS storicamente /var/db/sudo. Se il file esiste e il suo mtime rientra nel timestamp_timeout (default 5 minuti), un comando sudo -n whoami eseguito dallo stesso tty restituirà root senza chiedere password.

Per identificare configurazioni sfruttabili, cerca regole permissive:

grep -E 'NOPASSWD|!tty_tickets' /etc/sudoers /etc/sudoers.d/* 2>/dev/null

Una regola user ALL=(ALL) NOPASSWD: /usr/bin/find è un classico vettore: l'utility find consente esecuzione arbitraria tramite -exec, quindi sudo find /etc -exec /bin/sh ; -quit apre una root shell. Il database GTFOBins (open source) documenta centinaia di binari sfruttabili in configurazioni sudo permissive ed è la reference standard per questa fase.

Per l'enumerazione automatica in laboratorio, gli strumenti canonici sono LinPEAS (open source) e linux-smart-enumeration (open source), entrambi disponibili su GitHub. Eseguiti come utente non privilegiato, evidenziano regole sudoers sfruttabili, file di timestamp attivi e binari SUID correlati. pspy (open source) permette di osservare processi lanciati da altri utenti senza privilegi, utile per intercettare quando un admin esegue sudo e sfruttare la finestra di caching.

Su macOS, la manipolazione di tty_tickets richiede già privilegi root (il file /etc/sudoers è protetto), quindi rappresenta più una tecnica di persistenza post-escalation che un vettore iniziale. Un comando tipico osservato in malware come Proton è:

echo 'Defaults !tty_tickets' >> /etc/sudoers

seguito da killall Terminal per forzare l'applicazione della modifica alle sessioni attive.

Per testare in ambiente controllato la finestra di caching, uno script bash che monitora /var/run/sudo/ts/ con inotifywait (pacchetto inotify-tools, open source) permette di reagire istantaneamente quando un utente autentica sudo. In un engagement autorizzato, questa tecnica dimostra al cliente quanto sia rischioso lasciare timestamp_timeout sui valori default su workstation di amministratori.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.