Penso che, seguendo gli articoli pubblicati in precedenza nella Guida su Metasploit Framework, sia sorta in voi una domanda spontanea: ogni guida spiega come sfruttare una vulnerabilità precisa, ma se volessimo scoprire nuovi exploit per sistemi operativi e applicazioni diverse, se nel nostro scenario qualche particolare fosse differente da quelli descritti nella guida, come potremmo adattare quanto spiegato alle nostre esigenze?
Con il senno di poi, questo avrebbe dovuto essere il primo tutorial della serie, in modo da rendere i lettori di Baty’s Base indipendenti nell’utilizzo di Metasploit. Lo propongo ora, con la speranza che sia utile a tutti per comprendere la struttura di questo fantastico software e per offrire la possibilità, a chi la volesse, di allargare le competenze nel suo utilizzo.
Comandi base di msfconsole
Soprattutto a primo impatto, l’interfaccia a linea di comando di msfconsole può risultare leggermente ostica, ma una volta compresa la struttura di Metasploit Framework, concepita in maniera chiara e lineare, padroneggiarla sarà un gioco da ragazzi.
Metasploit è costituito da un core e da una serie di moduli ausiliari. È scritto in ruby ed è altamente personalizzabile, quindi, qualora non trovaste il modulo che si addice alle vostre esigenze, potrete crearlo e implementarlo voi stessi.
Lanciare Metasploit in modalità msfconsole
Metasploit necessita di un database postgresql per girare, quindi il primo comando che daremo da terminale avvierà il servizio postgresql installato sulla vostra macchina. Seguirà il comando per lanciare msfconsole
service postgresql start msfconsole
Una breve schermata di presentazione apparirà sul vostro terminale e il prompt msf >
vi comunicherà che il software è pronto per l’utilizzo.
help
Il primo comando utile, di fronte ad un prompt che non ci racconta nulla sull’utilizzo di Metasploit, è help
. Come potete immaginare ha la funzione di mostrare un riassunto dei comandi più importanti di msfconsole e una breve descrizione di ognuno di essi
Se associato al nome di un comando, help restituirà le istruzioni necessarie all’utilizzo del comando.
use
Il comando use nome_modulo
, permette di selezionare un modulo di Metasploit, cambiando il contesto di utilizzo del framework su quel particolare modulo
back
Nel momento in cui abbiamo terminato di utilizzare un modulo, per tornare al prompt iniziale sarà sufficiente lanciare il comando back
exit
Per terminare l’utilizzo di msfconsole, potremo lanciare il comando exit
, chiudendo così la sessione di lavoro e tornando al prompt di shell Linux
search
Digitando search
potremo cercare un modulo ausiliario di Metasploit
Utilizzare il comando search con parole chiave
Il comando search può essere utilizzato per la ricerca avanzata dei moduli di Metasploit ricorrendo all’utilizzo di alcune parole chiave. Possiamo ottenere l’elenco di queste parole chiave utilizzando il comando help
visto in precedenza, unito al comando search
Immaginiamo di voler cercare i moduli relativi a vulnerabilità presenti nel dizionario Common Vulnerability and Exposure (CVE) dell 2016: basta digitare il comando search cve:2016
per avere una panoramica degli strumenti a nostra disposizione
N.B.: a differenza di quanto lascia ad intendere l’aiuto del comando search, l’utilizzo contemporaneo di più parole chiave si comporta come un OR logico invece che come un AND, porta erroneamente ad un incremento dei risultati di ricerca invece di comportarsi come un filtro. Chiunque avesse informazioni più precise in merito, è pregato di segnalarmele. Ringrazio tutti in anticipo per la collaborazione.
Comandi per gli exploit
Utilizziamo come esempio un exploit visto in uno dei precedenti articoli. Cambiamo il contesto di msfconsole sull’exploit relativo a Revolution Slider di WordPress con il comando use exploit/unix/webapp/wp_revslider_upload_execute
info
Se non conoscessimo l’exploit in questione, la prima cosa che vorremmo sapere sarebbero informazioni dettagliate su di esso. A questo proposito viene utile il comando info
, che restituisce la seguente schermata
options
In seguito ci sarebbe utile conoscere anche i parametri supportati dall’exploit. Possiamo avere un elenco di queste opzioni lanciando il comando show options
set
Valorizziamo uno dei parametri visualizzati tramite il comando precedente, mediante il comando set [opzione] [valore]
payloads
Se vogliamo ottenere un elenco di payload utilizzabili con l’exploit in questione, allora digitiamo show payloads
. I payload vengono impostati con il comando set [nome_payload]
advanced
Digitando show advanced
il software ci restituisce una serie di opzioni avanzate relative al modulo in questione
Ogni opzione può essere valorizzata con il comando set [opzione] [valore]
.
targets
Visualizziamo i bersagli su cui può essere eseguito l’exploit con show targets. Per l’exploit che stiamo utilizzando come esempio, viene visualizzato un solo bersaglio, quindi non sarà necessario impostarlo. Nel caso in cui un exploit presenti più possibilità, possiamo scegliere un bersaglio ocn il comando set target [ID_bersaglio]
encoders
Come per le precedenti opzioni, possiamo visualizzare i codificatori relativi all’exploit in uso, utilizzando il comando show encoders
e impostarli con il comando set [nome_encoder]
.
nops
I nop, dato il loro significato poco chiaro, meritano qualche parola in più. NOP è l’abbreviazione di No OPerations, è un’istruzione di Assembly che permette al processore di eseguire alcuni cicli di clock senza compiere operazioni. Detta così, viene da pensare che non servano a nulla, invece torna particolarmente utile per riempire i byte vuoti, permettendo di sfruttare i buffer overflow e bypassando alcune firme IDS/IPS. Anche i nop relativi ad un exploit possono essere visualizzati con il comando show nops
e impostati con set [nome_nop]
evasion
Il comando show evasion
mostra le tecniche di evasione legate a un determinato exploit. Ogni tecnica può essere impostata lanciando il comando set [nome_evasion]
Lanciare l’exploit
Ultimata la configurazione secondo necessità, possiamo lanciare l’exploit tramite i comandi run
oppure exploit