В дополнение к атакам, описанным в предыдущей
статье
, основанным на разном времени
фрагментации, существует еще один класс
атак, основанных на подмене фрагментов.
Господа Паксон и Шанкар в статье "Active
mapping: resisting NIDS Evasion without altering traffic
"
отметили, что разные операционные системы
осуществляют сборку фрагментов по разному.
Они выработали пять разных политик сборки.

В этой статье мы опишем два из них -
называются они First и Last. Ясно, что в первом
случае при сборке пакетов из фрагментов
предпочтение отдается первым полученным
частям, а во втором - последним. Примером
первого вида являются ОС семейства Windows 95/ 98/
NT4/ ME/ W2K/ XP/ 2003, а второго - Cisco IOS. Работа
продемонстрирована на рисунке.

Атакующий начинает атаку с разделения
своих данных на 4 фрагмента. Он посылает
фрагменты 1, 2 и 3 первыми, они принимаются
всеми операционными системами. После этого
посылаются фрагменты 2', 3' и 4, где 2' и 3' по
смыслу отличаются от реальных фрагментов 2
и 3, однако их смещение, длинна и прочие поля
в IP-заголовке остаются теми же самыми. 

В этом сценарии операционные системы
осуществляют сборку фрагментов с
соответствии со своими политиками. В случае
политики First будут собраны фрагменты 1, 2, 3 и
4, а в политике Last - 1, 2', 3', 4.

Более подробное описание различных
методов работы с фрагментами можно найти,
например, в документации Snort.

Противодействие Snort

Snort, без сомнения, является самой
популярной NIDS в мире. Конечно же в нем есть
меры противодействия таким атакам.
Препроцессор frag3
предназначен для работы с фрагментами, он
пришел на смену модулю frag2. Препроцессор
является целевым, позволяя пользователю
определять  метод сборки фрагментов и
время таймаута на целевом IP адресе или
подсети. Это позволяет системе обнаружения
вторжения работать в той же манере, что и
компьютеры в сети, которую она охраняет.
Предположим, что у вас под защитой подсеть
192.168.1.x, состоящая из машин с OpenBSD, и вы хотите
сконфигурировать Snort на работу с нею. Для
этого достаточно указать в
конфигурационном файле данные для
препроцессора frag3:

preprocessor frag3_global:
preprocessor frag3_engine: policy bsd\ 
bind_to 192.168.1.0/24 \ 
timeout 30 \ 
min_ttl 2 
preprocessor frag3_engine: policy first\ 
bind_to[10.1.47.0/24, 172.16.8.0/24]

Теперь пакеты для подсети 192.168.1.x будут
собираться используя политику bsd, с теми же
параметрами, что установлены и в BSD. Ясно
видно, что для подсети 10.1.47.x используется
политика First. Кроме того обратите внимание
на поле min_ttl, с помощью которого можно предотвратить
атаки, основанные на времени TTL - если бы
между IDS и подсетью существовал роутер, то
указанием минимального времени жизни
пакетов можно было бы избежать такого
нападения.

 

Оставить мнение