Сетевые атаки
Перехват TCP-сеанса (TCP Session Hijacking)
Перехват 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. Если пакет, посланный В будет содержать другой номер подтверждения, синхронизация соединения будет нарушена.
Итак, злоумышленник хочет выполнить с машины C перехват установленного между машинами A и B сеанса telnet. В начале он прослушивает telnet-трафик (TCP порт 23) между A и B. Когда злоумышленник решает, что А аутентифицировалось сервисом telnet машины В, он десинхронизирует соединение. Для этого, генерируется пакет с исходящим адресом машины А и номером подтверждения, который ожидает машина В. Естественно, что этот пакет принимается машиной В. Кроме рассинхронизации TCP-сеанса, этот пакет позволяет злоумышленнику выполнить команду в telnet-сеансе, установленном машиной А. Фактически, этот пакет может нести данные (флаг PSH = 1).
На рисунке 10 продемонстрирована атака:
Рис.10: Перехват TCP-сеанса
Машина B принимает команду, посланную машиной C, и подтверждает это посылкой пакета машине А с выставленным флагом ACK. Теперь, если А пошлет пакет машине В, он будет отвергнут, поскольку у него будет номер последовательности отличный от ожидаемого машиной B.
Возникает проблема, называемая "штормом подтверждений" (Ack Storm). Генерируется множество ACK-пакетов. Это происходит, когда А шлет TCP-пакет с неверным номером последовательности (ведь A десинхронизирована), B отвергает его и шлет машине A ACK-пакет с ожидаемым номером последовательности. Машина А тоже отвергает этот пакет, ведь она тоже ожидает другой номер последовательности. И в свою очередь отправляет ACK-пакет машине B ...
Проблема шторма подтверждений может быть решена, если злоумышленник использует технологию подмены ARP-информации (ARP Spoofing). В этом случае, машина С изменит ARP-кэш машины B таким образом, чтобы IP-адресу машины А соответствовал MAC-адрес машины С. Эти технологии реализованы в программе hunt .
[ Назад ]
[ Содержание ]
[ Вперед ]
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|