Метод поиска различий
Итак, для успешного использования методов сокрытия необходимо найти различия в реализации стеков TCP/IP. Для этого используются специально подготовленные тестирующие сетевые пакеты, позволяющие анализировать реакцию IDS и целевых систем.
Чтобы понять, каким образом необходимо подготавливать тестирующую последовательность сетевых пакетов, следует более подробно рассмотреть использование методов сокрытия атак. Так, для проведения метода вставки надо подобрать такую последовательность тестирующих пакетов, чтобы целевая система ее не восприняла. Причины, по которым целевая система не обработает последовательность, могут быть различными — либо стек протоколов целевой системы решит, что последовательность не корректна, либо произойдет перезапись передаваемого блока данных, например, после обработки перекрывающихся IP- или TCP-фрагментов [2, 3].
После обнаружения последовательностей сетевых пакетов, которые не воспринимает целевая система, переходят ко второй фазе тестирования — исследование реакции IDS на прием этих последовательностей. Какие последовательности сетевых пакетов будут восприняты как правильные и обработаны? В случае, если найдена одна или несколько таких последовательностей, можно считать, что данная комбинация целевой системы и IDS имеет уязвимость, позволяющую использовать метод вставки. С методом уклонения все наоборот: требуется найти последовательности пакетов, которые целевая система воспримет, а IDS не станет обрабатывать.
Для метода поиска различий, прежде всего, были выделены уровни сетевого взаимодействия, на которых проводится поиск. При проведении исследований рассматривались средства IDS, работающие в сетях TCP/IP. Для данного стека протоколов принята четырехуровневая модель: канальный, сетевой, транспортный и прикладной. Для создания полной картины существующих различий методика поиска затрагивала все 4 уровня. Кроме того, необходимо выявить признаки сетевых пакетов, по которым система принимает решение, что пришедший пакет некорректный и его следует отбросить.
TCP-фрагментом будем называть TCP-сегмент, являющийся частью одного сеанса. ( Спецификация протокола TCP не оперирует этим понятием; нам же оно необходимо для описания нашей методики.) Пример TCP-фрагмента: в процессе работы через telnet-соединение в рамках одного сеанса передается множество TCP-сегментов, содержащих всего один символ, введенный пользователем. В нашей методике поиска уязвимостей возможные различия искались в следующих аспектах реализации стека протоколов;
Перечисленные аспекты реализации могут существенно различаться в разных системах. Особенный интерес представляют вопросы, связанные с обработкой фрагментированного трафика: в стандартах вообще нет рекомендаций, которых должны придерживаться разработчики при обработке аномального фрагментированного трафика (частично или полностью перекрывающиеся фрагменты), поэтому именно на этой детали реализации стеков необходимо акцентировать внимание.
Для поиска различий были разработаны специальные последовательности тестирующих пакетов.
- обработка некорректных пакетов канального уровня;
- обработка некорректного IP-заголовка;
- обработка некорректного TCP-заголовка;
- посылка TCP-сегмента с неправильным номером очереди.
- посылка IP-фрагментов с некорректным заголовком канального и сетевого уровней;
- посылка TCP-фрагментов с некорректным заголовком канального, сетевого и транспортного уровней;
- посылка IP- и TCP-фрагментов в различной последовательности (произвольный порядок, обратный порядок, посылка повторяющихся пакетов);
- посылка частично и полностью перекрывающихся IP- и TCP-пакетов.