Коллектив авторов - Защита от хакеров корпоративных сетей
Для большинства датчиков систем обнаружения вторжения критичным является условие, получившее название парадокса первого (или многократного) соответствия. Согласно ему датчик должен принять важное решение: подавать сигнал тревоги при первом же найденном соответствии характерных признаков атаки сигнатуре из базы данных сигнатур или предпринять попытку поиска дальнейших соответствий. Проблема заключается в том, что сначала злоумышленник может определить низкоприоритетную или благоприятную для него сигнатуру, записанную во многие базы данных сигнатур системы обнаружения вторжения, а затем попытаться воспроизвести ее в ходе более разрушительной атаки. В результате при настройке датчика на выдачу сигнала тревоги при первом же найденном соответствии характерных признаков атаки сигнатуре из базы данных может получиться так, что будет обнаружена менее опасная атака и пропущено действительно опасное вторжение. С другой стороны, система обнаружения вторжения при поиске многократных соответствий становится уязвимой к выдаче шкалы предупреждений об атаках. Кроме того, атакующий может сформировать такой трафик в сети, который будет содержать весь спектр сигнатур, содержащихся в базе данных сигнатур системы обнаружения вторжения, который приведет к разрушению ее датчика.
Кроме желательного для злоумышленника отказа датчика системы обнаружения вторжения, он может получить дополнительную выгоду в результате генерации чрезмерного количества предупреждений (сгенерировать более 10 000 предупреждений для него особого труда не составит), которые администратор должен будет как-то осмыслить. Выбранный для атаки компьютер может полностью потеряться среди выводимых на монитор сообщений, гудков и красных флажков, которые могут поставить в тупик кого угодно. Администратор может просто запутаться, воспринимая огромное количество различных звуковых и графических сообщений об атаках. В лучшем случае попытка идентификации реального вторжения в таких условиях будет сильно затруднена. Также не стоит забывать о психологическом воздействии на оператора, которое часто воспринимается им как тотальная атака всего Интернета на оборудование защищаемой сети. Насколько эффективной окажется система обнаружения вторжением, если подобные атаки станут обычным делом?
Уклонение на уровне пакетов
На сетевые системы обнаружения вторжения возложена малопонятная задача выявления смысла из буквально миллионов ежесекундно поступающих кусочков информации при обеспечении приемлемого времени реакции (обычно желательно обеспечить время реакции настолько близко к реальному масштабу времени, насколько это возможно). Для устранения возможных ошибок анализа данных сетевая система обнаружения вторжения работает на различных уровнях стека сетевых протоколов. При его исследовании в первую очередь следует обратить внимание на сетевой и транспортный уровни, где у злоумышленника большие возможности запутать, уклониться или вывести из строя датчик системы обнаружения вторжения. Если перед злоумышленником стоит задача найти способ уклонения от обнаружения, то идеальной точкой начала исследования являются именно эти два уровня, поскольку все прочие возможности идентификации атаки системой обнаружения вторжения, впрочем, как и атакуемого хоста, зависят от возможности правильной интерпретации сетевого трафика на этих двух уровнях.
К сожалению, в силу технических особенностей протоколов IP и TCP, у лиц, ответственных за защиту данных, нет возможности четко контролировать их работу. Работу этих протоколов в динамической среде описывают стандарты, в которых оговорены два утверждения: «НЕ ПЛОХО БЫ» и «МОЖНО». Утверждение «ДОЛЖЕН» зарезервировано только для наиболее важных запросов. Подобное определение стандарта протоколов ведет ко многим осложнениям при попытке интерпретировать сетевые средства связи. Таким образом, у злоумышленника сохраняется возможность десинхронизации состояний системы обнаружения вторжения. Из-за этого она не сможет правильно скомпоновать сетевой трафик в единое целое тем же способом, что и атакуемый хост. Например, если сигнатура системы обнаружения вторжения задает поиск строки символов «CODE-RED» в любом HTTP-запросе, то атакующий может фрагментировать трафик таким образом, чтобы пакеты приходили к системе обнаружения вторжения в ином, чем для хоста получателя пакетов, порядке. Таким образом, злоумышленник может добраться до интересующего его хоста, в то время как система обнаружения вторжения не сможет правильно проинтерпретировать происходящие события.
...Приоткрывая завесу
Интерпретация спецификаций протоколов TCP/IP
Определенные трудности, свойственные интерпретации спецификаций протоколов TCP/IP, предоставляют разнообразные возможности идентификации. Для идентификации удаленной операционной системы может быть использовано все, что угодно, начиная от начального порядкового номера пакета TCP и заканчивая опциями обработки символов. Подобная уникальность реализации операционных систем (в базе данных утилиты nmap содержится описание более 300 характерных признаков операционных систем) является источником некоторых из наиболее критичных и сложных проблем разработки систем обнаружения вторжения. Попытка декодирования потока данных, направляемого в адрес какого-либо хоста, без глубокого знания особенностей внутренней работы его стека протокола является чрезвычайно сложным занятием.
Несколько лет назад была написана статья, посвященная обсуждению многих проблем развития сетевых систем обнаружения вторжения. Важно, что рассмотренные в 1998 году Томасом Птасеком (Thomas Ptacek) и Тимоти Невшамом (Timothy Newsham) в статье «Вставка, уклонение и отказ в обслуживании: ускользание от обнаружения вторжения в сеть» (Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection), http://secinf.net/info/ids/idspaper/idspaper.html, атаки принадлежат широкому диапазону: от вставки нужных злоумышленнику данных в передаваемый поток данных до уклонения от обнаружения. Вставка и уклонение составляют основу противодействия проверке на соответствие сигнатур.
Вставка – это способ, который создает ситуацию, когда система обнаружения вторжения примет некоторую информацию, предполагая, что точно такие же данные получит и атакуемый хост. Но если система обнаружения вторжения не интерпретирует сетевой поток точно таким же образом, как это делает атакуемый хост, то у нее сложится неверное представление о передаваемых данных и она не сможет предупредить об атаке. Просто сигнатура из базы данных сигнатур системы обнаружения вторжения будет не соответствовать получаемым из сетевого потока данным. Рассматривая пример со строкой символов «CODE-RED» в HTTP-запросе, возможен следующий случай. К системе обнаружения вторжения будут поступать данные со строкой «CODE-NOT-RED», что не является достаточным, чтобы чувствовать себя и защищаемую сеть в безопасности. А атакуемый хост-адресат на самом деле получит данные со строкой символов «CODE-RED» из-за того, что пакет со строкой символов «NOT» был забракован хостом из-за его несоответствия, по мнению хоста, стандартам.
Уклонение – это способ, в некотором смысле обратный способу вставки. Ему соответствует ситуация, когда атакуемый хост принимает данные, проигнорированные системой обнаружения вторжения. Так, например, в результате атаки система обнаружения вторжения может получить строку символов «CODE», в то время как атакованный хост получит строку «CODE-RED». Подобные атаки могут осуществляться различными способами. В любое время TCP/IP-связь может быть завершена любой из участвующих в ней сторон. Если система обнаружения вторжением неправильно проинтерпретировала посланные злоумышленником пакеты RST или FIN, которые не были восприняты атакованным хостом (например, если система обнаружения вторжением неправильно контролировала порядковые номера), то злоумышленник сможет безнаказанно продолжить сеанс связи.
Типичным случаем является отказ в обслуживании системы обнаружения вторжения. Возможности нарушения работы датчика вполне очевидны. Системные ресурсы конечны. Системе доступно столько страниц памяти, сколько всего может быть выделено, возможности центрального процессора ограничены, и даже сетевые платы не способны поддерживать необходимую производительность, если она превышает их технические возможности. Поскольку компьютер является системой очередей, то неизбежно наступит момент, когда некоторые из них переполнятся и данные будут удалены из очереди быстрее, чем их проанализируют. Присущие этому проблемы разнообразны. Они могут изменяться от микропроблем, когда приходится сталкиваться с истощением относительно немногих сетевых буферов ввода-вывода, до глобальных проблем, подобно низкой производительности работы дисковых ресурсов. Управление системными ресурсами является сложной задачей, которая еще больше усложняется в результате необходимости контролировать неизвестное количество потоков передачи сетевых данных и ограниченного представления о фактическом состоянии внутреннего стека TCP/IP каждого хоста.