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:

  1. Source IP
  2. Destination IP
  3. Source port
  4. Destination port
  5. 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 extract attivo) fornisce solo il record in files.log, non il file.