Tutorials

TCP Control Flags

I TCP Control Flags sono bit di controllo contenuti nell'header TCP che regolano il comportamento della connessione tra due dispositivi. Servono a definire lo stato della sessione, la gestione del tra

#networking

🔹 Introduzione ai TCP Control Flags

I TCP Control Flags sono bit di controllo contenuti nell'header TCP che regolano il comportamento della connessione tra due dispositivi. Servono a definire lo stato della sessione, la gestione del traffico e il flusso dei dati.

L'header TCP include 9 flag di controllo, ciascuno con una funzione specifica.


🔹 Elenco dei TCP Control Flags

1️⃣ URG (Urgent) - Bit 5

  • Indica che i dati nel pacchetto devono essere trattati come urgenti.
  • Il campo Urgent Pointer nell'header TCP specifica la posizione dei dati urgenti.
  • Utilizzato raramente in applicazioni moderne.
  • Esempio d'uso: Trasmissione di dati critici in tempo reale, come interruzioni in telnet.

2️⃣ ACK (Acknowledgment) - Bit 4

  • Conferma la ricezione di dati.
  • Il campo Acknowledgment Number indica il prossimo byte atteso.
  • Presente in quasi tutti i pacchetti TCP tranne il primo SYN.
  • Esempio d'uso: Un client invia un pacchetto con ACK=1 per confermare la ricezione dei dati dal server.

3️⃣ PSH (Push) - Bit 3

  • Richiede la consegna immediata dei dati al livello applicativo senza buffering.
  • Evita ritardi di elaborazione e buffering da parte del sistema operativo.
  • Esempio d'uso: Chat in tempo reale, come messaggi istantanei o VOIP.

4️⃣ RST (Reset) - Bit 2

  • Termina immediatamente una connessione anomala.
  • Può essere usato per respingere connessioni non valide o interrompere sessioni esistenti.
  • Esempio d'uso: Se un host riceve un pacchetto per una connessione non esistente, può rispondere con un pacchetto con RST=1.
  • Attacco correlato: TCP Reset Attack → Un attaccante può inviare pacchetti RST per interrompere connessioni legittime.

5️⃣ SYN (Synchronize) - Bit 1

  • Utilizzato per iniziare una connessione TCP (3-way handshake).
  • Il primo pacchetto di una connessione contiene SYN=1 e un numero di sequenza iniziale.
  • Esempio d'uso: Un client che vuole connettersi a un server HTTP invia un pacchetto con SYN=1 alla porta 80.
  • Attacco correlato: SYN Flood Attack → Un attaccante invia molte richieste SYN senza completare il handshake, esaurendo le risorse del server.

6️⃣ FIN (Finish) - Bit 0

  • Indica la chiusura di una connessione TCP.
  • Segna il termine della trasmissione dati da una parte della comunicazione.
  • Esempio d'uso: Dopo aver completato la trasmissione di un file, un client invia un pacchetto con FIN=1 per chiudere la connessione.

🔹 Flag combinati e scenari d’uso

Alcuni flag vengono spesso usati insieme per definire specifici stati della connessione.

FlagsSignificato
SYNInizio di una connessione
SYN + ACKRisposta del server alla richiesta di connessione
FIN + ACKChiusura della connessione
RSTReset della connessione
PSH + ACKInvio immediato di dati
URG + PSHInvio immediato di dati urgenti

🔹 Analisi con Wireshark

1. Filtrare i pacchetti TCP:

bash
tcp.flags.syn == 1
→ Mostra tutti i pacchetti che iniziano una connessione TCP. 2. Individuare un attacco SYN Flood:
bash
tcp.flags.syn == 1 && tcp.flags.ack == 0
→ Mostra pacchetti SYN senza risposte ACK (segno di flood attack). 3. Identificare reset anomali:
bash
tcp.flags.rst == 1
→ Mostra tutti i pacchetti che interrompono connessioni.


🔹 Attacchi basati sui TCP Flags

  • SYN Flood: Saturazione delle connessioni con pacchetti SYN.
  • RST Injection: Invio di pacchetti RST per terminare sessioni legittime.
  • TCP Hijacking: Manipolazione del flag ACK per dirottare una sessione.

🔹 Conclusione

I TCP Control Flags sono fondamentali nel pentesting e nella cybersecurity. Conoscere il loro funzionamento aiuta a:

  • Analizzare il traffico di rete con Wireshark o tcpdump.
  • Identificare anomalie e attacchi basati su TCP.
  • Proteggere le connessioni con firewall e IDS/IPS.

🚀 Prossimo passo: Genera pacchetti TCP personalizzati con Scapy per testare il comportamento dei flag!