Отсутствие математических основ
Отсутствие математических основ технологии обнаружения атак не дает возможности разрабатывать эффективные методы распознавания атак и реагирования на них. Более или менее подведена база под методы выявления аномального поведения, которые не так часто применяются в коммерческих системах. Все существующие методы основаны либо на достижениях в смежных областях, либо на том, что думают на эту тему разработчики систем обнаружения атак, а ведь известна поговорка: "сколько людей, столько и мнений". Под имеющиеся средства и механизмы не подведен научный базис, что не позволяет подтвердить или опровергнуть эффективность предлагаемых решений. Сейчас наметились некоторые изменения в лучшую сторону в этой области, но до окончательного завершения работ еще далеко.
Ложные срабатывания
Проблема ложных срабатываний (false negative) и "не обнаружения" атак (false positive) тоже очень серьезна. Возникает она, вероятнее всего, из-за отсутствия математической основы технологии обнаружения атак. В качестве примера можно назвать уже упоминавшийся в главе 4 случай с блокировкой учетной записи после трех неудачных попыток ввода пароля. Легко догадаться, что злоумышленник может подбирать не по три, а только по два пароля, таким образом никогда не превышая заданный порог в три неудачных попытки и тем самым не "подставляя" себя для системы обнаружения атак. Другой пример — использование команды WIZ в почтовой программе sendmail. Данная команда исторически служила для отладки. Однако неадекватное ее применение позволяет получить неограниченный доступ к компьютеру, на котором запущена программа sendmail. Так как в настоящее время данная команда очень редко встречается при выполнении санкционированных действий, ее использование автоматически считается попыткой нападения.
Пропуски атак
Многие системы обнаружения атак имеют тенденцию контекстно зависеть от источников данных об атаках. Например, некоторые средства анализируют информацию журналов регистрации событий операционной системы EventLog (для Windows NT) и syslog (для Unix). Однако многие атаки могут быть реализованы таким образом, что их выполнение не вызовет каких-либо событий, регистрируемых операционной системой. К таким вариантам можно отнести некоторые вирусы. Приходится модифицировать системы, чтобы они могли регистрировать большее число событий.
Рост сложности средств реализации атак
Как показано на рис. 2.12, за последние несколько лет сложность средств реализации атак существенно возросла. Злоумышленники используют сканеры с функциями скрытого сканирования (stealth-сканирование) и генерацией фальшивых пакетов (decoy-режим), "троянских коней" и т. д. Большая проблема существует с так называемыми средствами двойного применения, которые могут быть вовлечены в реализацию как санкционированных, так и враждебных действий. К таким средствам могут быть отнесены инструменты удаленного администрирования NetBus или Remote Administrator, а также средства обнаружения сетевых карт в смешанном (promiscuous) режиме AntiSnif. Последнее средство может быть использовано и для обнаружения сетевых карт в смешанном режиме (с целью поиска несанкционированно установленных анализаторов протоколов) и для определения систем обнаружения атак (с целью последующего их обхода злоумышленниками, "прослушивающими" сетевой трафик).
Мобильный код
В данной книге под термином "мобильный код" подразумеваются технологии Java, ActiveX и языки сценариев JavaScript, JScript и VBScript. Специфика мобильного кода такова, что он может быть использован и как средство для проведения атак, и как объект атаки. В первом варианте опасность заключается в том, что мобильный код загружается на компьютер пользователя и выполняется на нем как обычная программа, получая доступ к системным ресурсам. Во втором случае, как правило, задачей является модификация самого мобильного кода — как предварительный этап перед проведением атак на локальный компьютер пользователя. Атаки на мобильный код как на средство выполнения каких-либо функций пока не получили широкого распространения. Связано это с тем, что мобильный код пока не применяется для выполнения каких-либо серьезных операций, например проведения финансовых транзакций. Хотя уже известны примеры банковских систем, в т. ч. и российских, использующих технологию Java для paботы с клиентом [Лукацкий1-98].
Как средство для проведения атак мобильный код может быть реализован « виде:
· вируса, который вторгается в информационную систему и уничтожает данные на локальных дисках, постоянно модифицируя свой код, затрудняя тем самым свое обнаружение и удаление;
· агента, перехватывающего пароли, номера кредитных карт и т. п.;
· программы, копирующей конфиденциальные файлы, содержащие деловую и финансовую информацию.
Маскироваться такие программы могут под анимационные баннеры, интерактивные игры, звуковые файлы и т. п. Отечественные пользователи не так часто используют компьютер для совершения финансовых сделок и других раций, которые могли бы нарушить конфиденциальность данных. Поэтому рассмотрим примеры враждебного мобильного кода, который воздействует на функционирование узла, на котором он запускается. Это наиболее простая в реализации и, как следствие, часто применяемая угроза, которой может подвергнуться любой пользователь сети Internet. Такая угроза может осуществляться путем следующих характерных приемов:
· создания высокоприоритетных процессов, выполняющих несанкционированные действия;
· генерации большого количества окон;
· "захвата" большого объема памяти и важных системных классов;
· загрузки процессора бесконечным циклом.
В [Лукацкий1-98] приводится несколько интересных примеров использования мобильного кода в недружественных целях. В частности, достаточный интерес представляет сценарий на языке JavaScript, который по-прежнему может приводить к нарушению функционирования узла, на котором он запускается. И это несмотря на то, что прошло больше двух лет с момента его написания.
Листинг 11.1. Пример враждебного сценария JavaScript
<HTML>
<HEAD>
<TITLE>Демонстрация атаки Denial of Service</TITLE>
</HEAD>
<BODY>
<CENTER>
<H1> Демонстрация атаки Denial of Service</Hl>
<HR> Kaк дела? <BR>
<HR>
<CENTER>
<SCRIPT>
while(1) { alert("He все то золото, что блестит!")}
</SCRIPT>
</HTML>
Как видно, данный сценарий предельно прост в реализации — всего одна строка кода (между тегами <script> и </script>) приводит к циклическому созданию окна с сообщением "не все то золото, что блестит!" и невозможности его закрытия. Для обрывания цикла приходится "выходить" браузера путем завершения задачи в Task Manager (для ОС Windows NT).
Обычный подход, используемый при обнаружении мобильного кода, заключается в том, чтобы сканировать весь входящий трафик на 80-м или 443-м портах, задействуемых протоколами ННТР и HTTPS, с целью выявить такие элементы, как соответствующие подозрительные теги. Но этого недостаточно чтобы остановить мобильный код, потому что управляющие элементы ActiveX и апплеты Java можно получить и другими способами. Для примера представим, что апплет (обычно имеющий расширение CLASS) выдает себя за изображение (то есть имеет расширение GIF или JPG). Если система обнаружения атак считает, что это изображение, то оно пропускается в сеть и загружается в кэш браузера, после чего он выходит из строя, т. к. загруженный файл не является изображением. Однако это неважно — мобильный код уже находится на компьютере. И если позже его можно будет активизировать, то могут возникнуть серьезные проблемы с защищенностью системы. Другой пример — использование нестандартного порта для работы Web-сервера.
Одним из вариантов защиты, например для Java-апплетов, можно считать сканирование всего трафика, проходящего в защищаемом сегменте, для того чтобы выявить наличие определенных участков кода. Такое выявление осуществляется путем поиска числа, идентифицирующего байт-код, которое в шестнадцатеричной форме может выглядеть как "СА FE BA BE". Однако данный подход производителями средств защиты практически не практикуется, т. к. трафик обычно слишком интенсивен, чтобы фильтровать его поток через каждый порт для нахождения конкретных текстовых фрагментов [Лукацкий1-98].