Безопасность и Internet

         

Метод поиска различий


Итак, для успешного использования методов сокрытия необходимо найти различия в реализации стеков TCP/IP. Для этого используются специально подготовленные тестирующие сетевые пакеты, позволяющие анализировать реакцию IDS и целевых систем.

Чтобы понять, каким образом необходимо подготавливать тестирующую последовательность сетевых пакетов, следует более подробно рассмотреть использование методов сокрытия атак. Так, для проведения метода вставки надо подобрать такую последовательность тестирующих пакетов, чтобы целевая система ее не восприняла. Причины, по которым целевая система не обработает последовательность, могут быть различными — либо стек протоколов целевой системы решит, что последовательность не корректна, либо произойдет перезапись передаваемого блока данных, например, после обработки перекрывающихся IP- или TCP-фрагментов [2, 3].

После обнаружения последовательностей сетевых пакетов, которые не воспринимает целевая система, переходят ко второй фазе тестирования — исследование реакции IDS на прием этих последовательностей. Какие последовательности сетевых пакетов будут восприняты как правильные и обработаны? В случае, если найдена одна или несколько таких последовательностей, можно считать, что данная комбинация целевой системы и IDS имеет уязвимость, позволяющую использовать метод вставки. С методом уклонения все наоборот: требуется найти последовательности пакетов, которые целевая система воспримет, а IDS не станет обрабатывать.

Для метода поиска различий, прежде всего, были выделены уровни сетевого взаимодействия, на которых проводится поиск. При проведении исследований рассматривались средства IDS, работающие в сетях TCP/IP. Для данного стека протоколов принята четырехуровневая модель: канальный, сетевой, транспортный и прикладной. Для создания полной картины существующих различий методика поиска затрагивала все 4 уровня. Кроме того, необходимо выявить признаки сетевых пакетов, по которым система принимает решение, что пришедший пакет некорректный и его следует отбросить.


TCP-фрагментом будем называть TCP-сегмент, являющийся частью одного сеанса. ( Спецификация протокола TCP не оперирует этим понятием; нам же оно необходимо для описания нашей методики.) Пример TCP-фрагмента: в процессе работы через telnet-соединение в рамках одного сеанса передается множество TCP-сегментов, содержащих всего один символ, введенный пользователем. В нашей методике поиска уязвимостей возможные различия искались в следующих аспектах реализации стека протоколов;

  • обработка некорректных заголовков кадров канального уровня (Ethernet);
  • обработка некорректных пакетов сетевого уровня (IP);
  • обработка некорректных заголовков сегментов транспортного уровня (TCP);
  • обработка IP-фрагментов;
  • обработка TCP-фрагментов;
  • обработка различных комбинаций TCP-флагов;
  • обработка пакетов с неправильными порядковыми номерами протокола TCP;
  • обработка некорректного HTTP-сеанса.


  • Перечисленные аспекты реализации могут существенно различаться в разных системах. Особенный интерес представляют вопросы, связанные с обработкой фрагментированного трафика: в стандартах вообще нет рекомендаций, которых должны придерживаться разработчики при обработке аномального фрагментированного трафика (частично или полностью перекрывающиеся фрагменты), поэтому именно на этой детали реализации стеков необходимо акцентировать внимание.

    Для поиска различий были разработаны специальные последовательности тестирующих пакетов.

  • Обработка заголовков.
  • Назначение данных тестов - определить, каким образом происходит обработка заголовков сетевых пакетов, и какие заголовки система считает некорректными. Тестирование проводится в четыре этапа:


    • обработка некорректных пакетов канального уровня;
    • обработка некорректного IP-заголовка;
    • обработка некорректного TCP-заголовка;
    • посылка TCP-сегмента с неправильным номером очереди.


  • Обработка фрагментов.
  • Данный класс тестов предназначен для определения той стороны реализации стека, которая связана с обработкой TCP- и IP-фрагментов. Проведение тестов проходило в четыре этапа:




    • посылка IP-фрагментов с некорректным заголовком канального и сетевого уровней;
    • посылка TCP-фрагментов с некорректным заголовком канального, сетевого и транспортного уровней;
    • посылка IP- и TCP-фрагментов в различной последовательности (произвольный порядок, обратный порядок, посылка повторяющихся пакетов);
    • посылка частично и полностью перекрывающихся IP- и TCP-пакетов.


  • Обработка флагов TCP.
  • Эти тесты предназначены для определения того, как система обработает различные комбинации флагов TCP-сегмента при передаче потока данных. Рассматривались восемь комбинаций флагов ACK, SYN, FIN. Интересовало новое состояние TCP-соединения, реакция целевой системы (какие TCP-сегменты система пошлет в ответ) и поведение системы обнаружения вторжений.
  • Обработка HTTP-сеанса.
  • При проведении этого теста проверялась обработка некорректного HTTP-запроса, начинающегося с двух символов начала строки (0x0D, 0x0A, 0x0D, 0x0A). По спецификации данными символами должен заканчиваться запрос к Web-серверу. Проведение теста тесно связано с логикой обработки TCP-сегментов с неправильными номерами очередей, результаты по которым были получены ранее.


    Содержание раздела