Опубликован: 16.10.2006 | Доступ: свободный | Студентов: 2196 / 318 | Оценка: 4.44 / 4.23 | Длительность: 26:41:00
Лекция 2:

Удаление, повреждение и отказ в доступе к данным

ПРОБЛЕМА. TCP-соединения

Если вы знакомы с принципами установки соединений TCP, то вам будет легче разобраться в способах реализации атак с использованием протоколов. Для надежной транспортировки данных узлы TCP устанавливают между собой сеансы соединения посредством механизма "трехстороннего рукопожатия".

Механизм подключения использует проверочные биты, имеющиеся в передающихся между узлами пакетах. Ниже приведен перечень проверочных битов с указанием назначения каждого из них.

  • ACK – подтверждает успешный запрос на установку соединения.
  • RST – вызывает принудительный сброс соединения.
  • SYN – осуществляет синхронизацию последовательных счетчиков соединения.
  • FIN – сообщает об отсутствии данных и закрывает соединение.

"Трехстороннее рукопожатие" проводит синхронизацию соединения с обоих концов, что позволяет обеим сторонам согласовываться по начальным номерам последовательности. Этот механизм гарантирует готовность обеих сторон к передаче данных и то, что стороны знают о своей готовности. Необходимо, чтобы пакеты не передавались вообще или не передавались повторно во время установки сессии или после ее завершения.

Каждый узел случайным методом выбирает номер последовательности, используемый для учета байтов в потоке отправляемых и принимаемых данных. После этого вступает в действие механизм "трехсторонего рукопожатия", работа которого заключается в следующем.

  1. Первый узел (узел А) инициирует соединение посредством отправки пакета с начальным номером последовательности (Х) и битом SYN для обозначения запроса на соединение.
  2. Второй узел (узел B) принимает SYN, записывает номер последовательности X и отправляет ответ посредством подтверждения SYN (пакет c битом ACK = X + 1). Узел B указывает свой собственный начальный номер последовательности (SEQ = Y). Если ACK = 20, это значит, что узел принял байты с 0 по 19 и ожидает приема байта 20. Такой подход называется предварительным подтверждением.
  3. Узел A подтверждает все отправленные узлом B байты с помощью предварительного подтверждения, что означает ожидание узлом A следующего байта (ACK = Y + 1).
  4. Начинается обмен данными.

Методы сканирования UDP менее эффективны, чем сканирование TCP, так как атрибуты и возможности этих протоколов различны. В процессе передачи данных через UDP происходит мало "рукопожатий" и установок соединения, поэтому средство сканирования не сможет собрать достаточно информации. Тем не менее, сканирование UDP используется хакерами; многие программы типа "троянский конь", такие как Back Orifice, используют протокол UDP, так как трафик UDP сложнее обнаружить и остановить. В результате средство сканирования UDP может найти "черный ход" через уже имеющуюся на жертве программу "троянский конь".

Средства сканирования UDP отправляют на порт пустые пакеты, ответ на которые и будет информативным результатом сканирования. Если порт закрыт, операционная система ответит, что данный порт недоступен. Если порт открыт, то пустой пакет, скорее всего, будет проигнорирован. Следовательно, отсутствие ответа обычно означает, что порт открыт, если только порт не защищен устройством периметровой защиты, блокирующим весь трафик UDP.

Определение веб-сервера или операционной системы

Перечень уязвимых мест SANS/FBI показывает, что большая их часть относится к конкретным платформам. Поэтому следующим шагом хакера будет выяснение операционной системы компьютера-жертвы, производителя и версии приложения или службы. Эти данные помогут ему подобрать нужный эксплоит.

Иногда хакер использует программное обеспечение компьютера для выяснения версии веб-сервера или операционной системы. Простой и часто используемый метод заключается в получении клиента службы Telnet и попытке входа в систему. На веб-сервере это действие осуществляется с помощью подключения через Telnet к порту 80 сервера (порт служб HTTP). На уязвимых системах при попытке входа в систему сервер отображает сообщение с указанием информации о производителе и версии (независимо от того, был ли вход в систему успешным).

Сканирование операционных систем осуществляется с помощью таких программ, как Nmap и Nessus. Они используют утилиту сбора данных, которая выясняет вид стека TCP/IP жертвы посредством отправляемых пакетов-зондов и сопоставляет полученные данные с информацией в базе данных, чтобы выяснить производителя и версию программного обеспечения исследуемого компьютера. Как правило, для успешной идентификации недостаточно одного зонда, однако средства сканирования являются автоматизированными, что обеспечивает высокую скорость и простоту работы.

Для обмана хакеров администраторы часто изменяют сообщения веб-сервера с указанием в нем ложного имени производителя и версии программного обеспечения. Тем не менее, этот способ не очень эффективен против хакеров, имеющих большой опыт работы с Microsoft IIS, так как успешное сканирование операционной системы быстро сужает круг возможных версий IIS.

Методы защиты от обнаружения сканирования

Одним из способов защиты от обнаружения сканирования является использование средства FTP Bounce, о котором уже шла речь в этой лекции. Данный метод применяет обманную тактику, используя прокси-сервер для маскировки истинного сетевого адреса сканера. Другой метод заключается в уменьшении частоты сканирования. Достаточно низкая частота подачи сканирующих запросов не попадает в диапазон наблюдения за сетевой активностью, определенный в системе обнаружения вторжений (IDS). Систему IDS можно настроить на пониженный уровень частоты. Но, если этот уровень будет слишком низким, IDS сгенерирует большое количество ложных отчетов о сканировании, относящихся на самом деле к совершенно другим процессам, и действия, осуществляемые программой-сканером, просто затеряются в этой массе.

Некоторые методы сканирования позволяют сканирующим пакетам преодолевать периметровую защиту. Сетевые экраны с фильтрацией пакетов иногда не обнаруживают сканирующие пакеты, разбивающие дейтаграммы в заголовках TCP, так как фильтр не распознает полный заголовок TCP, соответствующий правилам фильтрации, и пакет не блокируется.