Использование программ fragrouter и congestant
Теоретических знаний недостаточно для оценки производительности средств обеспечения безопасности. Снова и снова видно, как многие производители не учитывают предупреждение исследовательского сообщества. В сентябре 1999 года фирма Dug Song выпустила программу fragrouter, для того чтобы проиллюстрировать присущие сетевым системам обнаружения вторжения уязвимости (www.monkey.org/~dugsong/fragrouter-1.6.tar.gz). Преимущество программы fragrouter заключается в том, что она позволяет без всяких изменений использовать те же самые инструментальные средства и программы использования уязвимостей, что и злоумышленники. Оправдывая свое название, программа fragrouter реализует функции одной из разновидности фрагментированного маршрутизатора. Программа реализует большинство атак, описанных в статье Птасека (Ptacek) и Невшама (Newsham).
Программа congestant является другим заслуживающим упоминания инструментальным средством, в котором реализовано ряд способов модификации пакетов, затрудняющих работу системы обнаружения вторжения. Ее автор называет себя «horizon». Впервые программа описана в его работе «Победа над сетевыми анализаторами сети и системами обнаружения вторжения» (Defeating Sniffers and Intrusion Detection Systems), которая была опубликована в декабре 1998 года (www.phrack.org/show.php?p=54&a=10). В отличие от предыдущей программы, программа congestant реализована в виде разделяемой библиотеки или патча к ядру операционной системы OpenBSD. Читатель может использовать программы fragrouter и congestant совместно, исследуя слабые стороны используемой им системы обнаружения вторжения.
Повышение сложности системы обнаружения вторжения, увеличение ее накладных расходов предоставляет дополнительные преимущества злоумышленнику. Эти системы становятся более подверженными к атакам типа отказ в обслуживании (DoS), поэтому маловероятно сохранение их работоспособности в критической ситуации. Вполне очевидно, что в системы обнаружения вторжения по мере их совершенствования всегда будут включать новые возможности и режимы работы, поскольку атакующий всегда будет выискивать в них узкие места (системы обнаружения вторжения могут использовать многие критические операции центрального процессора, требующие для своего выполнения значительных ресурсов).
Ниже представлены результаты работы программы fragrouter, запущенной командным процессором. Программа поддерживает стандарт plug-and-play. Читателю следует только убедиться, что его система машрутизирует трафик к адресату через хост с работающей программой fragrouter:
storm:~/dl/fragrouter-1.6# ./fragrouter -F5
fragrouter: frag-5: out of order 8-byte fragments, one duplicate
truncated-tcp 8 (frag 21150:8@0+)
10.10.42.9 > 10.10.42.3: (frag 21150:8@16+)
10.10.42.9 > 10.10.42.3: (frag 21150:8@8+)
10.10.42.9 > 10.10.42.3: (frag 21150:8@16+)
10.10.42.9 > 10.10.42.3: (frag 21150:4@24)
truncated-tcp 8 (frag 57499:8@0+)
10.10.42.9 > 10.10.42.3: (frag 57499:8@8+)
10.10.42.9 > 10.10.42.3: (frag 57499:8@8+)
10.10.42.9 > 10.10.42.3: (frag 57499:4@16)
truncated-tcp 8 (frag 57500:8@0+)
10.10.42.9 > 10.10.42.3: (frag 57500:8@8+)
10.10.42.9 > 10.10.42.3: (frag 57500:8@8+)
10.10.42.9 > 10.10.42.3: (frag 57500:4@16)
truncated-tcp 8 (frag 58289:8@0+)
10.10.42.9 > 10.10.42.3: (frag 58289:8@8+)
10.10.42.9 > 10.10.42.3: (frag 58289:8@8+)
10.10.42.9 > 10.10.42.3: (frag 58289:4@16)Ниже приведен вывод утилиты tcpdump, иллюстрирующий разницу между обычным сетевым трафиком и трафиком в сети при запуске программы fragrouter в режиме F5 «fragrouter: frag-5: беспорядочные восьмибайтовые фрагменты c одним дубликатом («fragrouter: frag-5: out of order 8-byte fragments, one duplicate»)». Обратите внимание на флаги DF (Don\'t Fragment – не фрагментировать) каждого пакета обычного соединения и наличие в потоке программы fragrouter нескольких фрагментированных пакетов.
Before (no fragrouter):
19:36:52.469751 10.10.42.9.32920 > 10.10.42.3.7: S
1180574360: 1180574360(0) win 24820 1460> (DF) 19:36:52.469815 10.10.42.9.32920 > 10.10.42.3.7: S 1180574360: 1180574360(0) win 24820 1460> (DF) 19:36:52.470822 10.10.42.9.32920 > 10.10.42.3.7: . ack 4206722337 win 24820 (DF) 19:36:52.470841 10.10.42.9.32920 > 10.10.42.3.7: . ack 1 win 24820 (DF) 19:36:53.165813 10.10.42.9.32920 > 10.10.42.3.7: F 0:0(0) ack 1 win 24820 (DF) 19:36:53.165884 10.10.42.9.32920 > 10.10.42.3.7: F 0:0(0) ack 1 win 24820 (DF) 19:36:53.171968 10.10.42.9.32920 > 10.10.42.3.7: . ack 2 win 24820 (DF) 19:36:53.171984 10.10.42.9.32920 > 10.10.42.3.7: . ack 2 win After (with fragrouter): 19:37:29.528452 10.10.42.9.32921 > 10.10.42.3.7: S 1189855959: 1189855959(0) win 24820 1460> (DF) 19:37:29.528527 10.10.42.9.32921 > 10.10.42.3.7: S 1189855959: 1189855959(0) win 24820 1460> (DF) 19:37:29.529167 10.10.42.9.32921 > 10.10.42.3.7: [|tcp] (frag 21150:8@0+) 19:37:29.529532 10.10.42.9.32921 > 10.10.42.3.7: . ack 4211652507 win 24820 (DF) 19:37:29.529564 10.10.42.9.32921 > 10.10.42.3.7: . ack 1 win 24820 (DF) 19:37:29.530293 10.10.42.9.32921 > 10.10.42.3.7: [|tcp] (frag 57499:8@0+) 19:37:30.309450 10.10.42.9.32921 > 10.10.42.3.7: F 0:0(0) ack 1 win 24820 (DF) 19:37:30.309530 10.10.42.9.32921 > 10.10.42.3.7: F 0:0(0) ack 1 win 24820 (DF) 19:37:30.310082 10.10.42.9.32921 > 10.10.42.3.7: [|tcp] (frag 57500:8@0+) 19:37:30.316337 10.10.42.9.32921 > 10.10.42.3.7: . ack 2 win 24820 (DF) 19:37:30.316357 10.10.42.9.32921 > 10.10.42.3.7: . ack 2 win 24820 (DF) 19:37:30.316695 10.10.42.9.32921 > 10.10.42.3.7: [|tcp] (frag 58289:8@0+) Контрмеры