ПРОБЛЕМА. TCP-соединения
Если вы знакомы с принципами установки соединений TCP, то вам будет легче разобраться в способах реализации атак с использованием протоколов. Для надежной транспортировки данных узлы TCP устанавливают между собой сеансы соединения посредством механизма "трехстороннего рукопожатия".
Механизм подключения использует проверочные биты, имеющиеся в передающихся между узлами пакетах. Ниже приведен перечень проверочных битов с указанием назначения каждого из них.
- ACK – подтверждает успешный запрос на установку соединения.
- RST – вызывает принудительный сброс соединения.
- SYN – осуществляет синхронизацию последовательных счетчиков соединения.
- FIN – сообщает об отсутствии данных и закрывает соединение.
"Трехстороннее рукопожатие" проводит синхронизацию соединения с обоих концов, что позволяет обеим сторонам согласовываться по начальным номерам последовательности. Этот механизм гарантирует готовность обеих сторон к передаче данных и то, что стороны знают о своей готовности. Необходимо, чтобы пакеты не передавались вообще или не передавались повторно во время установки сессии или после ее завершения.
Каждый узел случайным методом выбирает номер последовательности, используемый для учета байтов в потоке отправляемых и принимаемых данных. После этого вступает в действие механизм "трехсторонего рукопожатия", работа которого заключается в следующем.
- Первый узел (узел А) инициирует соединение посредством отправки пакета с начальным номером последовательности (Х) и битом SYN для обозначения запроса на соединение.
- Второй узел (узел B) принимает SYN, записывает номер последовательности X и отправляет ответ посредством подтверждения SYN (пакет c битом ACK = X + 1). Узел B указывает свой собственный начальный номер последовательности (SEQ = Y). Если ACK = 20, это значит, что узел принял байты с 0 по 19 и ожидает приема байта 20. Такой подход называется предварительным подтверждением.
- Узел A подтверждает все отправленные узлом B байты с помощью предварительного подтверждения, что означает ожидание узлом A следующего байта (ACK = Y + 1).
- Начинается обмен данными.
Методы сканирования UDP менее эффективны, чем сканирование TCP, так как атрибуты и возможности этих протоколов различны. В процессе передачи данных через UDP происходит мало "рукопожатий" и установок соединения, поэтому средство сканирования не сможет собрать достаточно информации. Тем не менее, сканирование UDP используется хакерами; многие программы типа "троянский конь", такие как Back Orifice, используют протокол UDP, так как трафик UDP сложнее обнаружить и остановить. В результате средство сканирования UDP может найти "черный ход" через уже имеющуюся на жертве программу "троянский конь".
Средства сканирования UDP отправляют на порт пустые пакеты, ответ на которые и будет информативным результатом сканирования. Если порт закрыт, операционная система ответит, что данный порт недоступен. Если порт открыт, то пустой пакет, скорее всего, будет проигнорирован. Следовательно, отсутствие ответа обычно означает, что порт открыт, если только порт не защищен устройством периметровой защиты, блокирующим весь трафик UDP.