GNU/Linux >> Linux Esercitazione >  >> Linux

Attacchi TCP:previsione del numero di sequenza TCP e attacchi di ripristino TCP

Sebbene il protocollo TCP sia un protocollo orientato alla connessione e affidabile, esistono comunque varie scappatoie che possono essere sfruttate. Queste scappatoie sono per lo più spiegate in termini di attacchi.

Nel precedente articolo sulla serie di attacchi TCP/IP, abbiamo spiegato l'avvelenamento da cache ARP.

Questo articolo spiega i due attacchi seguenti:

  1.  Attacco di previsione della sequenza TCP
  2.  Attacchi di ripristino del TCP

Una panoramica del TCP

Prima di iniziare con le spiegazioni degli attacchi. Sviluppiamo una comprensione di base di come funziona TCP.

Un'intestazione TCP ha il seguente aspetto:

La spiegazione seguente spiega come viene stabilita una connessione tra due host a livello TCP. Questo è noto come stretta di mano a tre vie. Questa stretta di mano è necessaria prima che qualsiasi tipo di dato possa essere inviato in ciascuna direzione. Una volta stabilita la connessione, i dati possono fluire in modo bidirezionale con ogni pacchetto contenente il numero di sequenza del byte iniziale dei dati che contiene e il riconoscimento dei dati ricevuti.

  • Supponiamo che ci siano due host (A e B) che vogliono comunicare tra loro. Supponiamo che l'host A avvii la comunicazione. Ora dal punto di vista TCP, l'host A invia un pacchetto SYN all'host B.
  • Un pacchetto SYN è un pacchetto TCP con flag SYN attivato.
  • In questo pacchetto è anche menzionato il numero di sequenza iniziale (che è un valore generato dal TCP dell'host A), la porta di origine, la porta di destinazione ecc.
  • Quando questo pacchetto viene ricevuto al livello TCP dell'host B, questo host risponde con un pacchetto TCP con flag SYN e ACK ON, numero di sequenza iniziale e altre informazioni.
  • Quando l'host A riceve questo pacchetto, controlla alcune informazioni come il flag SYN, il numero di riconoscimento (che dovrebbe essere il numero di sequenza iniziale dell'host A + 1) ecc. per verificare che si tratti di un pacchetto previsto dall'host B.
  • In risposta, l'host A invia un pacchetto con il flag ACK attivato e il numero di riconoscimento impostato sul numero di sequenza iniziale dell'host B + 1.

Quindi vediamo che i numeri di sequenza svolgono un ruolo importante nella comunicazione TCP. Un numero di sequenza è un numero che TCP associa al byte iniziale di dati in un particolare pacchetto. In questo modo il TCP ricevente tiene traccia dei dati ricevuti e li riconosce di conseguenza. Il numero di conferma è sempre il successivo numero di sequenza previsto.

Attacco di previsione sequenza TCP

Supponiamo che l'Host A e l'Host B stiano comunicando tra loro. Ora, diciamo che un attaccante che si trova nel mezzo è in qualche modo in grado di monitorare i pacchetti tra A e B.

Vediamo cosa fa l'attaccante :

  • L'attaccante vuole attaccare l'Host A.
  • Inonda l'Host B di nuove richieste provocando un attacco Denial of Service per impedire all'Host B di comunicare con A.
  • Ora, l'attaccante può prevedere il numero di sequenza del pacchetto che A si aspetta da B.
  • L'attaccante prepara questo tipo di pacchetto e lo invia all'Host A.
  • Dato che si tratta di un falso imballato, l'host A pensa che provenga da B.
  • Ora, questo pacchetto può essere un pacchetto che termina la connessione o richiede all'host A di eseguire alcuni comandi/script dannosi, ecc.

Quindi in questo modo una connessione può essere dirottata da un utente malintenzionato.

Un altro modo potrebbe essere la previsione di ISN (numero di sequenza iniziale).

Vediamo un estratto da RFC-793 :

Quando vengono create nuove connessioni, viene utilizzato un generatore di numeri di sequenza iniziali (ISN) che seleziona un nuovo ISN a 32 bit. Il generatore è vincolato a un clock a 32 bit (possibilmente fittizio) il cui bit di ordine basso viene incrementato all'incirca ogni 4 microsecondi. Pertanto, l'ISN cicli circa ogni 4,55 ore. Poiché assumiamo che i segmenti rimarranno nella rete non più della durata massima del segmento (MSL) e che l'MSL è inferiore a 4,55 ore, possiamo ragionevolmente presumere che gli ISN saranno unici.

Gli stack BSD TCP/IP deviano dal meccanismo di cui sopra. Gli stack BSD TCP/IP aumentano il numero di sequenza di 128.000 ogni secondo e di 64.000 per ogni nuova connessione TCP. Questo come puoi immaginare è più prevedibile e quindi facilmente sfruttabile.

Ripristino attacchi TCP

Questo attacco è abbastanza semplice da capire una volta che l'attacco di cui sopra ti è chiaro. In questo attacco :

  • Una volta che l'attaccante è in grado di dirottare una sessione TCP (come detto sopra), questo attacco può essere lanciato.
  • L'attaccante invia i pacchetti con il flag RST attivato sia ad A che a B oa qualsiasi host.
  • Dato che sia A che B non sanno che un utente malintenzionato ha inviato questi pacchetti, li trattano normalmente.
  • Dato che sono pacchetti di ripristino, la connessione tra A e B viene interrotta.

Quindi possiamo vedere che gli attacchi di ripristino TCP mirano a terminare una connessione TCP valida tra due host.


Linux
  1. Come trovare il numero di file in una directory e sottodirectory

  2. Linux:condividi file tra host Linux e guest Windows?

  3. Bash .hushlogin, mantieni l'ora dell'ultimo accesso e l'host?

  4. Come uccidere una singola connessione TCP in Linux?

  5. Unix socket vs host TCP/IP:porta

Espressione sequenza Bash (intervallo)

File host Linux:come modificarlo e utilizzarlo?

Imposta una cartella condivisa tra host KVM e guest

Linux:trova il numero di file in una directory e sottodirectory

Come reimpostare una password di amministratore host Windows dimenticata

Come aggiungere la chiave SSH al codice VS e connettersi a un host