La packet analysis è il cuore operativo del lavoro in un SOC: quando un IDS genera un alert o un flusso appare anomalo, l’analista scende al livello del pacchetto per capire cosa è realmente accaduto sul filo. Gli strumenti fondamentali per l’esame CBROPS sono Wireshark (analisi grafica interattiva), tcpdump (cattura da CLI) e Zeek (generazione di log di sessione strutturati).
Leggere gli header protocollari
Un pacchetto è una serie di header incapsulati. L’analista deve saperli scomporre:
| Livello | Header | Campi chiave da riconoscere |
|---|---|---|
| 2 – Data Link | Ethernet | MAC sorgente/destinazione, EtherType (0x0800 = IPv4, 0x0806 = ARP) |
| 3 – Network | IP | IP src/dst, TTL, Protocol (6=TCP, 17=UDP, 1=ICMP) |
| 4 – Transport | TCP/UDP | Porte src/dst, flag TCP, sequence/ack number |
Il campo Protocol dell’header IP dice quale header di trasporto segue: distinguere TCP da UDP a questo livello è un classico item d’esame.
Il five-tuple
Il five-tuple identifica univocamente un flusso di comunicazione ed è la base di ogni filtro:
- Source IP
- Destination IP
- Source port
- Destination port
- Protocol (TCP/UDP)
Isolare un flusso sospetto significa filtrare sul suo five-tuple. In Wireshark il click destro su un pacchetto → Follow → TCP Stream costruisce automaticamente il filtro sui cinque elementi e ricostruisce la sessione applicativa (utile per leggere HTTP in chiaro, comandi C2, credenziali esposte). Il display filter equivalente:
ip.addr==10.0.0.5 && tcp.port==443
Attenzione alla differenza fra capture filter (sintassi BPF, applicata prima della cattura: host 10.0.0.5 and port 443) e display filter (sintassi Wireshark, applicata dopo). Non sono intercambiabili.
I flag TCP
I flag governano il ciclo di vita della connessione. Riconoscerli è decisivo per capire scansioni, connessioni riuscite o rifiutate:
- SYN: apertura, richiesta di sincronizzazione (primo pacchetto dell’handshake).
- SYN, ACK: risposta del server, secondo passo del three-way handshake.
- ACK: conferma; terzo passo e presente in quasi tutti i pacchetti di dati.
- RST: reset immediato — porta chiusa, connessione rifiutata o terminazione forzata.
- FIN: chiusura ordinata (four-way termination).
- PSH/URG: consegna immediata dei dati all’applicazione.
Un SYN seguito da RST, ACK dal server indica porta chiusa; un SYN senza risposta suggerisce filtraggio (firewall/drop). Una raffica di SYN verso molte porte con RST di ritorno è la firma di un SYN scan (nmap).
Estrarre file e ricostruire sessioni
Wireshark permette di esportare oggetti dai protocolli applicativi (File → Export Objects → HTTP/SMB/FTP-DATA), ricostruendo file trasferiti a partire dai payload riassemblati dei segmenti TCP. Questo consente di recuperare un malware scaricato via HTTP o un documento esfiltrato.
Zeek: log di sessione, non pacchetti
Qui sta la distinzione concettuale più importante. Un full packet capture (PCAP) contiene ogni byte di ogni pacchetto: header e payload completi. È ad alta fedeltà ma pesante e verboso.
Zeek (ex Bro) non conserva i pacchetti: osserva il traffico e produce log di sessione strutturati, un metadato per ogni connessione. I file principali:
conn.log: una riga per flusso con five-tuple, durata, byte scambiati, stato della connessione.dns.log,http.log,ssl.log,files.log,x509.log: metadati per protocollo.
Zeek risponde alla domanda “chi ha parlato con chi, quando e quanto” in modo compatto e facilmente indicizzabile per lo hunting su lunghi periodi. Il PCAP risponde a “cosa esattamente si sono detti”, byte per byte. Sono complementari: Zeek per triage e correlazione su scala, PCAP per l’analisi forense di dettaglio quando serve il contenuto.
Trappole tipiche d’esame
- Scenario: SYN seguito da RST, ACK dal server → risposta giusta: la porta di destinazione è chiusa, non filtrata. Il filtraggio (drop) si manifesta invece con SYN senza risposta.
- Scenario: si chiede quali dati contiene un Zeek
conn.log→ risposta giusta: solo metadati di sessione (five-tuple, byte, durata), non il payload. Per il contenuto applicativo serve il full packet capture. - Scenario: identificare univocamente un flusso → risposta giusta: il five-tuple (src/dst IP, src/dst port, protocol), non il solo indirizzo IP né la sola porta.
- Scenario: filtrare la cattura prima di acquisirla → risposta giusta: usare un capture filter in sintassi BPF; i display filter Wireshark agiscono solo dopo la cattura e non riducono il volume acquisito.
- Scenario: recuperare un file scaricato via HTTP da un PCAP → risposta giusta: usare Export Objects di Wireshark, che riassembla i segmenti TCP; Zeek da solo (senza
extractattivo) fornisce solo il record infiles.log, non il file.