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

Metasploit

Metasploit è uno dei principali strumenti forniti con Kali Linux, che permette di rilevare falle di sicurezza e sfruttarle per realizzare exploit.
Metasploit è uno dei principali strumenti forniti con Kali Linux, che permette di rilevare falle di sicurezza e sfruttarle per realizzare exploit.
Link copiato negli appunti

In questa lezione parleremo di Metasploit, lo strumento principe tra quelli che consentono di preparare e mettere in funzione un exploit all’interno di Kali Linux. Una guida dettagliata al suo funzionamento esula dagli scopi di questa lezione introduttiva, che vi guiderà nei primi passi al suo utilizzo. Tuttavia, una volta letti i contenuti di questa lezione, è possibile prendere visione della guida ufficiale, disponibile sul sito web della Offensive Security.

Requisiti

Metasploit è preinstallato nell’ultima distribuzione di Kali. Fondamentalmente, non dovremo far altro che avviarlo, cliccado sull’icona del tool (mostrata in figura):

Figura 22. Avvio di Metasploit (click per ingrandire)

Avvio di Metasploit

Dovrebbe a questo punto avviarsi la shell seguente:

Figura 23. Shell di Metasploit (click per ingrandire)

Shell di Metasploit

A questo punto non saremo ancora pronti ad utilizzare Metasploit. Infatti, uno dei problemi principali quando si utilizza un tool di exploitation, è trovare un host “vittima” su cui effettuare i propri esperimenti. Per questo motivo il team di Metasploit ha messo a disposizione una macchina vulnerabile, chiamata “Metasploitable”, sulla quale condurre i nostri test. L’immagine può essere scaricata ed eseguita con uno strumento di virtualizzazione (ad esempio Virtualbox). Il link per il download è questo.

Come raccomandazione generale, è bene limitare l'uso di Metasploitable all’interno della rete locale, in modalità NAT e possibilmente mentre si è disconnessi da Internet.

Architettura di Metasploit

Metasploit è installato sulle macchine Kali, all’interno della directory /usr/share/metasploit-framework. Il filesystem ha la struttura mostrata in figura:

Figura 24. Struttura del filesystem di Metasploit (fonte: Metasploit unleashed) (click per ingrandire)

Struttura del filesystem di Metasploit

Troveremo dunque le seguenti cartelle:

  • Data: contiene i dati utilizzati dagli exploit
  • Documentation: contiene la documentazione del framework
  • Lib: contiene il codice di metasploit
  • Modules: contiene il codice degli exploit, consistenti in script scritti in linguaggio Ruby
  • Plugins, scripts, tools: contengono strumenti di ausilio al framework (es. Meterpreter)

Infine, l’architettura di Metasploit può essere riassunta nella seguente immagine:

Figura 25. Architettura di Metasploit (fonte: Metasploit unleashed) (click per ingrandire)

Architettura di Metasploit

Tutti i moduli Metasploit sono classi scritte in Ruby. I moduli di particolare interesse per questa guida, sono la console, ed i moduli riportati all’interno del box penetration modules, denominati exploits e payloads.

La console di metasploit

La riga di comando di Metasploit è chiamata “MSFconsole”, mentre nelle versioni precedenti, era denominata "MSFcli". Una volta avviata, avremo a disposizione una serie di utili comandi, riassunti di seguito:

  • Connect: si connette ad un host remoto utilizzando il comando netcat
  • Exit: esce dalla console
  • Resource: esegue i comandi memorizzati all’interno di un file
  • Search: effettua la ricerca tra i moduli disponibili
    Figura 26. Esempio di ricerca tra moduli (click per ingrandire)

    Esempio di ricerca tra moduli
  • Info: fornisce informazioni su un modulo
  • Help: menu di help
  • Use: utilizza un dato modulo
    Figura 27. Esempio di utilizzo di un modulo in Metasploit (click per ingrandire)

    Esempio di utilizzo di un modulo in Metasploit
  • Set/Get: configura/ottiene il valore delle variabili per il modulo correntemente utilizzato

Exploit

Gli exploit in Metasploit appartengono a due categorie: "attivi" e "passivi". Gli exploit attivi vengono eseguiti fino al loro completamento. In caso di errore verranno terminati fornendo istruzioni sull’errore incontrato.

Gli exploit passivi attendono che l’host remoto avvii l’esecuzione dell’exploit; per tale motivo, questi exploit sono usualmente eseguiti in background in attesa che accada qualcosa.

Utilizzo di un exploit

Per prima cosa dobbiamo conoscere l’exploit che vogliamo utilizzare. Supponiamo di volere attaccare una macchina su piattaforma “OSX”. Cerchiamo tra gli exploit disponibili e digitiamo dunque il seguente comando:

search type:exploit platform:osx

Otterremo dunque la lista degli exploits mirati a sistemi osx. A questo punto, selezioniamo uno tra gli exploits disponibili, per esempio, la remote ssh code execution:

use exploit/multi/ssh/sshexec

Verifichiamo le opzioni a disposizione di questo exploit, digitando:

show options

Settiamo dunque le opzioni principali per eseguire l’exploit (meramente a scopo di esempio):

set username test_user
	set password test_pwd
	set rhost 10.0.0.1

Lanciamo infine l’exploit digitando:

exploit

Payload

Gli exploit di Metasploit vengono gestiti tramite il concetto di “payload”. Il payload rappresenta il codice dell’exploit, che può essere caricato sull’host remoto in tre modi differenti: "single", "stager / stage" e "meterpreter".

Prima di tutto, quando eseguiremo un exploit, avremo la possibilità di settare il tipo di payload, tramite il seguente comando:

set PAYLOAD nome_payload

Payload Single

Un payload single contiene interamente il codice dell’exploit. Questo tipo di payload garantisce stabilità nell’esecuzione del codice, dal momento che non verrà frammentato prima dell'invio verso la macchina remota.

Quali sono, però, gli svantaggi nell’utilizzo di questo tipo di payload? Il “single” payload può essere facilmente rilevato da strumenti di protezione, poiché il codice da eseguire viene inviato in modo lineare e facilmente rilevabile da strumenti che possiedono la signature per lo stesso tipo di exploit. In particolare, strumenti di rilevazione delle intrusioni intelligenti quali Next-Generation Firewalls, endpoint clients e così via non hanno difficoltà a scoprire che del codice malevolo sta per essere eseguito sull'host.
Il nostro consiglio è di utilizzarlo per cominciare a sperimentare le capacità di Metasploit, ma difficilmente riusciremo ad eseguirlo su una macchina "reale".

Payload stager

Un payload più difficile da rilevare che lavora in congiunzione con i payload di tipo “stage”, esegue il task in diversi passi. Fondamentalmente, dopo che l’exploit verrà eseguito sull’host remoto, verrà richiesto il codice vero e proprio del malware da installare. In questo modo si cercherà di “confondere” eventuali strumenti di rilevazione di codice malevolo, suddividendo l'attacco in più fasi.

Payload Meterpreter

La categoria di payload più avanzata. Un payload di questo tipo opera tramite la tecnica della "dll injection", direttamente sulla RAM dell’host remoto, evitando di alterare file sul disco. In questo modo si cercherà di coprire le eventuali tracce, rilevabili solo da strumenti di protezione. Gli exploit caricati con payload di tipo “meterpreter” possono essere modificati e disattivati in qualunque momento, rendendo il compito della loro rilevazione estremamente complesso.

La peculiarità più importante di Meterpreter è che il codice dell’exploit viene caricato nel processo compromesso e non crea ulteriori processi che potrebbero essere facilmente rilevati; oltre a ciò le comunicazioni con l’host origine sono sempre cifrate, rendendo ancora più complessa la rilevazione per uno strumento di network monitoring.

La sequenza di operazioni che vengono eseguite può essere riassunta come segue:

  1. Il client carica la DLL tramite una socket verso l’host remoto
  2. Il server eseguito sulla macchina remota carica il codice malevolo in memoria e lo inizializza
  3. Il codice dell'exploit effettua la registrazione con il client
  4. Il cilent carica le API per controllare la macchina remota e richiamare le funzionalità offerte per l’esecuzione del codice malevolo

Va infine segnalato che nel 2015, Meterpreter è stato esteso dando la possibilità di caricare ed eseguire codice Python. Per eseguire il codice Python sarà dunque sufficiente eseguire il comando seguente, dopo l'esecuzione dell'exploit:

python_import -f malicious_code.py


Ti consigliamo anche