Problemi di sicurezza con TCP che si aggrappano a pacchetti out-of-order?

2

Considera quanto segue ...

Alice e Bob stanno comunicando tramite TCP. Attualmente, il prossimo numero di sequenza TCP previsto è 1000. Charlie, fingendo di essere Alice, invia un pacchetto TCP contraffatto a Bob con un numero di sequenza di 1003. Il computer di Bob tiene questo pacchetto pensando che sia arrivato fuori servizio. Nel frattempo, Alice continua a inviare pacchetti a Bob, sequenziati come 1000, 1001 e 1002. Ora il computer di Bob elabora il pacchetto TCP contraffatto pensando che sia il prossimo in sequenza.

In questo scenario, supponendo che la mia comprensione sia corretta, sembra che l'attaccante non abbia bisogno di predire esattamente il prossimo numero di sequenza, ma piuttosto deve solo indovinare il numero di una sequenza che è maggiore o uguale alla sequenza corrente , ma anche abbastanza vicino al numero di sequenza in modo che non scada ... come sicuramente non manterrà per sempre il pacchetto out-order.

Questo solleva le seguenti domande ...

1) La mia comprensione dello scenario che ho descritto è corretta?

2) Che cosa determina la durata di conservazione di un pacchetto fuori ordine, mentre attende i pacchetti precedentemente inviati?

3) Cosa succederebbe alla sessione TCP quando Alice alla fine manda un pacchetto con la sequenza TCP 1003, dato che il pacchetto spoofed di Charlie è già stato processato?

    
posta ansichart 02.05.2014 - 02:44
fonte

3 risposte

2

Questo è limitato dalla dimensione della finestra TCP .

Non basta indovinare qualsiasi numero maggiore del numero di sequenza; deve essere compreso tra il numero di sequenza e (numero di sequenza + dimensioni della finestra).

Non so quanto sia più facile in pratica forzare brutemente un numero di sequenza. "Frammenti sovrapposti" è stato la causa di alcune vulnerabilità storiche, ma credo che tutti i moderni stack TCP abbiano buone difese.

    
risposta data 06.05.2014 - 09:42
fonte
0

In che modo l'attaccante (Charlie) vede il traffico per conoscere il numero di sequenza? Se hanno la capacità di monitorare il traffico tra A & B non ci si può aspettare nulla di traffico non sicuro da.

In tutti gli altri casi link

    
risposta data 06.05.2014 - 03:51
fonte
0
  1. Il segmento è valido solo se la condizione @ paj28 è vera.

  2. Dipende dal timer di riassemblaggio dello stack, che può essere calcolato in base a parametri variabili come RTT.

  3. Se non c'è stato il timeout del riassemblaggio, dipende dal criterio di riassemblaggio dello stack: il segmento potrebbe essere sostituito con quello nuovo (ad esempio lo stack Linux) o il primo segmento potrebbe essere mantenuto (ad esempio lo stack di Windows).

L'attaccante non deve conoscere esattamente il numero di sequenza, ma non significa che controlli il flusso di dati poiché il riassemblaggio dipende dall'implementazione. Deve sapere a quale sistema invia segmenti.

Ptacek and Newsham paper sezione 5.4 è una buona spiegazione .

    
risposta data 11.04.2016 - 14:18
fonte

Leggi altre domande sui tag