Desynchronizacja protokołu TCP stanowi kluczową technikę wykorzystywaną w atakach przejmowania sesji, takich jak TCP Hijacking. Polega ona na celowym wprowadzaniu rozbieżności w sekwencjach numerów pakietów pomiędzy końcowymi punktami komunikacji, co umożliwia atakującym przejęcie kontroli nad transmisją lub zakłócenie przepływu danych. W niniejszym raporcie przeanalizowano mechanizmy desynchronizacji, metody wykrywania, współczesne techniki ataków oraz strategie łagodzenia ich skutków, opierając się na najnowszych badaniach i standardach sieciowych.

Podstawy protokołu TCP i znaczenie sekwencji numerów

Sekwencje numerów w TCP

Protokół TCP (Transmission Control Protocol) opiera się na mechanizmie numerów sekwencyjnych (SEQs) i potwierdzeń (ACKs), które gwarantują niezawodną transmisję danych. Każdy segment TCP zawiera numer sekwencyjny identyfikujący pozycję danych w strumieniu oraz numer potwierdzenia wskazujący następny oczekiwany bajt. Na przykład, jeśli klient wysyła segment z SEQ=1000 i długością 100 bajtów, serwer odpowiada ACK=1100, potwierdzając odbiór danych.

Okno odbiorcze (RCV.WND) definiuje zakres akceptowanych numerów sekwencji, co zapobiega przeciążeniom. Segmenty spoza tego zakresu są ignorowane lub buforowane. Ta logika stanowi fundament mechanizmów desynchronizacji, gdyż atakujący mogą manipulować SEQ/ACK, aby wypchnąć legalne pakiety poza okno.

Mechanizmy desynchronizacji TCP

Wczesna desynchronizacja (SYN-based)

Atakujący nasłuchuje wymiany SYN-ACK podczas nawiązywania połączenia. Wykrywszy pakiet SYN-ACK od serwera, wysyła fałszywy segment RST, zamykający połączenie po stronie serwera, oraz nowe SYN z zmodyfikowanym SEQ. Serwer tworzy nowe połączenie z innym SEQ, desynchronizując je z klientem. Metoda ta była podstawą ataku Mitnicka z 1994 r., gdzie Kevin Mitnick wykorzystał zaufanie między hostami A i B do przejęcia sesji.

Desynchronizacja poprzez iniekcję pustych danych

Atakujący wstrzykuje wiele segmentów z danymi o zerowej długości (np. flaga PSH bez payloadu), sztucznie zwiększając SEQ serwera. Gdy klient kontynuuje komunikację z oryginalnym SEQ, jego pakiety trafiają poza okno odbiorcze serwera, powodując odrzucenie. W efekcie serwer akceptuje tylko pakiety atakującego, który zna nowy SEQ.

Manipulacja Path MTU i fragmentacja IP

Według badań z 2025 r., atakujący może wysłać sfałszowany komunikat ICMP „Packet Too Big”, zmuszając serwer do zmniejszenia MTU i fragmentacji segmentów TCP. Fragmenty zawierające nagłówek TCP trafiają do pierwszego fragmentu, podczas gdy atakujący wstrzykuje fałszywe drugie fragmenty z payloadem. Klient łączy fragmenty, akceptując zmodyfikowane dane. RFC 791 dopuszcza minimalny fragment 68 bajtów, co utrudnia wykrycie ataku.

Współczesne techniki ataków desynchronizacyjnych

Ataki poza ścieżką (Off-Path)

Atakujący nie muszą przechwytywać ruchu, by zgadywać SEQ. Wykorzystują statystyczne właściwości generatorów ISN (Initial Sequence Numbers). Historycznie, implementacje BSD używały liniowych generatorów ISN, co umożliwiało przewidywanie z wysoką dokładnością. RFC 6528 wprowadziło algorytm kryptograficzny:

ISN = M + F(localip, localport, remoteip, remoteport, secretkey) 

gdzie M to licznik mikrosekundowy, a F() to funkcja pseudolosowa. Mimo to, ataki typu „przesunięcie okna” (ang. window shift) wciąż są możliwe poprzez zgadywanie SEQ w zakresie RCV.WND.

Pause-based Desync w warstwie aplikacji

Technika opisana przez PortSwigger w 2019 r. polega na wstrzyknięciu niekompletnych żądań HTTP, które powodują desynchronizację między frontendem a backendem serwera. Atakujący dzieli żądanie na wiele pakietów TCP, celowo opóźniając ostatni. Serwer przetwarza część żądania, pozostawiając socket w stanie oczekiwania, co umożliwia wstrzyknięcie złośliwego payloadu.

Wykrywanie desynchronizacji

Anomalie w przepływie ACK

Nagły wzrost liczby retransmisji lub segmentów „duplicate ACK” może wskazywać na desynchronizację. Narzędzia takie jak Wireshark wykrywają rozbieżności między SEQ a ACK w strumieniu.

Monitorowanie ruchu ICMP

Nadmiarowe komunikaty ICMP „Fragmentation Needed” sugerują próby manipulacji MTU. Implementacje zgodne z RFC 4821 powinny logować takie zdarzenia i weryfikować źródło poprzez sprawdzanie TTL w pakietach ICMP.

Strategie przeciwdziałania

Uwierzytelnianie segmentów TCP

RFC 5925 wprowadza opcję TCP-AO (Authentication Option), która dodaje HMAC do każdego segmentu. Algorytm np. AES-GCM chroni przed modyfikacją SEQ/ACK.

Wzmocniona kontrola fragmentacji

Blokowanie niepotrzebnej fragmentacji poprzez wymuszenie DF (Don’t Fragment) i ścisłe egzekwowanie Path MTU Discovery ogranicza ryzyko ataków opartych na ICMP.

Autor
Adam M.
Pasjonat cyberbezpieczeństwa z 20-letnim stażem w branży IT. Swoją przygodę rozpoczynał od legendarnego mks_vir, a dziś odpowiada za ochronę systemów w renomowanej polskiej instytucji finansowej. Specjalizuje się w analizie zagrożeń i wdrażaniu polityk bezpieczeństwa. Ceni prywatność, dlatego o szczegółach mówi niewiele – woli, aby przemawiały za niego publikacje i wyniki pracy.