В этой статье мы рассмотрим некоторые
методы обхода IDS. Начнем мы с атак, основанных
на фрагментации, затем пойдем дальше и
посмотрим как различные операционные
системы собирают пакеты и чем это может
быть полезным для обмана Систем
Обнаружения Вторжения. Ну и закончим
атаками, основанными на TTL, обратим внимание
на одну из самых популярных NIDS за именем Snort
и посмотрим как он с ними может справляться
и что надо сделать с настройками что бы воспрепятствовать
проникновению взломщика.

 

Введение

Статья "Insertion, Evasion and Denial Of Service: Eluding NIDS"
положила начало исследованию способов
обхода IDS
. Большинство систем обнаружения
вторжения поддерживают сборку TCP пакетов и
способны отслеживать сессии. Некоторые DoS
атаки обходят системы защиты переполняя
потоковый буфер IDS
, так что наблюдение за
потоком нарушается. С другой стороны
неплохой способ обхода заключается в
предоставлении жертве и целевой системе
разных пакетов -в одном случае
определенные пакеты могут отвергаться
целью нападения, а IDS будет думать, что поток
непрерывен, а в другом IDS может отбрасывать
неправильные по ее мнению данные в то время
как жертвой они все будут благополучно
восприниматься. Для работы с такими видами
нападения хакеры используют фрагментацию
пакетов, где поток нападения разбивается на
отдельные части. Опишем некоторые техники
взлома.

Давайте начнем с определений:

  1. Фрагментация. Если пакет слишком
    велик для передачи по сети, он может быть
    разделен любым роутером (если это
    специально не запрещено) на множество
    фрагментов. Этот процесс называют
    фрагментацией. Система должна хранить
    поступающие фрагменты, ожидать будущих и
    собирать их в правильном порядке.
    Фрагменты/пакеты должны иметь значение TTL
    больше 1 для того, что бы проходить через
    роутер. Если роутер получает пакет или
    фрагмент со временем жизни равным 1 он
    уменьшает его на единицу, TTL становится
    равным 0 и пакет уже не идет дальше, а
    отправителю отсылается ICMP сообщение "Time
    Exceeded In Transit".
  2. Таймаут сборки фрагментов (IP Fragment
    Reassembly Timeout). Это значение указывает нам на
    время, сколько фрагмент будет храниться
    несобранным, по его истечению он будет
    уничтожен. Это значение разнится для
    операционных систем и, например,
    используется для определения вида
    системы (OS fingerprint). Системы обнаружения
    вторжения так же собирают фрагменты
    воедино и потому так же имеют такой
    таймаут. Например, в Snort по умолчанию оно
    составляет 60 секунд, после чего начальный
    пакет потока будет уничтожен и поток
    сброшен.
  3. ICMP сообщение о истечении времени
    сборки
    (ICMP Fragment Reassembly Time Exceeded message).
    Согласно RFC-792, если хост не может собрать
    фрагменты воедино в отведенное время из-за
    потерь, он должен выслать Сообщение об
    истечении времени (ICMP type=11, code=1). Если
    первый фрагмент недоступен, то и посылать
    сообщение не требуется.

Теперь уже можно перейти к сладкому и
рассмотреть некоторые виды атак.

1. Таймаут IDS меньше времени сборки у
Жертвы.

Сценарий: Предположим, что на Системе
обнаружения таймаут составляет 15 секунд, а
на компьютере, на который нацелился хакер -
30 секунд, это дефолтное время для ОС Linus. Как
показано на рисунке, после отсылки первого
фрагмента атакующий в промежутке от 15 до 30
секунд может послать второй.

Очевидно, что у жертвы поток собирается
правильно, в то время как IDS отбрасывает
первый пакет из-за превышения времени
таймаута (и второй соответственно не
принимается). Результат - тревога не
подымается.

 

2. Таймаут IDS больше чем у Жертвы.

Сценарий: Как уже говорилось, по умолчанию
таймаут у Snort-а 60 секунд, а у Linux/FreeBSD - 30. Это
можно использовать. Как показано ниже,
атакующий делит пакет на 4 сегмента: 1, 2, 3, 4.

В данном случает фрагменты 2 и 4 не несут
никакой информации (2' и 4'), они получаются
как жертвой, так и IDS. Атакующий ожидает,
пока пакеты на компьютере Жертвы будут
сброшены. Прелесть этой атаки в том, что у
жертвы пока так и нету фрагмента 1 и, по
правилам, ICMP сообщение не будет отослано.
Атакующий посылает новые пакеты (1 и 3) с
правильной, нужной ему информацией. На этом
этапе жертва имеет только фрагменты 1 и 3.
если теперь нападающий отошлет пакеты 2 и 4
не с мусором, а с нужной ему информацией, то
они благополучно дойдут до жертвы, в то
время как IDS получит только их, так как
предыдущие части были собраны и выкинуты за
ненадобностью. Результат - Жертва имеет все
4 части с правильной информацией, IDS только
половину.

 

Атака IDS с использованием TTL

В этом случае нападающему необходимо
знать топологию сети, сколько роутеров
находится между ним и Жертвой. Выяснить это
можно, например, утилитой traceroute. Обратимся к
картинке:

Ясно, что между IDS и Жертвой находится
роутер. Атакующий разбивает свою атаку на
три части, три фрагмента. Первому
устанавливается большое время TTL и он
получается как компьютером жертвы, и IDS.
Второй (2') является фальшивым и имеет TTL = 1,
он приходит на IDS, но дальше роутера не
уходит, так как его время жизни уже
закончилось. Затем в дело идет фрагмент 3 с
правильным временем жизни, IDS собирает все
три фрагмента правильно, в то время как
Жертва ждет середину цепочки. Наконец в
дело идет правильный пакет 2 и атака удачно
завершается. Результат - IDS обманута, у нее
только 3 фрагмент, а жертва (вероятно)
выведена из строя.

(Продолжение завтра)

Источник: http://www.securityfocus.com/

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

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

    Подписаться

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