OSINT tools — theHarvester, Maltego CE, Recon-ng e SpiderFoot

// obiettivi di apprendimento
Comprendere cos’è un packet analyzer, come funziona la cattura in modalità promiscua e cosa sono i file .pcap
Orientarsi nell’interfaccia Wireshark: Packet List, Packet Details, Packet Bytes e Statistics
Scrivere filtri di cattura (BPF) e filtri di visualizzazione (display filter) per isolare il traffico di interesse
Analizzare praticamente pacchetti DNS, TCP handshake e richieste HTTP identificando campi e anomalie
🎬
Video
Wireshark dall’installazione all’analisi live del traffico
Guarda →
📄
Slides
Cheatsheet filtri Wireshark BPF e display
Scarica →
🧪
Lab
Lab: Cattura traffico HTTP vs HTTPS e analisi TCP handshake
GitHub →
🔗
Risorse
Documentazione Wireshark e pcap di esempio
Vedi →

1. Cos’è Wireshark e come funziona la cattura

Wireshark è il packet analyzer (o sniffer) più usato al mondo. Permette di catturare il traffico di rete in tempo reale e di analizzarlo frame per frame, ricostruendo ogni protocollo — dal livello fisico fino all’applicazione. È uno strumento fondamentale sia per la difesa (troubleshooting, monitoraggio) che per l’attacco (intercettazione credenziali su HTTP, analisi di malware).

// definizione formale
Packet analyzer (sniffer) — software che intercetta e registra il traffico di rete passante per un’interfaccia. Wireshark usa la libreria libpcap (Linux/macOS) o WinPcap/Npcap (Windows) per accedere direttamente al driver della scheda di rete. I dati vengono salvati in formato .pcap o .pcapng (più moderno, supporta metadati e annotazioni).

1.1 Modalità di cattura

MODALITÀ NORMALE

La scheda di rete accetta solo i pacchetti destinati a lei (MAC unicast, broadcast, multicast del suo gruppo). È la modalità predefinita. Wireshark cattura solo il traffico del tuo host.

MODALITÀ PROMISCUA ⚠

La scheda accetta tutti i frame sul segmento, indipendentemente dal MAC destinazione. Wireshark vede il traffico di altri host (in reti hub o se sei sulla stessa VLAN del target). Richiede permessi di amministratore. In reti switched non basta da sola.

// nelle reti moderne switched

Su una rete con switch, ogni porta riceve solo il suo traffico unicast. Per analizzare il traffico di altri host, si usa: port mirroring/SPAN (lo switch copia il traffico su una porta di monitor), un TAP di rete (dispositivo hardware passivo), o un attacco ARP poisoning (che forza il traffico attraverso il tuo host — etico solo in lab).

1.2 Il formato .pcap e .pcapng

Un file .pcap è una sequenza di pacchetti catturati con un header globale (versione, link type, snap length). Ogni pacchetto ha un header (timestamp, lunghezza originale, lunghezza catturata) seguito dai byte grezzi del frame.

📁
.pcap
Formato classico libpcap. Compatibile con tutti i tool (tcpdump, Scapy, Suricata, Zeek)
📁
.pcapng
Next Generation. Supporta più interfacce, commenti, metadati. Default Wireshark moderno
🖥️
tcpdump
Alternativa CLI a Wireshark. Cattura su server remoto, analisi con Wireshark dopo

2. L’interfaccia di Wireshark

L’interfaccia di Wireshark è divisa in tre pannelli principali e una toolbar di controllo:

TOOLBAR WIRESHARK
▶ Start
■ Stop
↺ Restart
tcp.port == 443 and ip.addr == 93.184.216.34
← Display Filter
NO.
TIME
SOURCE
DEST.
PROTO
INFO
1
0.000000
192.168.1.10
8.8.8.8
DNS
Standard query A profgiagnotti.it
2
0.021430
8.8.8.8
192.168.1.10
DNS
Standard query response A 93.184.216.34
3
0.022800
192.168.1.10
93.184.216.34
TCP
54132 → 443 [SYN] Seq=0 Win=65535 Len=0
▲ PACKET LIST PANEL
▼ PACKET DETAILS PANEL (albero protocolli)
▼ Frame 1: 74 bytes on wire
▼ Ethernet II, Src: 00:1a:2b:3c:4d:5e
Destination: 00:50:56:c0:00:08
Source: 00:1a:2b:3c:4d:5e
Type: IPv4 (0x0800)
▼ Internet Protocol Version 4
Src: 192.168.1.10
Dst: 8.8.8.8
TTL: 64
▼ User Datagram Protocol
Src Port: 54321 → Dst Port: 53
▶ Domain Name System (query)
▼ PACKET BYTES PANEL (hex + ascii)
0000 00 50 56 c0 00 08 00 1a 2b 3c 4d 5e 08 00 45 00 .PV…..+<M^..E.
0010 00 3c 1a 2b 40 00 40 11 f3 a0 c0 a8 01 0a 08 08 .<.+@.@………
0020 08 08 d4 31 00 35 00 28 1e 3f 12 34 01 00 00 01 …1.5.(.?.4….
0030 00 00 00 00 00 00 0c 70 72 6f 66 67 69 61 67 6e …….profgiagn
0040 6f 74 74 69 02 69 74 00 00 01 00 01 otti.it….

Schema rappresentativo dell’interfaccia Wireshark con un pacchetto DNS reale analizzato

3. I filtri — il cuore dell’analisi

In una cattura reale possono esserci decine di migliaia di pacchetti al secondo. Senza filtri non si riesce a trovare nulla. Wireshark ha due tipi di filtri, con sintassi completamente diversa:

FILTRI DI CATTURA (BPF)

Applicati prima della cattura. Wireshark scarta i pacchetti che non corrispondono al filtro — non entrano neanche nel file .pcap. Usa la sintassi Berkeley Packet Filter (BPF). Più efficienti: riducono overhead CPU e dimensione file.

# Solo traffico porta 80
tcp port 80

# Solo traffico da/per un host
host 192.168.1.10

# Solo DNS
udp port 53

# Escluidi traffico broadcast ARP
not arp and not broadcast

# HTTP e HTTPS
tcp port 80 or tcp port 443
FILTRI DI VISUALIZZAZIONE (Display Filter)

Applicati dopo la cattura, sulla vista. I pacchetti restano nel file ma vengono nascosti se non corrispondono. Sintassi più ricca: puoi filtrare su qualsiasi campo di qualsiasi protocollo. Barra in cima all’interfaccia.

# Solo DNS
dns

# Solo HTTP (non HTTPS)
http

# Solo richieste GET
http.request.method == "GET"

# TCP con flag SYN
tcp.flags.syn == 1

# Pacchetti da IP specifico
ip.src == 192.168.1.10

# Errori TCP (RST)
tcp.flags.reset == 1

3.1 Filtri di visualizzazione avanzati

FiltroCosa mostraCaso d’uso
dns.qry.name contains "google"Query DNS con “google” nel nomeTracciare richieste verso un dominio
http.response.code == 404Risposte HTTP 404Directory brute-force detection
tcp.analysis.retransmissionRitrasmissioni TCPProblemi di rete, jitter
http.cookie contains "session"Richieste HTTP con cookie di sessioneSession hijacking analysis
ip.addr == 10.0.0.1Tutto il traffico da/per quell’IPAnalisi di un host specifico
tcp.port == 4444Traffico su porta 4444Rilevare reverse shell Metasploit
frame.time_relative > 5Pacchetti dopo 5 secondi dall’inizioAnalisi temporale
!(arp or dns or icmp)Tutto tranne ARP, DNS, ICMPEliminare rumore di fondo

3.2 Operatori nei filtri

CONFRONTO
== uguale
!= diverso
> maggiore
< minore
contains contiene
matches regex
LOGICI
and / &&
or / ||
not / !
xor
( ) parentesi
SHORTCUT UTILI
Ctrl+F → find
Ctrl+G → go to pkt
Ctrl+↓ → next match
Ctrl+E → edit packet
Ctrl+M → mark packet

4. Analisi pratica: riconoscere i protocolli

4.1 Analizzare una query DNS

Filtra con dns. Ogni risoluzione è composta da almeno due pacchetti: query (tipo A, dal client) e response (con l’IP, dal server).

// Espandendo il nodo DNS nel Packet Details di una query:
▼ Domain Name System (query)
Transaction ID: 0x1234     ← identifica la coppia query/risposta
Flags: 0x0100 (Standard query, RD=1)  ← RD=Recursion Desired
Questions: 1
▼ Queries
Name: profgiagnotti.it
Type: A (1)     ← richiede IPv4
Class: IN (1)   ← Internet class
// Risposta DNS (stesso Transaction ID 0x1234):
▼ Domain Name System (response)
Transaction ID: 0x1234   ← collega alla query
Flags: 0x8180 (QR=1 response, RA=1) ← RA=Recursion Available
▼ Answers
Name: profgiagnotti.it
Type: A | TTL: 3600 | Address: 93.184.216.34
// red team insight

In un attacco DNS spoofing, vedresti due risposte per la stessa query (Transaction ID uguale): quella legittima e quella falsa dell’attaccante, che arriva prima. Wireshark segnalerebbe con colori diversi o duplicate answer. In un attacco di DNS tunneling (usato da malware per esfiltrare dati), vedresti query DNS anomale con sottodomini molto lunghi o ricchi di base64.

4.2 Analizzare il TCP Three-Way Handshake

Filtra con tcp.flags.syn == 1 or tcp.flags.fin == 1 or tcp.flags.reset == 1 per vedere solo i pacchetti di controllo della connessione.

#SourceDest.FlagsSeqAckSignificato
1192.168.1.10:5413293.184.216.34:443SYN0 (ISN)Client richiede connessione
293.184.216.34:443192.168.1.10:54132SYN-ACK0 (ISN server)1Server accetta, conferma
3192.168.1.10:5413293.184.216.34:443ACK11Client conferma → connesso
// nota pratica

Un RST (Reset) al posto del SYN-ACK significa che la porta è chiusa o bloccata da firewall. Un grande numero di SYN senza completare l’handshake è segnale di un SYN flood attack (DDoS). Un RST in mezzo a una connessione attiva può indicare un firewall stateful che ha resettato la sessione, o un tool come hping3 in un test.

4.3 Follow TCP Stream — ricostruire la conversazione

La funzione più potente di Wireshark per l’analisi applicativa. Click destro su un pacchetto TCP → Follow → TCP Stream. Wireshark ricostruisce la conversazione completa, mostrando dati inviati (rosso) e ricevuti (blu).

GET /login HTTP/1.1 Host: test.example.com User-Agent: Mozilla/5.0 Cookie:
HTTP/1.1 200 OK Content-Type: text/html Set-Cookie: session=a3f7c9e1; HttpOnly
POST /login HTTP/1.1 Content-Type: application/x-www-form-urlencoded Content-Length: 35username=admin&password=password123
⚠ PERCHÉ HTTPS È FONDAMENTALE

L’esempio sopra mostra cosa si vede usando Follow TCP Stream su traffico HTTP in chiaro: username e password perfettamente leggibili. Su HTTPS, invece di testo, vedresti solo dati cifrati incomprensibili. Questo è il motivo per cui HTTP è considerato insicuro per qualsiasi dato sensibile.

5. Funzionalità avanzate utili

5.1 Statistics — panoramica del traffico

Menu → StatisticsCosa mostraQuando usarlo
Protocol HierarchyDistribuzione del traffico per protocollo (%)Capire quali protocolli dominano la cattura
ConversationsElenco flussi TCP/UDP con byte e pacchettiTrovare host che trasmettono molto
EndpointsLista IP con traffico totaleIdentificare host anomali / C&C
IO GraphsGrafico traffico nel tempoVisualizzare spike (DDoS, download)
TCP Stream Graph → RTTRound-trip time nel tempoDiagnosi latenza
HTTP → RequestsLista URI richiestiWeb recon, directory enumeration

5.2 Esportare dati

FILE → EXPORT OBJECTS

Estrae automaticamente file trasferiti via HTTP, SMB, FTP, TFTP. Se catturi traffico HTTP con un file binario (malware, immagine, documento), puoi estrarlo direttamente.

FILE → EXPORT SPECIFIED PACKETS

Salva solo i pacchetti filtrati in un nuovo .pcap. Utile per creare file di esempio per analisi successive o per condividere solo il traffico rilevante.

5.3 tshark — Wireshark da riga di comando

Per catturare su server remoti (senza GUI) o per automatizzare l’analisi in script:

# Cattura su interfaccia eth0, salva in file
tshark -i eth0 -w /tmp/capture.pcap

# Leggi file esistente, applica filtro display
tshark -r capture.pcap -Y "http.request.method == POST"

# Estrai campi specifici
tshark -r capture.pcap -T fields -e ip.src -e http.host -e http.request.uri

# Cattura solo DNS e stampa nome query
tshark -i eth0 -Y dns -T fields -e dns.qry.name

# Statistiche protocolli
tshark -r capture.pcap -qz io,phs
📌 Riepilogo — Punti chiave
  • Wireshark cattura pacchetti tramite libpcap/Npcap. La modalità promiscua cattura tutto il traffico sul segmento, non solo il tuo
  • I filtri di cattura (BPF) riducono il traffico acquisito; i filtri di visualizzazione filtrano la vista su pacchetti già catturati — sintassi diversa, usi complementari
  • Follow TCP Stream ricostruisce la conversazione applicativa: su HTTP in chiaro espone credenziali e cookie; su HTTPS mostra solo dati cifrati
  • Il TCP handshake visibile in Wireshark (SYN/SYN-ACK/ACK) permette di calcolare RTT, rilevare RST anomali, identificare port scan e SYN flood
  • tshark è la versione CLI: indispensabile su server remoti, per automazione e per script di analisi su larga scala

Lascia un commento