il pacchetto inviato è diverso dal pacchetto ricevuto


0

Uso il socket raw per creare pacchetti TCP, con particolare attenzione al numero di sequenza e ai flag TCP (SYN, ACK)

Ho usato una macchina S per inviare un pacchetto tcp ACK (flag ACK è impostato su 1) e un'altra macchina R per riceverlo, queste due macchine sono in sottoreti diverse, tutte nella mia scuola

nel frattempo, ho usato tcpdump per acquisire i pacchetti.

Succedono cose strane! Sulla macchina S, il pacchetto acquisito è come previsto, è un pacchetto ACK, tuttavia sulla macchina ricevente R, il pacchetto diventa un pacchetto SYN e il numero di sequenza viene modificato, il numero di sequenza è 1 più piccolo del previsto e il valore ack_seq diventa 0!

cosa c'è di sbagliato in questo? la mia ipotesi è che il router / firewall abbia modificato il pacchetto ACK in un pacchetto SYN perché non vede mai uno scambio SYN SYN / ACK prima dell'ACK? E 'possibile o no?

i due pacchetti acquisiti sono:

https://docs.google.com/file/d/0B09y_TWqTtwlVnpuUlNwUmM1YUE/edit?usp=sharing https://docs.google.com/file/d/0B09y_TWqTtwlTXhjUms4ZnlkMVE/edit?usp=sharing


1
Questo è decisamente strano, ed è improbabile che il firewall tenti di impostare correttamente la sessione TCP, dovrebbe fare il contrario e scartare il pacchetto come fuori dallo stato. Puoi caricare le acquisizioni da qualche parte?
Paul

si, li aggiungo!
user138126

Le catture non sono disponibili pubblicamente da qui. Potresti renderli disponibili al pubblico?
Kokx

Li ho resi pubblici
user138126

Il pacchetto 2 è interessante, giusto? Viene emesso come ACK, ma è presente un SYN all'estremità del server. Ma cosa sono i pacchetti 1 e 3? Sembra che ci sia già una sessione in esecuzione con quelle porte?
Paul

Risposte:


0

La mia ipotesi sarebbe che tu abbia i numeri di sequenza sbagliati sul tuo pacchetto ACK. Quindi il firewall nel mezzo vede il tuo pacchetto ACK con la sequenza sbagliata e decide che SYN-ACK non te l'ha mai fatto, quindi ritrasmette il pacchetto SYN originale al server per farlo inviare nuovamente a SYN-ACK, che lo fa.

Se guardi la tua traccia in Wireshark, trae la stessa conclusione: non vede il tuo ACK come parte della sessione originale, ma una nuova sessione che usa le stesse porte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.