Trovare e sfruttare vulnerabilità utilizzando Metasploit

Tempo di lettura: 8 minuti
Data pubblicazione: April 15, 2016
msfintro
msfintro

Metasploit  è uno dei software più utilizzati e utili per effettuare exploit e trovare vulnerabilità in un dispositivo. Dopo che il tool è stato aquisito dalla Rapid7 è stato diviso in diversi software, che sono:

  • Metasploit Framework: quello che userò io, è la versione gratuita ed Open-Source che si trova preinstallata in Kali Linux, disponibile anche per Windows e OS X;
  • Metasploit Community Edition: è un’interfaccia web che permette di effettuare scan, trovare vulnerabilità e molto altro. Si trova gratis a questo indirizzo;
  • Metasploit Express: versione più completa rispetto alla Community edition, costa circa 3.000 $ all’anno;
  • Metasploit Pro: versione pro, include tutte le funzionalità delle prime due, tool per effettuare social engineering, brute-force automatico e molto altro (ma cosa 15.000 $ all’anno, è infatti ideata per aziende).

Visto che il tool è, oltre che complesso, ampiamente documentato cercherò di inserire link alle guide ufficiale per alcuni passaggi in modo da non dover scrivere passo per passo certi comandi. Trovate la documentazione ufficiale (con installazione, manuale d’uso, utilizzo di alcuni comandi) a questo indirizzo. Un’altra risorsa utile è questa, contiene video e guide per molti comandi. Saranno presenti alcuni termini in inglese, poiché non sono riuscito a tradurre in italiano. I principali sono:

  • Exploit: Un attaccante sfrutta un exploit per riuscire ad entrare in un sistema. Per entrare in un sistema si possono utilizzare vulnerabilità, bug o configurazione errate dello stesso;
  • Payload: è un codice che vogliamo eseguire sul sistema. Per esempio, un reverse shell è un payload che crea una connessione tra il sistema attaccato e l’attaccante e permette di utilizzare il prompt dei comandi (ad esempio) di Windows;

Introduzione

Metasploit Framework è un software a riga di comando, contiene centinaia di exploits nel proprio database ed è aggiornato settimanalmente con le più recenti vulnerabilità per ogni tipo di sistema operativo, piattaforma e applicazioni trovate dalla comunità. Dopo averlo installato, digito

root@kali:~# msfconsole

e controllo se il database è connesso

Se il database non è connesso, uscite da metasploit (digitando exit) e nel terminale:

sudo service postgresql start

Riprovate ad avviarlo, se da ancora errore, uscite e digitate nel terminale

msfdb reinit

In questo modo dovrebbe re-inizializzare il database e vi permetterà di utilizzarlo. Avere un database è importante, poiché ogni scansione che fare Metasploit salverà gli host, le vulnerabilità e descrizioni. Quando vorrete eliminare tutto basterà digitare “msfdb reinit” il database tornerà come nuovo.

I servizi salvati nel mio database
I servizi salvati nel mio database

Per visualizzare tutti i comandi disponibili basta digitare help e verrà visualizzato l’elenco di aiuto.

Ottenere informazioni, fase di scansione

Metasploit permette effettuare tutte le fasi che un penetration tester (o hacker) deve compiere. Si può utilizzare nmap direttamente dal software, digitando

db_nmap comando IP
Esempio:
nmap -sn 192.168.1.1/24

oppure si può effettuare una scanning utilizzando i moduli che ci fornisce il software. Per sapere quali sono i moduli presenti (per scansionare) che ci interessano, basta digitare

search scanner

Se invece, dopo aver effettuato una scansione (con nmap, ad esempio) vedo che l’obbiettivo ha la porta FTP attiva, basta che digito

info auxiliary/scanner/ftp/

e poi clicco il tasto TAB della tastiera. Ecco che mi visualizza tutti i moduli disponibili per le mie necessità

ftpscan
ftpscan

Seleziono auxiliary/scanner/ftp/ftp_version per poter visualizzare la versione che utilizza il mio obbiettivo. I passaggi che ora effettuerò sono praticamente gli stessi per ogni modulo, l’importante è capire come funziona.

Digito

use auxiliary/scanner/ftp/ftp_version

in modo da selezionare il modulo scelto e poi visualizzo le informazioni che necessita per poter essere eseguito con il comando

info

Ora abbiamo un elenco di stringhe che dobbiamo impostare, la schermata che si presenta davanti è composta da:

  • Name: nome del parametro. Per ogni modulo ci saranno informazioni diversi, i più comuni sono:
    • **RHOSTS:**il nostro obbiettivo, che può essere una lista di IP o solo uno;
    • RPORT: la porta da scansionare, nel nostro caso è preimpostata a 21;
    • THREAD: il numero di threads da utilizzare, in questo caso ho un indirizzo IP, quindi me ne basta uno.
  • Current Setting: impostazioni definite al momento dell’apertura del modulo;
  • Required: se è yes è necessario inserire quel parametro, altrimenti il modulo non potrà essere avviato;
  • Description: descrizione del parametro;

Per impostare un parametro, basta che digito (lo potete vedere nell’immagine)

SET nome parametro
Ad esempio:
set RHOSTS 192.168.1.1

Dopo aver inserito tutti i parametri di cui abbiamo bisogno, si può digitare ancora info per vedere se abbiamo inserito tutto correttamente, oppure facciamo partire il software, digitando

run
oppure
exploit

Esistono tantissimi moduli per effettuare scansioni, sta solo a noi trovare quello che più ci serve.

Exploit

Riuscire ad evadere un sistema senza averne le credenziali o l’accesso fisico è uno degli obbiettivi principali in questo campo, ed anche una bella sensazione. Dopo aver effettuato la fase dello scanning, abbiamo a disposizione diverse porte e servizi da testare, ecco alcuni esempi.

Ricorco che evadere un sistema senza le dovute autorizzazioni è illegale e punibile penalmente.

Dopo aver fatto una scansione veloce della rete di casa mia, mi incuriosisce il fatto che ci sia la porta 21 del modem sia aperta. Che non siano state modificate le password di default?

port
port

Cerco quindi, con il comando

 search ftp

un modulo che mi può esser utile, e seleziono fpt_login

fpt_login
fpt_login

Ora imposto il file della lista degli utenti e delle password (che ricordo, si trova qui)

set
set

Faccio partire l’attacco e dopo poco ecco che viene trovata la password e lo username (e quando ho comprato il modem, davvero erano queste, l’ho scoperto per caso tempo fa!).

passfind
passfind

Metasploitable

Per questo esempio utilizzerò Metasploitable, è una macchina virtuale per definizione stessa vulnerabile. Ha decine di porte aperte e servizi vulnerabili, potete trovarla a questo indirizzo.

Effettuo una scanione con nmap per vedere quali porte ha aperte il mio obbiettivo

prtmetasploitable
prtmetasploitable

Vedo che c’è irc è attivo, e andando a cercare irc, l’unico modulo in unix è “unreal_ircd_3281_backdoor”. Lo seleziono, imposto RHOST e faccio partire l’attacco

Come potete vedere sono riuscito ad entrare nel sistema, e digitando whoami scopro di essere root

root
root

Conclusioni

Questo articolo vuole essere solo un’introduzione al software, riuscire a spiegarlo in maniera completa probabilmente ne verrebe fuori un libro. Per imparare ad utilizzarlo al meglio bisogna sperimentare al massimo, utilizzando metasploitable, macchine virtuali con Windows XP o anche versioni più recenti. Se pensate che manchi qualcosa di essenziale, segnalate pure che provvederò ad aggiungerlo.