« poprzedni punkt 


5. Porywanie sesji (hijacking)

Porwanie połączenia TCP jest aktywnym atakiem polegającym na przechwyceniu części sesji użytkownika oraz wysyłaniu danych w jego imieniu. Hijacking możliwy jest w przypadku protokołów, które nie zabezpieczają transmisji poprzez szyfrowanie. Przesyłane czystym tekstem dane mogą zostać podsłuchane, przechwycone, a atakujący ma możliwość podania się za którąkolwiek ze stron i wysłania dowolnych informacji. Hijacking wykorzystuje istniejące połączenie zainicjowane przez użytkownika. Porywanie sesji ma więc sens jedynie po fazie autentykacji, kiedy połączenie wykorzystuje hasło. Dzięki temu atakujący zyskuje możliwość wykonania poleceń na serwerze z uprawnieniami zalogowanego klienta. Jest to kradzież zaufania serwera do klienta.

Aby móc porwać sesję atakujący musi znajdować się na drodze pomiędzy klientem i serwerem. Najprostszy przypadek to komputery znajdujące się w tym samym segmencie sieci LAN w jednej domenie kolizyjnej. W takim przypadku atakujący widzi wszystkie pakiety bez stosowania dodatkowych technik.

Umiejscowienie maszyny atakującego w środku połączenia tak by mógł routować pakiety pomiędzy klientem i serwerem jest wykrywalne za pomocą programu traceroute o ile atakujący nie przedsięwziął specjalnych środków. Komputer pośredniczący aby pozostać niewidzialny dla programu traceroute nie może:

Ubocznym działaniem tego ataku - o ile atakujący nie jest w stanie usuwać z łącza pakietów generowanych przez klienta oraz serwer - jest burza pakietów ACK. Liczba ich będzie rosnąć lawinowo w zależności od tego, jak dużo danych klient będzie chciał wymienić z serwerem. Dzieje się tak ze wspomnianego wcześniej powodu - każdy pakiet odrzucony przez którąś ze stron z powodu błędnego numeru sekwencyjnego powoduje wygenerowanie pakietu ACK zawierającego informację o spodziewanym numerze sekwencyjnym. Ponieważ jednak druga strona po otrzymaniu takiego pakietu stwierdzi, że nie zawiera on oczekiwanego numeru sekwencyjnego sama wygeneruje pakiet ACK tworząc zamkniętą pętle. Pętla ta nie jest jednak nieskończona bowiem nie przenoszące informacji segmenty po zagubieniu nie są retransmitowane. Dlatego jeśli któryś z pakietów ACK zagubi się (TCP w warstwie sieciowej wykorzystuje zawodny protokół IP), to nie zostanie on ponownie stworzony. Pętle pakietów ACK mają tendencje do samoregulacji. Im więcej pakietów ACK będzie krążyło po sieci tym więcej z nich będzie gubionych z powodu przeciążenia sieci.

Jeśli połączenie będzie znajdować się w stanie rozsynchronizowanym i nie będzie atakującego do potwierdzania odbioru pakietów, to dane będą retransmitowane powodując burzę pakietów. Brak odpowiedzi doprowadzi też w końcu do zerwania połączenia.

Wczesna desynchronizacja - metoda ta polega na przerwaniu połączenia we wczesnej fazie i stworzeniu drugiego z innym numerem sekwencyjnym. Przebieg procesu pokazano poniżej.

  1. Atakujący nasłuchuje pakietów SYN/ACK zaadresowanych od serwera do klienta.
  2. Po wykryciu takiego pakietu atakujący wysyła do serwera pakiet RST zamykając połączenia. Następnie generuje pakiet SYN ze sfałszowanym adresem źródła wskazującym na klienta oraz takim samym numerem portu.
  3. Serwer zamknie połączenie od klienta, po czym po otrzymaniu pakietu SYN otworzy na tym samym porcie drugie połączenie wysyłając do klienta pakiet SYN/ACK.
  4. Atakujący wykryje pakiet SYN/ACK od serwera i potwierdzi go wysyłając pakiet ACK. W tym momencie serwer przejdzie do stanu stabilnego.

Desynchronizacja za pomocą pustych danych - w tej metodzie atakujący wysyła duże ilości danych do serwera oraz klienta. Dane te nie powinny być widoczne w warstwie aplikacji i jednocześnie powodować rozsynchronizowanie połączenia. Poniżej pokazano scenariusz ataku w przypadku połączenia przy pomocy protokołu telnet

  1. Atakujący przygląda się sesji bez ingerowania w nią.
  2. W wybranym momencie atakujący wysyła dużą ilość pustych danych do serwera. W przypadku sesji telnet mogą to być bajty zawierające sekwencje poleceń IAC NOP IAC NOP . Każde dwa bajty IAC NOP zostaną zinterpretowane przez demona telnet i usunięte ze strumienia bez widocznych dla użytkownika efektów. Po przetworzeniu przesłanych przez atakującego danych serwer posiadać będzie numer potwierdzenia różny od tego, którego spodziewa się klient.
  3. Atakujący postępuje w ten sam sposób z klientem.

Obrona przed atakiem

Atak na sesję TCP wywołuje skutki uboczne, które mogą posłużyć do jego wykrycia:

Najlepszym chyba jednak sposobem sposobem zabezpieczenia się przed porywaniem sesji TCP jest korzystanie z protokołów kryptograficznych szyfrujących całość komunikacji lub używanie programów tunelujących nie szyfrowane protokoły. Do kategorii tej należą między innymi wirtualne sieci prywatne oraz różnego rodzaju programy oferujące usługę tunelowaną.


« poprzedni punkt