Что такое IDS?

Есть две разновидности IDS (Intrusion Detection System): сетевая и IDS для хоста. В основном они работают по одному принципу. Они перехватывают все данные из сети и сопоставляют со своей базой сигнатур атак, пытаясь выявить атаки. При обнаружении атаки IDS оповещает администратора по e-mail, отсылает сообщение на пейджер/SMS или посылает сообщение системе управления сетью. 

Пример работы IDS. В данном примере сетевая IDS оповещает
администратора о том, что кто-то хочет подключиться к демону
telnet.

Как обмануть IDS?

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

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

Методы, связанные с предотвращением обнаружения атак, называются методами обмана IDS. Сейчас очень широко изучаются методы обмана IDS, и
разрабатываются новые инструменты. Развитие способов обмана IDS – это та
область, где нужно постоянно отслеживать новые изменения. Рассмотрим некоторые методы обмана
IDS.

На сетевом уровне.

На IP-уровне сетевые устройства могут фрагментировать пакеты для оптимизации их длинны при передаче по различным каналам связи. Большой IP-пакет ( а также его содержимое, представляющее собой TCP- либо UDP- пакет или пакет другого типа) разбивается на группу фрагментированных пакетов, к каждому из которых присоединяется свой IP-заголовок. Фрагменты один за другим пересылаются по сети и собираются на машине получателя в один первоначальный пакет.

Когда такие фрагменты проходят через сетевую IDS, она должна их перехватить, проанализировать и запомнить. Значит у IDS должен быть большой буфер для хранения получаемой информации. Сбор и анализ получаемых пакетов требует значительного
объема памяти и длительной работы процессора исключительно для
IDS. Чтобы проверить информацию отражённую в фрагментах, нужно собрать эти фрагменты воедино так же, как это делает
конечная система. К сожалению (к радости атакующих
🙂 разные IDS по разному составляют фрагменты. Зная о том, как IDS соединяет фрагменты, 
атакующий способен обмануть систему IDS при помощи следующих методов:

  • Просто использовать фрагменты: возможно IDS просто не соединяет их. Ранние реализации IDS не могли собирать фрагменты. (пример: до июля 2000 года
    популярная бесплатная IDS Short не обрабатывала фрагменты, если с тех пор Short не
    обновлялась, то атаки применяемые с фрагментацией пакетов обнаружены не будут)
  • Отправка большого числа фрагментов: атакующий может попробовать заполнить весь
    объём памяти IDS, отправив такое количество фрагментированных пакетов, что буфер системы IDS переполниться. После проведения этого метода IDS не обнаружит атаку из-за переполнения памяти.
  • Фрагментировать пакеты неожиданными способами: для того чтобы не быть обнаруженным, атакующий может использовать фрагментацию пакетов необычными
    способами. Если IDS не знает, как правильно собрать пакет, то она не выявит атаки.

Влияние выше перечисленных методов сильно зависит от производителя систем
IDS. Разберём несколько примеров, когда атакующий фрагментирует пакеты с целью обмана IDS. Существует
множество различных способов фрагментации, но рассмотрим два из них, которые наглядно показывают методы
обмана IDS при помощи фрагментации: атака небольшими фрагментами и атака наложением фрагментов. 

Атака небольшими фрагментами: данная атака разработана для того, чтобы ввести в заблуждение IDS. Первый фрагмент делается очень маленьким (Вырезается середина TCP-заголовка),
так что в него не входит номер TCP-порта. Номер порта находится во втором фрагменте. Допустим, система IDS
просматривает пакеты на наличие конкретного TCP-порта
(23), для того чтобы предупредить администратора
если кто-то захочет установит telnet-соединение с данной машиной. Поскольку IDS выносит своё решение на основе номера порта, IDS может пропустить первый пакет. Ведь он не содержит номер порта.
Также IDS может пропустить и второй пакет, ведь он часть первого
(в нём содержится остальная часть TCP-заголовка и номер порта), а первый уже прошёл. Таким образом атакующий отправил два пакета
и обманул IDS.

Атака наложением фрагментов: это пример более сложной фрагментации – основана на использовании поля смещения IP-заголовка. Поле смещения IP-заголовка сообщает системе получателя где находится данный фрагмент в целом пакете. Итак, посмотрим, как же атакующий может использовать поле смещения IP-заголовка при
фрагментации IP-пакета в своих целях. Допустим, сетевая IDS проверяет пакеты на наличие порта 23. Атакующий разбивает пакет на два фрагмента. Первый фрагмент содержит TCP-заголовок с указанным портом
80 (к примеру), данный порт не отслеживается IDS. Второй фрагмент содержит TCP-заголовок с изменённым значением поля смещения. Данное значение очень мало, поэтому при соединение фрагментов в единый пакет часть первого фрагмента (в частности порт 80), замещается вторым фрагментом на порт 23.
IDS игнорирует первый фрагмент (ведь он адресован на порт 80) и может пропустить второй фрагмент (ведь это часть первого безобидного пакета). Когда данные собираются воедино на конечной машине
- целый пакет передаётся стеком TCP/IP приложению (демону). Всё, система IDS обманута!


Фрагментируем не отходя от кассы!

Существует много программ для фрагментации пакетов, но я хочу рассказать об одной.
Инструмент Fragrouter, созданный Dug Song, включает в себя несколько атак фрагментаций. Fragrouter работает под системами BSD, Linux и Solaris, его можно нацти на
www.anzen.com/researhc/nidsbench. Fragrouter поддерживает 35 различных методов фрагментации пакетов.
Великолепие Fragrouter заключается в том, что он отделяет функции фрагментации от функций атак. Fragrouter – это просто программно реализованный маршрутизатор
(router).

Как видно из рисунка, атакующий устанавливает Fragrouter на одной из своих систем и затем с помощью любого инструмента атаки отправляет пакеты через компьютер (с установленным Fragrouter), там они фрагментируются по одному из 35 методов фрагментации и перестановке элементов. Затем Fragrouter отправляет пакеты получателю – атакуемой сети. Отделение функций фрагментации от инструментов атаки позволяет использовать любой инструмент для атаки. 

Защита.

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

Используйте IDS для хоста и сетевую IDS вместе.
В то время как сетевая IDS сканирует пакеты для всей сети, то IDS для хоста сканирует пакеты для определённого компьютера.

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

P.S.: В этой стать я не рассказал об обмане IDS на прикладном уровне, но ещё не вечер, расскажу в следующих номерах.

Автор: ICWiener aka Гордиевский Влад.
e-mail: xp547@msn.com

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии