Рис. 16.1. Атака на время существования пересылаемого пакета
Фрагментация IP
Повторная сборка фрагментированных пакетов IP (IP fragmentation reassembly) составляет основу ряда атак. Сетевая система обнаружения вторжения не сможет проверить проходящие через нее пакеты на соответствие их содержимого сигнатурам из базы данных сигнатур, если она повторно не собирает фрагментированные IP-пакеты тем же способом, что и целевой хост. При обычных сетевых операциях фрагментированные IP-пакеты будут, как правило, приниматься адресатом в том же порядке, в котором они и были посланы. Однако так бывает не всегда. В протоколе IP предусмотрена трудно анализируемая передача пакетов в нестандартном порядке и возможность повторной сборки перекрывающихся фрагментов. Процесс сборки фрагментов IP-пакетов может также оказаться сложным из-за необходимости сохранять фрагменты в памяти до тех пор, пока не будет получен последний фрагмент передаваемых данных. Так делается для того, чтобы завершить сборку пакета. При этом возможен отказ в обслуживании: передача большого количества фрагментов может потребовать выделения внутренних буферов или структур. В результате это может привести к пропуску системой обнаружения вторжения пакетов или даже ее аварийному завершению.
Можно и дальше углубляться в рассматриваемую проблему, реализуя в системе обнаружения вторжения сложный алгоритм «сборки мусора» (процесс утилизации памяти, освобождаемой в процессе работы программы или системы). Контролируя передаваемые по линии связи данные, системе обнаружения вторжения, вероятно, придется учитывать сеансы нескольких тысяч хостов, тогда как каждый хост обеспокоен только своим собственным трафиком. Установленная на хосте система может лояльно относиться к временным задержкам при получении фрагментов данных, в то время как система обнаружения вторжения должна гораздо строже относиться к истечению времени ожидания, для того чтобы обеспечить управление экспоненциально большими системами. Если злоумышленник атакует, посылая три фрагмента данных без задержки и последний фрагмент с задержкой, и если в используемой сетевой системе обнаружения не реализованы аналогичные процессы управления фрагментированными порциями данных (что-то подсказывает автору, что это сделать почти невозможно), то в результате нельзя будет восстановить последовательное представление данных, передаваемых по протоколу IP. А значит, нельзя будет получить правильный результат проверки характерных признаков атаки сигнатуре из базы данных сигнатур системы обнаружения вторжения.
Выполненный Птасеком (Ptacek) и Невшамом (Newsham) тест на фрагментацию TestsTests показал, что во время тестирования ни одна из проверяемых систем обнаружения вторжения не смогла должным образом разрешить проблемы фрагментации IP-пакетов. Первые два теста испытания были посвящены тестированию обработки внутреннего порядка фрагментированных данных, содержащихся в пересылаемых пакетах по 8 и 24 байта. В последующих тестах участвовали восьмибайтовые фрагменты, которые пересылались в различном порядке. В серии фрагментов один из них пересылался или вне очереди (уклонение), или дважды (вставка), или все фрагменты пересылались в произвольном порядке с посылкой одного из них дважды (комбинация), или в последовательности фрагментов последний из них пересылался как первый (уклонение), или предыдущие фрагменты перекрывались с последующими (уклонение). Потрясающе, но ни одна из четырех программ (RealSecure, NetRanger, SessionWall и NFR) не смогла распознать какую-либо из атак фрагментации.
В настоящее время большинство сетевых систем обнаружения вторжения обновили свои модули сборки фрагментированных частей пакета. Теперь системы обнаружения вторжения с некоторой вероятностью успеха способны восстановить поток данных.
Заголовок TCP
В заголовке TCP содержится ряд полей, которые могут быть использованы для организации атак. Поэтому если система обнаружения вторжения проверяет не все, а только часть полей из заголовка TCP, то у злоумышленника появляются дополнительные возможности организации атак вставки и уклонения. Рассмотрим некоторые из полей заголовка TCP-пакета. Поле CODE определяет тип сообщения, посылаемого для подключения. Если кто-либо в этом поле пошлет недопустимую последовательность символов или пакет с пропущенным флагом ACK, то вполне возможно, что адресат отклонит такой пакет, а система обнаружения вторжения – нет (возможна вставка). Сегменты, отмеченные флажком SYN (запрос начала сеанса), также могут содержать данные. Из-за относительно нечастого использования этого флажка для пересылки данных система обнаружения вторжения может проигнорировать его содержимое (уклонение). Можно исследовать многие из полей заголовка TCP и найти какую-нибудь возможность, когда передаваемые данные будут приняты адресатом, но будут пропущены системой обнаружения вторжения и наоборот. Другим показательным примером является поле контрольной суммы «Checksum». Если система обнаружения не может самостоятельно вычислять контрольную сумму для каждого сегмента TCP, то в сеансе можно смешивать правильные сегменты с сегментами с неверной контрольной суммой в надежде, что система обнаружения вторжения не будет проверять все сегменты (производитель может предполагать, что в этом случае накладные издержки слишком велики).
Читать дальше
Конец ознакомительного отрывка
Купить книгу