Перехоплення TCP-сеансу дозволяє зловмисникові перенаправляти потік TCP. Далі, кракер може подолати парольний захист (як в telnet або ftp). Необхідність прослуховування (sniffing) обмежує застосовність даного типу атаки до фізичного сегмента мережі цільового хоста. Перед розглядом деталей цієї атаки, давайте розберемо деякі базові принципи протоколу TCP.
Ми не будемо детально розглядати протокол, а сконцентруємося на моментах, необхідних для розуміння атаки. Тема TCP містить різні поля:
порт джерела і порт призначення, що ідентифікують з'єднання;
номер послідовності, що ідентифікує кожен посланий байт;
номер підтвердження, що відповідає останньому отриманому байту;
різні прапори, в тому числі:
SYN, використовується для синхронізації при встановленні сеансу;
ACK, прапор підтвердження TCP-сегмента;
PSH, вказує на необхідність передачі даних з додатком.
На малюнку 8 представлений процес встановлення TCP-з'єднання (механізм потрійного квитирования):
Рис.8: Механізм потрійного квитирования
В даному прикладі машина A ініціювала TCP-з'єднання з машиною B.
Малюнок 9 демонструє процес передачі даних в протоколі TCP:
Номер послідовності буде змінюватися відповідно до кількості надісланих байт. На малюнку він представлений як Seq. номер підтвердження перебувати після прапорів PSH і ACK, а кількість надісланих байт зазначено в дужках.
Вже згадана атака порушує синхронізацію з'єднання на обох кінцях, що дозволяє виконати перехоплення сеансу. Синхронізація порушується, коли порядковий номер посилається машиною А байта, відрізняється від порядкового номера байта, який має отримати машина В. І навпаки.
У прикладі на малюнку 9 після першого кроку, коли B отримує пакет, машина A чекає відповідного пакета з номером підтвердження x + 60. Якщо пакет, посланий В міститиме інший номер підтвердження, синхронізація з'єднання буде порушена.
На малюнку 10 продемонстрована атака:
Рис.10: Перехоплення TCP-сеансу
Машина B приймає команду, надіслану машиною C, і підтверджує це посилкою пакета машині А з виставленим прапором ACK. Тепер, якщо А пошле пакет машині У, він буде відкинутий, оскільки у нього буде номер послідовності відмінний від очікуваного машиною B.
Виникає проблема, звана "штормом підтверджень" (Ack Storm). Генерується безліч ACK-пакетів. Це відбувається, коли А шле TCP-пакет з неправильним номером послідовності (адже A десинхронизированном), B відкидає його і шле машині A ACK-пакет з очікуваним номером послідовності. Машина А теж відкидає цей пакет, адже вона теж чекає інший номер послідовності. І в свою чергу відправляє ACK-пакет машині B.
Якщо Ви не знайшли що шукали, то рекомендую скористатися пошуком по сайту: