networking

Sniffing di rete: come catturare traffico, credenziali e pacchetti in pentest

Sniffing di rete: come catturare traffico, credenziali e pacchetti in pentest

Sniffing di rete: come catturare traffico, credenziali e pacchetti in pentest

  • Pubblicato il 2026-03-30
  • Tempo di lettura: 10 min

Ogni pacchetto che attraversa una rete può essere letto. Il packet sniffing è la tecnica che lo rende possibile — e capire come funziona è una delle skill fondamentali del pentesting, sia per raccogliere intelligence che per analizzare il traffico dopo un attacco man in the middle. In questo articolo vai dall’interfaccia in modalità promiscua fino all’analisi avanzata con Wireshark e tshark, con filtri pronti all’uso per ogni scenario reale.


Cos’è lo sniffing di rete #

Lo sniffing (o packet sniffing, network sniffing) è la pratica di catturare e analizzare i pacchetti che transitano su una rete. Ogni dato trasmesso in rete — credenziali, sessioni, email, file — è composto da pacchetti. Chi riesce a intercettarli li può leggere, registrare, e analizzare.

Uno sniffer opera a livello del driver di rete, sotto il normale stack applicativo: riceve i frame Ethernet o Wi-Fi prima che il sistema operativo filtr quelli non destinati a lui. Questo è possibile grazie a due modalità operative speciali delle interfacce di rete.

Modalità promiscua (Promiscuous Mode) #

Normalmente, una scheda di rete scarta i frame Ethernet il cui MAC di destinazione non è il proprio. In modalità promiscua accetta tutti i frame che arrivano sull’interfaccia, indipendentemente dall’indirizzo MAC di destinazione.

bash
# Abilitare promiscuous mode su Linux
ip link set eth0 promisc on

# Verifica
ip link show eth0 | grep PROMISC

# Wireshark e tcpdump l'abilitano automaticamente all'avvio

Limitazione chiave: in una rete switchata moderna, la modalità promiscua da sola non basta. Lo switch invia ogni frame solo alla porta di destinazione — non vedi il traffico degli altri host. Per questo, lo sniffing passivo su reti switchate richiede un prerequisito: essere nel path del traffico.

Modalità monitor (Monitor Mode) — solo Wi-Fi #

Sulle interfacce wireless, la monitor mode è l’equivalente della promiscuous mode ma per l’aria. L’interfaccia cattura tutti i frame 802.11 nel range radio — management, control, e data — senza essere associata a nessuna rete.

bash
# Con airmon-ng
airmon-ng start wlan0
# Crea wlan0mon in monitor mode

# Con iw
ip link set wlan0 down
iw dev wlan0 set type monitor
ip link set wlan0 up

# Verifica
iwconfig wlan0mon   # deve mostrare "Mode: Monitor"

In monitor mode vedi tutto: beacon degli AP, probe request dei client, handshake WPA2, deauthentication — anche traffico di reti a cui non sei connesso. Indispensabile per il wireless pentesting. Vedi la guida completa su Wi-Fi 802.11 per gli attacchi specifici.


Sniffing su reti switchate: i prerequisiti #

Questa è la parte che molti articoli saltano, e che invece è critica per capire quando e come lo sniffing funziona davvero.

Hub vs switch: il problema di base #

Sulle reti con hub (oggi praticamente scomparsi), ogni frame viene inviato a tutte le porte — lo sniffing passivo funziona senza prerequisiti. Sulle reti con switch, il traffico è isolato per porta grazie alla CAM table. Serve un bypass.

Metodo 1: MITM come prerequisito #

Il modo più comune per sniffare su reti switchate è posizionarsi nel path del traffico tramite man in the middle. Le tecniche principali:

ARP spoofing — Avvelena la ARP cache delle vittime, reindirizzando il traffico attraverso l’attaccante. Con IP forwarding attivo, il traffico continua a fluire e viene sniffato in transito. Vedi ARP: cos’è e come sfruttarlo.

VLAN hopping / trunking — Su switch con DTP attivo, negoziare un trunk e ricevere traffico di tutte le VLAN. Vedi VLAN e 802.1Q.

STP manipulation — Diventare Root Bridge per redirigere il traffico inter-switch attraverso se stessi. Vedi STP/RSTP.

Metodo 2: CAM table overflow #

Saturare la CAM table dello switch con migliaia di MAC address falsi. Quando la tabella è piena, lo switch non riesce più a fare forwarding intelligente e inonda tutte le porte con ogni frame (comportamento da hub):

bash
# Con macof (dsniff suite)
macof -i eth0

# Poi sniffare il traffico in arrivo
tcpdump -i eth0 -nn -w cam_overflow_capture.pcap

Tecnica rumorosa e rilevabile. Utile in lab per capire il principio.

Metodo 3: SPAN port / TAP fisico #

In ambienti enterprise, i network admin configurano porte SPAN (Switched Port Analyzer) sugli switch: mirroring di tutto il traffico verso una porta dedicata dove è collegato un sniffer. In fase di post-compromise, trovare accesso fisico o logico a una SPAN port è una manna.

Un TAP (Test Access Point) fisico è un dispositivo inline che copia passivamente tutto il traffico senza introdurre latenza o modifiche. Invisibile e ideale per analisi forensi.


tcpdump: sniffing da riga di comando #

tcpdump è il tool di sniffing standard su Linux. Leggero, scriptabile, presente su quasi ogni sistema Unix e molti router/firewall embedded.

Sintassi base e flag essenziali #

bash
# Capture su interfaccia specifica
tcpdump -i eth0

# Senza risoluzione di nomi (più veloce, output più pulito)
tcpdump -i eth0 -nn

# Con MAC address visibili
tcpdump -i eth0 -e

# Verbose (mostra TTL, flag, ecc.)
tcpdump -i eth0 -v

# Salva su file .pcap
tcpdump -i eth0 -w capture.pcap

# Legge da file
tcpdump -r capture.pcap

# Limita numero di pacchetti
tcpdump -i eth0 -c 1000

Filtri BPF (Berkeley Packet Filter) per il pentesting #

I filtri BPF sono il cuore di tcpdump. Impararli significa poter isolare esattamente il traffico che cerchi:

bash
# Solo traffico da/verso un host
tcpdump -i eth0 -nn host 192.168.1.10

# Solo traffico tra due host
tcpdump -i eth0 -nn host 192.168.1.10 and host 192.168.1.1

# Solo traffico TCP
tcpdump -i eth0 -nn tcp

# Solo una porta specifica
tcpdump -i eth0 -nn port 80

# Porta di destinazione specifica
tcpdump -i eth0 -nn dst port 443

# Solo SYN packets (inizio connessioni)
tcpdump -i eth0 -nn 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0'

# Solo pacchetti con payload (no ACK vuoti)
tcpdump -i eth0 -nn 'tcp and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

# Catturare credenziali FTP
tcpdump -i eth0 -nn -A 'tcp port 21 and (tcp[tcpflags] & tcp-push != 0)'

# Traffico DNS
tcpdump -i eth0 -nn udp port 53

# Traffico ARP
tcpdump -i eth0 -nn arp

# Traffico ICMP
tcpdump -i eth0 -nn icmp

# Escludere traffico SSH (per non catturare la propria sessione)
tcpdump -i eth0 -nn not port 22

Ricette tcpdump per scenari reali #

bash
# Sniffare credenziali HTTP in transito
tcpdump -i eth0 -A -nn 'tcp port 80 and (tcp[tcpflags] & tcp-push != 0)' | \
  grep -E '(POST|password|passwd|login|user)'

# Estrarre URL da traffico HTTP
tcpdump -i eth0 -A -nn 'tcp port 80' | grep "GET\|POST\|Host:"

# Catturare handshake TLS (per analisi offline)
tcpdump -i eth0 -nn 'tcp port 443 and (tcp[tcpflags] & tcp-syn != 0)'

# Monitorare nuove connessioni in tempo reale
tcpdump -i eth0 -nn 'tcp[tcpflags] = 0x02'   # Solo SYN

# Analisi ARP per rilevare spoofing
tcpdump -i eth0 -nn arp | awk '/ARP Reply/{print}'

# Catturare tutto e salvare rotando i file ogni 100MB
tcpdump -i eth0 -w capture_%Y%m%d_%H%M%S.pcap -C 100

Wireshark: analisi visuale del traffico #

Wireshark è il tool di analisi del traffico di rete più usato al mondo. Dove tcpdump cattura e filtra, Wireshark permette di dissezionare ogni pacchetto in profondità, seguire flussi TCP, estrarre file, e decriptare traffico con le chiavi disponibili.

Filtri di cattura vs filtri di visualizzazione #

Wireshark distingue due tipi di filtro:

Capture filters (stesso BPF di tcpdump, applicati in cattura):

text
host 192.168.1.10
tcp port 80
not port 22

Display filters (più potenti, applicati sulla cattura esistente):

text
ip.addr == 192.168.1.10
tcp.port == 443
http.request.method == "POST"

Filtri di visualizzazione essenziali per il pentesting #

text
# HTTP
http
http.request
http.request.method == "POST"
http.response.code == 200
http contains "password"
http.cookie

# HTTPS/TLS
tls
tls.handshake
tls.alert

# DNS
dns
dns.flags.response == 0     # Solo query
dns.qry.type == 1           # Solo A records
dns.flags.rcode == 3        # NXDOMAIN

# ARP
arp
arp.opcode == 1             # ARP Request
arp.opcode == 2             # ARP Reply
arp.duplicate-address-detected   # Potenziale ARP spoofing

# ICMP
icmp
icmp.type == 8              # Echo request (ping)

# TCP
tcp.flags.syn == 1 && tcp.flags.ack == 0   # SYN scan
tcp.flags.reset == 1                        # RST
tcp.analysis.retransmission                 # Ritrasmissioni

# Credenziali FTP
ftp.request.command == "PASS"

# SMTP
smtp contains "AUTH"

# Credenziali in chiaro generiche
frame contains "password"
frame contains "passwd"
frame contains "Authorization"

Follow TCP Stream: ricostruire conversazioni #

Clic destro su un pacchetto TCP → Follow → TCP Stream. Wireshark ricostruisce l’intera conversazione ASCII, mostrando richieste e risposte in sequenza. Essenziale per leggere credenziali HTTP, comandi FTP, sessioni Telnet.

Estrazione di file dalla cattura #

Wireshark può estrarre file trasferiti via HTTP, FTP, SMB da una cattura:

text
File → Export Objects → HTTP/FTP/SMB → seleziona i file da estrarre

Utile per recuperare credenziali, documenti, immagini trasferiti su protocolli non cifrati.

Decriptare traffico HTTPS con le chiavi di sessione #

Se si dispone del file con le chiavi TLS (SSLKEYLOGFILE), Wireshark può decriptare il traffico HTTPS in post-analisi:

bash
# Impostare la variabile prima di avviare il browser
SSLKEYLOGFILE=~/ssl_keys.log chromium &

# In Wireshark: Edit → Preferences → Protocols → TLS
# Pre-Master-Secret log file → seleziona ~/ssl_keys.log

Combinato con un MITM su una sessione HTTPS, il traffico appare in chiaro nella cattura. Per i dettagli sulla cifratura TLS e come viene attaccata, vedi TLS/SSL.


tshark: Wireshark da riga di comando #

tshark è la versione CLI di Wireshark — stessa potenza dei filtri, integrabile in script e pipeline.

bash
# Cattura base
tshark -i eth0

# Filtro di cattura
tshark -i eth0 -f "tcp port 80"

# Filtro di visualizzazione
tshark -i eth0 -Y "http.request.method == POST"

# Output strutturato con campi specifici
tshark -i eth0 -Y "http" -T fields \
  -e ip.src \
  -e ip.dst \
  -e http.request.method \
  -e http.request.uri \
  -e http.file_data

# Estrarre tutte le credenziali HTTP POST
tshark -r capture.pcap -Y "http.request.method == POST" \
  -T fields -e http.request.uri -e http.file_data 2>/dev/null

# Estrarre DNS queries
tshark -r capture.pcap -Y "dns.flags.response == 0" \
  -T fields -e ip.src -e dns.qry.name

# Statistiche protocolli
tshark -r capture.pcap -qz io,phs

# Top 10 conversazioni TCP per volume
tshark -r capture.pcap -qz conv,tcp | head -20

Sniffing wireless: catturare l’aria #

Il traffico Wi-Fi è trasmesso via radio — in monitor mode, tutto ciò che è nell’aria è catturabile. Questo include reti cifrate e non.

bash
# Mettere l'interfaccia in monitor mode
airmon-ng check kill    # Kill processi che interferiscono
airmon-ng start wlan0   # Crea wlan0mon

# Cattura su tutti i canali
airodump-ng wlan0mon

# Cattura su canale specifico, filtrando per BSSID
airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w wifi_capture wlan0mon

# Analisi in Wireshark
# Filtri specifici per 802.11:
# wlan.fc.type == 0      Management frames
# wlan.fc.type == 2      Data frames
# wlan.fc.type_subtype == 8  Beacon
# wlan.fc.type_subtype == 12 Deauthentication
# eapol                  WPA2 handshake

Per reti WPA2-PSK, catturare il four-way handshake e attaccarlo offline è un vettore classico. Vedi la guida su Wi-Fi 802.11 per tutti i dettagli.


Sniffing in un engagement di pentesting #

Fase di reconnaissance passiva #

Prima di fare qualsiasi cosa attiva, ascoltare il traffico di broadcast e multicast per mappare la rete:

bash
# Avviare tcpdump e aspettare 60-120 secondi
tcpdump -i eth0 -nn -w passive_recon.pcap &
sleep 120 && kill %1

# Analizzare cosa c'è
tshark -r passive_recon.pcap -qz io,phs   # Protocolli presenti

# Identificare host attivi da ARP
tshark -r passive_recon.pcap -Y "arp.opcode == 1" \
  -T fields -e arp.src.proto_ipv4 -e arp.src.hw_mac | sort -u

# Identificare gateway da traffico DHCP
tshark -r passive_recon.pcap -Y "bootp.option.type == 3" \
  -T fields -e bootp.option.value

# Identificare protocolli attivi
tshark -r passive_recon.pcap -Y "ospf or eigrp or hsrp or vrrp"

Post-MITM: catturare le credenziali #

Dopo aver posizionato il MITM (via ARP spoofing, HSRP takeover, o Evil Twin), catturare il traffico in transito:

bash
# Cattura con rotazione file ogni 10 minuti
tcpdump -i eth0 -nn -w mitm_$(date +%H%M).pcap -G 600 -Z root

# Analisi in tempo reale delle credenziali
tshark -i eth0 -Y "http.request.method == POST or ftp.request.command == PASS \
  or smtp contains 'AUTH' or pop contains 'PASS'" \
  -T fields -e ip.src -e ip.dst -e http.file_data -e ftp.request.arg

Analisi offline: cosa cercare in una .pcap #

bash
# 1. Panoramica del traffico
tshark -r capture.pcap -qz io,phs

# 2. Tutti gli host che hanno comunicato
tshark -r capture.pcap -qz endpoints,ip

# 3. Credenziali HTTP
tshark -r capture.pcap -Y "http.request.method == POST" \
  -T fields -e ip.src -e http.host -e http.request.uri -e http.file_data

# 4. Query DNS (mappa la rete)
tshark -r capture.pcap -Y "dns.flags.response == 0" \
  -T fields -e ip.src -e dns.qry.name | sort | uniq -c | sort -rn

# 5. Sessioni aperte (potenziale session hijacking)
tshark -r capture.pcap -Y "http.cookie" \
  -T fields -e ip.src -e ip.dst -e http.host -e http.cookie

# 6. Email in chiaro
tshark -r capture.pcap -Y "smtp or pop or imap" -x | grep -A5 "AUTH\|PASS\|USER"

# 7. Certificati TLS (identificare i server)
tshark -r capture.pcap -Y "tls.handshake.type == 11" \
  -T fields -e x509sat.uTF8String

Sniffing e protocolli: cosa si vede su ogni layer #

Layer OSIProtocolloCosa si catturaTool consigliato
L2ARPMapping IP/MAC, spoofing anomalietcpdump, arpwatch
L2LLDP/CDPTopologia switch, versioni firmwareWireshark
L3ICMPPing, traceroute, errori di retetcpdump
L3OSPF/EIGRPTopologia di routing completaWireshark
L3HSRP/VRRPGateway ridondanti, spoofingtcpdump
L4TCPHandshake, session state, payloadWireshark
L4UDPDNS, DHCP, NTP, SNMPtcpdump
L7HTTPCredenziali, cookie, sessioniWireshark, tshark
L7FTP/TelnetUsername e password in chiarotcpdump -A
L7SMTP/POP3/IMAPEmail, credenzialiWireshark
L7SNMPCommunity string, config dispositivitcpdump
L7DNSQuery, risposte, spoofingtshark

Strumenti di sniffing avanzati #

Zeek (ex Bro) #

Framework di analisi del traffico usato principalmente dai defender, ma potente anche per estrarre intelligence da grandi catture:

bash
# Analisi di una pcap
zeek -r capture.pcap

# Genera log strutturati: conn.log, dns.log, http.log, ssl.log, files.log
cat http.log | zeek-cut uri method host
cat dns.log | zeek-cut query answers

NetworkMiner #

Analisi forense di catture pcap su Windows: estrae automaticamente file, immagini, credenziali, e certificate dai pacchetti. Ottimo per analisi post-engagement.

p0f #

Fingerprinting passivo degli OS basato sul comportamento del traffico TCP (TTL, window size, flag):

bash
p0f -i eth0 -o p0f_results.log

# Output tipico:
# 192.168.1.10 - Linux 4.x/5.x, no NAT
# 192.168.1.20 - Windows 10/2019 Server

Nessun pacchetto inviato — puro sniffing passivo.

Scapy per analisi personalizzata #

python
from scapy.all import *

# Leggi una pcap e cerca credenziali HTTP
pkts = rdpcap("capture.pcap")

for pkt in pkts:
    if pkt.haslayer(Raw):
        payload = pkt[Raw].load.decode('utf-8', errors='ignore')
        if 'password' in payload.lower() or 'passwd' in payload.lower():
            print(f"[CRED] {pkt[IP].src}{pkt[IP].dst}")
            print(payload[:200])

Sniffing legittimo vs illegale: il confine #

Lo sniffing senza autorizzazione è reato. In Italia, intercettare comunicazioni non dirette a sé è punito dagli articoli 617-bis e 617-ter del Codice Penale.

Nel contesto del pentesting:

  • Autorizzato: su reti di test, con scope firmato che include esplicitamente l’intercettazione del traffico
  • Non autorizzato: su reti di terzi, su reti aziendali senza consenso scritto, su Wi-Fi pubblici

Anche in ambienti aziendali con contratto di pentest, verificare che lo scope includa esplicitamente le tecniche di sniffing prima di procedere.


Detection dello sniffing: come si vede #

Rilevare interfacce in modalità promiscua #

bash
# Linux — lista interfacce in promisc
ip link show | grep PROMISC

# Con ifconfig (legacy)
ifconfig | grep PROMISC

Network scanner per interfacce promiscue #

Tool come Sentinel e script Nmap possono inviare probe specifici per rilevare host in modalità promiscua sulla rete:

bash
nmap --script broadcast-listener -e eth0

Rilevare sniffing wireless #

bash
# Cercare interfacce in monitor mode vicine
airodump-ng wlan0mon   # Vedresti beacon da interfacce in monitor mode

# IDS wireless come WIDS rilevano interface in monitor mode

FAQ sullo Sniffing #

Cos’è lo sniffing di rete e a cosa serve? Lo sniffing (packet sniffing o network sniffing) è la cattura e l’analisi dei pacchetti che transitano su una rete. In sicurezza offensiva serve per intercettare credenziali, sessioni, e dati su protocolli non cifrati. In difesa serve per il network monitoring, troubleshooting, e la forensica.

Qual è la differenza tra tcpdump e Wireshark? tcpdump è un tool da riga di comando — ideale per cattura rapida, scripting e ambienti senza GUI. Wireshark ha un’interfaccia grafica che permette analisi approfondita, follow stream TCP, estrazione di file, e decrittazione TLS. Spesso si usa tcpdump per catturare e Wireshark per analizzare.

Lo sniffing funziona su reti switchate? Non in modo passivo. Sulle reti con switch moderni, il traffico è isolato per porta. Per sniffare su reti switchate serve un prerequisito: essere nel path del traffico tramite MITM (ARP spoofing, HSRP takeover), accesso a una SPAN port, o CAM table overflow.

Cosa si può vedere sniffando il traffico di rete? Su protocolli non cifrati: credenziali in chiaro (HTTP, FTP, Telnet, SMTP, LDAP), cookie di sessione, email, file trasferiti. Su protocolli cifrati (HTTPS, SSH): metadati (chi parla con chi, frequenza, volumi), ma non il contenuto — a meno di avere le chiavi di sessione o eseguire SSL stripping via MITM.

Cos’è la modalità promiscua di una scheda di rete? Normalmente una scheda di rete scarta i frame non destinati al proprio MAC address. In modalità promiscua, accetta tutti i frame che arrivano sull’interfaccia, permettendo la cattura di traffico non direttamente indirizzato alla macchina.


Conclusione sullo sniffing #

Lo sniffing è allo stesso tempo la tecnica più semplice e più informativa del pentesting di rete. Anche solo ascoltare passivamente per 60 secondi rivela la topologia della rete, i protocolli in uso, i dispositivi attivi, e — su reti mal configurate — le credenziali in chiaro.

La chiave è capire quando lo sniffing passivo basta (Wi-Fi aperte, hub, SPAN port) e quando serve prima un MITM (reti switchate moderne). Una volta nel path, tcpdump cattura e tshark/Wireshark analizzano — con i filtri giusti, trovare credenziali o sessioni attive è questione di secondi.

Approfondisci le tecniche correlate:

Riferimento: Wireshark User’s Guide


Hai traffico interno che non dovresti poter leggere? Un assessment di rete risponde a questa domanda con dati reali: hackita.it/servizi

HackITA è gratuito. Tienilo in vita: hackita.it/supporto

#packet-sniffing #wireshark

DIVENTA PARTE DELL’ÉLITE DELL’HACKING ETICO.

Accedi a risorse avanzate, lab esclusivi e strategie usate dai veri professionisti della cybersecurity.

Non sono un robot

Iscrivendoti accetti di ricevere la newsletter di HACKITA. Ti puoi disiscrivere in qualsiasi momento.