Scrivo questo tutorial per completare la seconda parte [1] della mia serie dedicata a Metasploit Framework, l'articolo è rivolto a chiunque voglia poter usufruire di quasi tutte le sue funzionalità anche in ambiente Windows. Ho scritto: "quasi tutte" riferendomi ai componenti msfconsole (completa delle sue funzioni database, nmap e auto-pwn) e all'interfaccia di gestione via web msfweb; il corretto funzionamento del componente msfgui è invece escluso.
Vi avviso fin da subito che, nonostante abbia cercato di diminuire il più possibile il numero degli interventi di configurazione manuale, la procedura che descriverò richiede comunque una media esperienza nell'uso del sistema operativo Windows e della shell dei comandi Unix.
Premessa
Purtroppo, nonostante i miei sforzi, non sono riuscito ad ottenere una installazione di Metasploit completamente pulita e funzionante fin da subito, è stato comunque necessario mettere mano ad una riga di codice e applicare un "fix" che definirei "poco elegante" ma che permette di utilizzare senza problemi quelle funzionalità che si occupano di integrare l'uso di Nmap all'interno della Metasploit Console (msfconsole).
Quanto vi ho appena detto si riassume in una incompatibilità della versione per Windows di Nmap con il sistema di cartelle messo a disposizione da Cygwin, Metasploit non sarà quindi in grado di utilizzare il comando db_nmap a meno che non applichiate la correzione che vi mostrerò in questo articolo.
Installazione
Anziché effettuare l'installazione manuale di tutti i prerequisiti (legati a ruby on rails e sqlite3) utilizzermo la repository messa a disposizione dal progetto "Cygwin Ports Project", l'installazione risulterà così molto più semplice e rapida.
Prima di tutto occorre scaricare Cygwin, per chi non lo sapesse si tratta di un ambiente Unix-like per Windows che permette a tantissime applicazioni Unix di essere eseguite senza doverne modificare il codice (devono però essere compilate specificatamente per cygwin.
Recatevi alla pagina di download [2] e cliccate il collegamento "Install or update cygwin now!" per scaricare l'installer.
Eseguite il file setup.exe che avete appena scaricato, accettate tutte le impostazioni predefinite premendo il pulsante "Avanti" fino a quando non vi ritroverete nella seguente schermata:
Nella riga di inserimento testo inserite:
ftp://sunsite.dk/projects/cygwinports
e premete il pulsante Add.
In questo momento stiamo indicando all'installer di cygwin da quale URL vogliamo prelevare la lista dei pacchetti installabili, nel nostro caso si tratta dell'ftp del progetto "Cygwin Ports Project"
Una volta premuto il tasto Add vedrete evidenziarsi automaticamente la voce che avete appena inserito, ovvero:
ftp://sunsite.dk
Tenendo premuto il tasto Ctrl della tastiera selezionate anche un'altro dei mirror tra quelli presenti in questa schermata (uno qualsiasi - io ho scelto un mirror italiano), una volta fatto cliccate il pulsante "Avanti"
Entro qualche secondo dovreste ritrovarvi nella finestra di selezione dei pacchetti, per selezionare un pacchetto dovete espanderne la relativa sezione e fare un clic del mouse sulla voce "Skip" che trovate riportata sotto alla colonna "New", vedrete cambiare la parola "Skip" in un numero di versione, ciò significa che avete contrassegnato il pacchetto per l'installazione.
Selezionate:
- Database
- libsqlite3-devel
- libsqlite3_0
- ruby-sqlite3
- sqlite3
- tclsqlite3 - Devel
- openssl-devel
- readline
- ruby
- subversion - Ruby
- rubygems
Sicuramente avrete notato l'esistenza di altre voci che vengono selezionate in maniera predefinita, non deselezionatele e premete avanti.
Entro qualche minuto l'installazione dovrebbe essere completata, scegliete di mettere un collegamento sul desktop e premete "Fine".
Cygwin è installato, proviamo ad avviarlo facendo doppio clic sull'icona presente nel desktop. Se aveste dimenticato di creare il suddetto collegamento sarà sufficiente raggiungere la cartella di installazione di Cygwin (la predefinita è "C:\Cygwin") ed eseguire il file Cygwin.bat.
Al primo avvio verrà creato il vostro profilo utente e vi ritroverete ad avere una shell dei comandi posizionata nella vostra Homedirectory.
Occupiamoci di installare fin da subito ruby on rails, eseguite nella shell in questione il seguente comando:
gem install -v=1.2.2 rails
non chiedetemi il perché ma alla prima esecuzione il comando fallisce quasi sempre notificando la mancanza del pacchetto, provate ad eseguirlo nuovamente. Se tutto va bene vi ritroverete a dover accettare una serie di richieste.
Una volta terminata l'installazione di ruby on rails dovremo procurarci una copia di Metasploit Framework 3 e di Nmap per Windows.
- Nmap per windows lo trovate qui: http://insecure.org/nmap/download.html
Quasi infondo alla pagina troverete la versione per Windows in formato zip, si tratta proprio di quello che serve a noi (attualmente il file si chiama nmap-4.20-win32.zip) - Metasploit Framework 3 invece lo trovate a questo url: http://framework.metasploit.com/msf/download
Scaricatene la versione per Linux, BSD; Mac OSX, Windows Cygwin - quella in formato tar.gz (attualmente l'archivio è denominato framework-3.0.tar.gz), per estrarla sarà necessario installare il programma WinRAR [10].
Estraiamo entrambi gli archivi in una cartella temporanea a nostra scelta.
Attenzione: per poter eseguire Nmap è necessario installare il driver di rete WinPcap che potete scaricare a questo indirizzo: http://www.winpcap.org/install/default.htm [12] (prelevate la versione "WinPcap auto-installer (driver +DLLs)" - una volta effettuata l'installazione sarà necessario riavviare il sistema)
I files di Nmap (soltanto i files senza cartelle) vanno copiati dentro alla cartella "bin" di Cygwin, ovvero nel percorso:
C:\cygwin\bin
Mentre l'intera cartella framework-3.0 (quella contente i vari file del programma) potete copiarla dentro alla vostra Homedirectory di Cygwin, ovvero nel percorso:
C:\cygwin\home\vostro_nome_utente
Ora dovete modificare la configurazione di metasploit per fare in modo che utilizzi sqlite3 come database.
Aprite con Wordpad il file database.yml che si trova in:
C:\cygwin\home\vostro_nome_utente\framework-3.0\data\msfweb\config\
Modificatene il contenuto sostituendo tutte le occorrenze "mysql" con la parola "sqlite3"
Salvatelo e chiudete. L'installazione e la configurazione di Metasploit Framework sono completate. Ora non ci resta che aggiornare il framework e applicare la correzzione della quale vi ho parlato in apertura dell'articolo.
Aggiornamento
Mi ripeto per chi non avesse letto l'articolo relativo all'installazione di Metasploit in ambiente Linux: la procedura di aggiornamento che andrò a descrivervi non si occupa soltanto di risolvere problemi o aggiungere nuovi moduli e funzionalità al framework, ma serve anche per poter usufruire di tutti gli ultimi exploit rilasciati.
Se avete eseguito a dovere tutti i passi precedenti dovreste ritrovarvi con la possibilità, una volta avviata la shell dei comandi cygwin, di accedere all'interno della cartella framework-3.0 (mediante il comando
cd framework-3.0
) ed ottenere un list di tutti i files in essa contenuti.
Per aggiornare Metasploit Framework sarà sufficiente recarsi all'interno della cartella in questione ed eseguire il seguente comando:
svn update
Se dovesse restituirvi errori (come nel mio caso) provate ad eseguirlo nuovamente.
Come potete notare dalla precedente immagine, la procedura di aggiornamento utilizza in maniera predefinita il protocollo https e sarà quindi necessario accettare un certificato digitale; quando richiesto premte "p" per accettarlo in maniera permanente.
L'avvenuto aggiornamento del framework è indicato dalla comparsa di un numero riportante la sua versione.
Non credo ci sia bisogno di specificarlo ma vi informo che dovrete utilizzare questa procedura ogni qual volta vogliate controllare la presenza di aggiornamenti.
Risolvere i problemi di db_namp su cygwin
Come vi anticipavo nella premessa, Metasploit Framework così installato presenta dei problemi nell'esecuzione della funzione db_nmap.
Tratterò l'utilizzo della suddetta funzionalità in un altro articolo e quindi non intendo dimostrarvi in questo momento il problema che andremo a correggere, ma credetemi... senza questo piccolo accorgimento incorrereste sicuramente in questo tipo di errore:
Failed to open XML output file /cygdrive/c/DOCUME~1/nome_utente/IMPOST~1/Temp/dbnmap.3.48.0 for writing QUITTING!
Il problema in questione deriva dal fatto che Nmap per Windows, quando viene eseguito all'interno di Cygwin, gestisce in maniera errata i percorsi a file e cartelle.
Per aggirare il bug dovrete modificare una riga del file "db.rb" situato in:
C:\cygwin\home\vostro_nome_utente\framework-3.0\lib\msf\ui\console\command_dispatcher\
Apritelo con Wordpad e modificate la riga:
fd = Tempfile.new('dbnmap')
con:
fd = File.open('C:/cygwin/home/vostro_nome_utente/framework-3.0/dbnmap.xml', "r+")
Salvate il file e chiudetelo.
Ora non ci resta che creare il file temporaneo che verrà utilizzato da Nmap per salvare i risultati delle scansioni eseguite con il comando db_nmap.
Recatevi all'interno della cartella "framework-3.0" (C:\cygwin\home\vostro_nome_utente\framework-3.0) e create un nuovo file di testo, cambiatene l'estensione e nominatelo dbnmap.xml.
Nota: è più facile eseguire questa operazione se attivate la visualizzazione delle estensioni per i files conosciuti.
Ho precedentemente definito questa correzione "un fix poco elegante" poiché non risolve il problema alla radice e se durante un processo di aggiornamento il file "db.rb" venisse sostituito dovremmo riapplicarlo nuovamente.
Se qualcuno riuscisse a trovare una soluzione migliore me lo faccia sapere, non esiterò ad includerla in questo articolo.
Development Snapshot
Oltre a quanto descritto in precedenza, esiste anche la possibilità di installare una versione "in sviluppo" di Metasploit Framework, attualmente si tratta della versione 3.1. Grazie ad essa è possibile usufruire di nuove funzionalità ed exploit non ancora inclusi nella versione stabile.
Riferendomi a tutto ciò che ho scritto in questo articolo vi informo che per poter utilizzare lo snapshot in questione avrete comunque bisogno di eseguire tutti i passi descritti in precedenza. L'unica differenza sta nel fatto che non dovrete scaricare il file tar.gz di Metasploit Framework ed estrarlo, infatti ne scaricherete i file direttamente dalla repository di sviluppo.
Quindi, una volta aver installato cygwin (con tutti i pacchetti necessari), aver copiato i files di Nmap dentro alla cartella "bin" ed aver installato WinPcap, basterà creare una nuova cartella in una posizione a piacere, recarsi al suo interno con la shell dei comandi ed eseguire:
svn co http://metasploit.com/svn/framework3/trunk/
I passi per la configurazione (database.yml), l'aggiornamento e la correzione del problema relativo a db_nmap, sono invece gli stessi descritti in precedenza fatta eccezione per tutti quei percorsi (file e cartelle) che ho nominato nel corso di questo articolo, i quali vanno ovviamente riadattati alla cartella che avrete creato per lo snapshot.
Conclusioni
Se siete giunti fino a questo punto probabilmente significa che ora disponete di un Metasploit Framework apparentemente funzionante, nonostante questo vi invito a leggere la mia Guida a Metasploit Framework [28] per scoprire come installarlo su Ubuntu Linux ed ottenere il meglio da questo prodotto. Vi segnalo inoltre l'esistenza di una Userguide ufficiale [29] e una Developer's Guide [30].
Autore
Mirko Iodice
mirko -at- notageek (.dot) it