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.