Quando analizzi un evento di sicurezza, il primo riflesso deve essere mappare l’artefatto al protocollo che lo trasporta. Ogni protocollo lascia tracce diverse in un packet capture o nei log NetFlow, e conoscere il layer giusto ti dice dove cercare l’indicatore.
Dai protocolli agli eventi
| Protocollo | Porta/L4 tipica | Cosa osservi | Segnale d’attacco |
|---|---|---|---|
| HTTP | TCP/80 | URI, header, method, User-Agent, status code | Payload di injection, User-Agent anomali, URI lunghe/encodate |
| HTTPS/TLS | TCP/443 | Solo metadati: SNI, certificato, JA3/JA3S, dimensioni/tempi | Certificati self-signed, SNI a dominio raro, JA3 noto malevolo |
| DNS | UDP/53 (TCP fallback) | Query name, record type, risposte | Domini DGA, query TXT/NULL abnormi, sottodomini lunghi |
| ICMP | L3 (echo, unreachable) | Type/Code, dimensione payload | Tunneling dati in echo-request oversize |
| ARP | L2 (broadcast) | Mapping IP↔MAC | Gratuitous ARP, ARP spoofing/MITM |
Il punto chiave d’esame: ARP vive a Layer 2 e non ha indirizzo IP sorgente/destinazione; un evento di poisoning si riconosce da un MAC che risponde per più IP o da gratuitous ARP non richiesti. ICMP è Layer 3 e non usa porte: attributi come Type e Code, non i port number, identificano l’anomalia.
Riconoscere i web attack
Sul traffico HTTP in chiaro (o dopo decrypt) tre famiglie dominano gli scenari:
- SQL injection — payload nell’URI o nel body con
' OR 1=1--,UNION SELECT, commenti SQL (--,#), spesso URL-encoded (%27per l’apice). Bersaglio: il database dietro l’applicazione. - Cross-Site Scripting (XSS) — iniezione di
<script>, gestorionerror=/onload=, tag<img>malformati. Bersaglio: il browser di un altro utente, non il server; è un attacco client-side che sfrutta il mancato output-encoding. - Command injection — metacaratteri di shell (
;,|,&&,`,$()) uniti a comandi comewhoami,cat /etc/passwd. Bersaglio: l’OS che esegue il comando lato server.
Distinguere la vittima è ciò che l’esame verifica: SQLi colpisce il DB, XSS il browser della vittima, command injection il sistema operativo dell’host.
Traffico cifrato: perché serve TLS inspection
Con TLS il payload applicativo è illeggibile: non vedi né l’URI né il body, quindi le firme HTTP classiche sono cieche. Hai due strade:
- TLS inspection (decrypt) — un dispositivo come Firepower/NGFW o un proxy fa da terminatore, decifra, ispeziona e ricifra. Richiede la gestione delle chiavi/certificati e ha impatto su privacy e performance.
- Analisi dei metadati — senza decifrare guardi SNI, il certificato del server, l’impronta JA3/JA3S del client/server, la cadenza e la volumetria dei flussi. È l’approccio quando il decrypt non è praticabile (pinning, compliance).
Rilevare il Command-and-Control (C2)
Un impianto compromesso deve “chiamare casa”. I due pattern d’esame:
- Beaconing — la macchina infetta contatta il C2 a intervalli regolari (es. ogni 60 s, spesso con jitter). Il tratto distintivo non è il contenuto ma la periodicità: connessioni ripetute allo stesso destinatario, di dimensione simile, a cadenza fissa. Lo riconosci in NetFlow anche se il payload è cifrato.
- DNS tunneling — i dati vengono incapsulati nei nomi DNS: sottodomini lunghi ed encodati (Base32/hex), alto volume di query verso un unico dominio autoritativo, record type insoliti (TXT, NULL, CNAME). Sfrutta il fatto che il DNS è quasi sempre permesso in uscita.
L’idea forte: il comportamento (regolarità, volumetria, entropia dei nomi) tradisce il C2 anche quando la crittografia nasconde il payload. È qui che l’analisi dei metadati e del pattern batte le firme sul contenuto.
Trappole tipiche d’esame
- Scenario: connessioni ricorrenti ogni 30 s verso lo stesso IP esterno, payload TLS illeggibile. → Risposta giusta: è beaconing C2; lo si identifica dalla periodicità/regolarità dei flussi (metadati), non serve decifrare il payload.
- Scenario: picco di query DNS con sottodomini lunghi e casuali verso un unico dominio, molti record TXT. → Risposta giusta: DNS tunneling per esfiltrazione/C2, non semplice traffico DNS legittimo.
- Scenario: nel body HTTP compare
<script>alert(1)</script>. → Risposta giusta: XSS; la vittima è il browser di un altro utente, non il server né il database. - Scenario: un host risponde in ARP per più indirizzi IP con lo stesso MAC. → Risposta giusta: ARP spoofing/MITM a Layer 2; ARP non ha IP sorgente affidabile, ci si basa sul mapping IP↔MAC.
- Scenario: serve ispezionare traffico HTTPS ma il payload è cifrato. → Risposta giusta: applicare TLS inspection/decrypt (es. Firepower/proxy) oppure, se il decrypt non è possibile, analizzare metadati (SNI, certificato, JA3).