Cosa fa#
Descrive la struttura a livelli dei dati di rete — dal frame Ethernet al protocollo applicativo — e come tshark/Wireshark li numerano e raggruppano in stream.
TL;DR#
[ FRAME ETHERNET (L2) ]
└─ [ PACCHETTO IP (L3) ]
└─ [ SEGMENTO TCP (L4) ]
└─ [ Dati applicativi (L7) — HTTP, DNS, LLMNR, ecc. ]Ogni riga di tshark è un frame. Dentro al frame c'è tutta la matrioska.
Definizioni#
- Frame — unità di dati del livello 2 (Ethernet). Viaggia tra due MAC. Contiene header L2 (MAC sorgente/destinazione, tipo) + payload (pacchetto IP) + trailer (FCS).
- Pacchetto — unità di dati del livello 3 (IP). Viaggia tra due indirizzi IP. Contiene header IP (IP sorgente/destinazione, TTL, protocol) + payload (segmento TCP/UDP).
- Segmento — unità di dati del livello 4 (TCP). Viaggia tra due socket (IP:porta ↔ IP:porta). Contiene header TCP (porte, seq/ack, flag) + dati applicativi.
Attenzione: è sbagliato dire "pacchetto TCP" — il termine corretto è segmento TCP. Per un esame o una nota tecnica, usare i termini giusti.
La NIC#
La NIC (Network Interface Card) è la scheda di rete: il pezzo hardware/driver che manda e riceve bit sul cavo (o antenna Wi-Fi). È lei che vede i frame a livello 2 e li passa allo stack IP del sistema operativo.
[FILO / ARIA] ⇄ [NIC] ⇄ [STACK IP (kernel)] ⇄ [tshark / Wireshark]Quando leggi un pcap, stai osservando la sequenza di frame che la NIC ha passato allo stack.
I 7 livelli OSI — cosa conta per il Blue Team#
| Livello | Nome | Cosa guardi in analisi |
|---|---|---|
| L1 | Fisico | Mezzo, velocità, errori fisici — di solito fuori dal pcap |
| L2 | Data Link | MAC, ARP, VLAN → topologia locale, spoofing, broadcast |
| L3 | Rete | IP, TTL, routing → chi parla con chi, da dove a dove |
| L4 | Trasporto | Porte, flag TCP, connessioni → servizi, scansioni, sessioni |
| L5 | Sessione | Gestione logica di sessioni applicative (ID sessione, login) |
| L6 | Presentazione | TLS, encoding, compressione — payload spesso cifrato |
| L7 | Applicazione | HTTP, DNS, LLMNR, SMB → contenuto reale, comandi, C2 |
L7 è dove trovi il contenuto che ti interessa: la colonna "Info" di tshark mostra sempre una descrizione del protocollo L7.
La matrioska OSI#
[ FILO / ARIA ]
│
▼
+-------------------------------+
| FRAME ETHERNET (L2) |
| MAC DST | MAC SRC | TYPE ... |
+-------------------------------+
| PACCHETTO IP (L3) |
| IP HDR | IP PAYLOAD |
+-------------------------------+
│
▼
+---------------------+
| SEGMENTO TCP (L4) |
| TCP HDR | DATI |
+---------------------+
│
▼
+-----------------+
| HTTP / DNS / |
| LLMNR / ecc. | (L7)
+-----------------+Quando in tshark espandi un frame con -V:
- "Frame N" → tutta la scatola esterna (vista dalla NIC)
- "Ethernet II" → header L2 (MAC sorgente/destinazione)
- "Internet Protocol Version 4" → header IP (pacchetto)
- "Transmission Control Protocol" → header TCP (segmento)
- "HTTP / DNS / LLMNR..." → livello applicativo
Esempio concreto — riga tshark e frame completo#
No. Time Source Destination Protocol Length Info
108 4.325517 10.2.28.88 224.0.0.252 LLMNR 75 Standard query ...Questo corrisponde a un frame visto dalla NIC:
FRAME 108 (75 byte sul filo)
+------------------------------------------------------------------+
| ETHERNET HEADER (L2) |
| +-----------------+-----------------+-------------------------+ |
| | MAC DST (6B) | MAC SRC (6B) | EtherType (2B) | |
| +-----------------+-----------------+-------------------------+ |
| es: 01:00:5e:00:00:fc 3c:15:c2:aa:bb:cc 0x0800 (IPv4) |
+------------------------------------------------------------------+
| PACCHETTO IP (L3) |
| +-------------------------------------------------------------+ |
| | IP HEADER (20+ B) | |
| | - Versione, TTL, Proto=17(UDP), IP sorg=10.2.28.88 | |
| | - IP dest=224.0.0.252 | |
| +-------------------------------------------------------------+ |
| | PAYLOAD IP = SEGMENTO UDP (L4) | |
+------------------------------------------------------------------+
| SEGMENTO UDP (L4) |
| +----------------+----------------+--------------------------+ |
| | Porta sorgente | Porta dest | Lunghezza + Checksum | |
| | es: 5355 | 5355 (LLMNR) | | |
| +----------------+----------------+--------------------------+ |
| | DATI UDP = MESSAGGIO LLMNR (L7) | |
+------------------------------------------------------------------+
| MESSAGGIO LLMNR (L7) |
| +-------------------------------------------------------------+ |
| | "Standard query 0x97f5 ANY DESKTOP-TEYQ2NR" | |
| | - ID transazione 0x97f5 | |
| | - Tipo: query ANY | |
| | - Nome: DESKTOP-TEYQ2NR | |
| +-------------------------------------------------------------+ |
+------------------------------------------------------------------+-V è la matrioska esplosa — -T fields -e è la matrioska selettiva#
-V apre tutto il frame livello per livello — è utile per esplorare e capire cosa c'è dentro:
tshark -r file.pcap -Y "frame.number == 108" -V-T fields -e campo è la stessa cosa ma selettiva — quando sai già il nome del campo, estrai solo quello:
tshark -r file.pcap -Y "frame.number == 108" \
-T fields -e ip.src -e ip.dst -e udp.dstportFlusso pratico: usi -V per esplorare → trovi il nome del campo → usi -T fields -e per estrarlo in modo pulito.
Stream — conversazioni logiche#
Uno stream è una conversazione logica continua tra due endpoint a un certo livello dello stack.
Ogni livello ha i propri stream, indipendenti tra loro:
| Livello | Stream | Endpoint | Come identificarlo |
|---|---|---|---|
| L2 | Ethernet conversation | MAC A ↔ MAC B | [Stream index: N] in Ethernet |
| L3 | IP conversation | IP A ↔ IP B | [Stream index: N] in IP |
| L4 | TCP stream | IP A:porta A ↔ IP B:porta B | tcp.stream == N |
Un singolo frame può avere tre stream index diversi — non hanno relazione numerica tra loro.
Frame 43:
[Stream index: 2] ← Ethernet conversation (MAC↔MAC)
[Stream index: 25] ← IP conversation (IP↔IP)
[Stream index: 40] ← TCP stream (connessione specifica)In pratica userai quasi sempre tcp.stream (L4).
TCP stream — come funziona#
Una connessione TCP non è un singolo frame — è una serie di frame:
Frame 40 → TCP stream 7 (SYN)
Frame 41 → TCP stream 7 (SYN/ACK)
Frame 42 → TCP stream 7 (ACK)
Frame 43 → TCP stream 7 (HTTP GET /...)
Frame 44 → TCP stream 7 (HTTP risposta, parte 1)
Frame 45 → TCP stream 7 (HTTP risposta, parte 2)Trovare il tcp.stream di un frame:
tshark -r file.pcap -Y "frame.number == 4093" \
-T fields -e frame.number -e tcp.stream
# output: 4093 40Seguire tutta la conversazione:
tshark -r file.pcap -q -z "follow,tcp,ascii,40"Scenario Reale#
Analisi pcap MTA 2026-02-28 (NetSupport RAT):
- Il beaconing verso
45.131.214.85:443era tutto neltcp.stream == 40 - L'hostname
DESKTOP-TEYQ2NRè emerso filtrando NBNS (L7) - Lo username
brolfè emerso filtrando Kerberos (L7,kerberos.CNameString) - IP e MAC della vittima sono stati letti dal frame via
-Vsu frame specifici
Collegato a#
- network — protocolli di rete, stack OSI
- tshark — comandi per navigare frame, stream, campi
- wireshark — GUI equivalente


