Методы тестирования брандмауэров
Автор: Николай Ткаченко
Опубликовано: 11 августа 2005 года
Источник: Журнал "Мир ПК"
Благодаря стараниям вирусописателей и хакеров тема сетевой безопасности стала актуальной не только для служб безопасности финансовых учреждений и крупных корпораций, но и для рядовых пользователей. По статистике, подключенный к Интернету компьютер каждые восемь-десять минут подвергается сетевому исследованию или атаке, а большая часть «удачных» взломов приходится на долю домашних ПК.
Защита от сетевых атак — сетевые фильтры, на основе заложенных правил разделяющие сетевой поток данных (трафик) на разрешенный и запрещенный. Разрешенный трафик пропускается, запрещенный соответственно уничтожается. Сетевые фильтры имеют как аппаратные, так и программные реализации.
Область применения аппаратных сетевых фильтров — контроль трафика в средних и крупных сетях. Для персональных компьютеров чаще применяют программный вариант защиты, что обусловлено, с одной стороны, более широким спектром прикладных возможностей программного сетевого фильтра, а с другой — более низкой себестоимостью такой защиты по сравнению с аппаратной реализацией.
Разработок в области программной сетевой защиты достаточно много, от неказистых на первый взгляд поделок энтузиастов до предложений крупных компаний, давно заработавших себе имя в программном бизнесе. Существующие программные сетевые фильтры (брандмауэры) содержат, как правило, почти одинаковый набор функций, различаясь интерфейсом и, разумеется, качеством работы. Последнее отличие далеко не очевидно, и о нем не сообщается в рекламных проспектах. Большинство же публикаций в онлайновой и офлайновой прессе касаются лишь «косметических» характеристик брандмауэров, без упоминания о качестве их работы. Так что пользователь, выбирающий себе защиту, вынужден довериться солидному брэнду, в немалой степени созданному усилиями маркетологов, или рекомендациям знакомых. Либо ему придется потрудиться, чтобы составить собственное мнение об объективных преимуществах и недостатках того или иного программного брандмауэра. Из последнего варианта и возникла тема предлагаемой вашему вниманию статьи, обобщившей опыт тестирования брандмауэров.
Для начала определим цели исследования. Основная задача персонального пользовательского брандмауэра — фильтрация трафика защищаемого компьютера, что, в свою очередь, подразумевает контроль за сетевыми подключениями из Интернета к пользовательской системе; за сетевой активностью системных сервисов и прикладных программ; за содержимым веб- и почтового трафика, поступающим на компьютер.
Если брандмауэр не справляется с этими задачами, использовать его в качестве защитного средства будет опрометчивым решением, здесь уже количество и качество дополнительных функций роли не играет. Если не решается первая задача, возможен сетевой взлом. Если вторая, то существует вероятность несанкционированной утечки данных. В третьем случае браузер и почтовый клиент вместе с текстом и картинками регулярно доставляют в пользовательскую систему ActiveX-компоненты, Java-аплеты, Java- и VBS-сценарии. Из-за этого веб-страницы становятся интерактивными, а на ПК проникают вирусы. Согласитесь, было бы весьма неразумно оставить творческие изыскания злоумышленников без пристального внимания.
Проверять, как брандмауэр умеет работать с входящим трафиком, мы будем с помощью специализированного программного обеспечения — сетевых сканеров. А для анализа качества контроля исходящих соединений используем тесты проницаемости (leak tests).
Сетевой сканер определяет, какие системные сервисы и прикладные программы на исследуемой компьютерной системе доступны для сетевого подключения. Он может применять различные методы, скрывающие факт сканирования от средств защиты исследуемой системы (stealth scan). Задача брандмауэра — не только не допустить определения сканером действующих сетевых программ, доступ к которым запрещен, но и зафиксировать сам факт сканирования. В свою очередь, сетевой сканер помогает проверить, насколько успешно брандмауэр скрывает защищаемую компьютерную систему от сетевых методов исследования, работая в режиме «невидимка» (для брандмауэров тоже есть свой «stealth-режим»).
Один из наиболее известных сетевых сканеров — Nmap.
|
Отчет Nmap об исследовании системы |
Для анализа защиты домашнего компьютера, подключенного к глобальной сети, удобнее воспользоваться услугами онлайновых сканеров и специализированных ресурсов Интернета (DslReports, PC Flank, Shields Up!!, Sygate Online Service и т.п.).
|
Онлайновый сканер ресурса PC Flank |
Это не потребует ни установки дополнительного ПО, ни длительного изучения инструкций. Но следует учесть, что при полном сканировании системы создается значительный трафик, что, в свою очередь, может вызвать проблемы при работе на узком канале, например при модемном подключении к Интернету.
Программа Cain&Abel по принципу действия не относится к сетевым сканерам, но демонстрирует одну из методик злоумышленников, используемую для сбора информации об атакуемой системе. В результате успешно проведенной операции, названной разработчиками Arp Poison Routing (сокр. APR; иное название — APR cache poisoning), на выбранные компьютеры внедряются соответствующим образом сфальсифицированные связи сетевых и аппаратных адресов компьютерных систем. В результате весь трафик между атакованными ПК начинает пересылаться через систему злоумышленника.
|
Cain&Abel: смотрим чужой трафик |
Эта операция — классическое применение технологии «посредник» (man in the middle).
Анализируя транзитный трафик, Cain&Abel собирает пароли доступа к различным сетевым сервисам и иную конфиденциальную информацию. Учитывая предоставленные разработчиками дополнительные средства для декодирования зашифрованных паролей, а также то, что пароли к почтовому POP3-серверу, ICQ, FTP и многим другим службам передаются в открытом виде, легко представить серьезность угрозы для скомпрометированных подобным образом систем.
Перейдем к средствам тестирования возможностей брандмауэра по пресечению несанкционированной утечки данных с защищаемого компьютера, тестам проницаемости, назначение которых — сделать «сброс» информации в Интернет, минуя брандмауэр.
Межсетевые экраны рекомендую исследовать с помощью тестов проницаемости во всех доступных режимах работы. Только при такой проверке можно получить полное представление о возможностях персонального брандмауэра. Ведь, к сожалению, далеко не всегда то, что обещано, выполняется.
Для повышения достоверности результатов тестирования показания тестов проницаемости и брандмауэра следует проверять сниффером, программой — перехватчиком передаваемых по сети данных. Подобная контрольная проверка отфильтровывает «ложные срабатывания» тестов и брандмауэров, опровергая отчеты об удачном «задержании» или «сбросе» перехватом переданной информации или, напротив, свидетельствуя об отсутствии оной.
Основные методики проникновения сквозь защиту брандмауэра можно разделить на несколько категорий:
- Address space injection — внедрение в адресное пространство выполняющейся доверенной (доступ в Интернет разрешен) программы стороннего кода. Внедренный код начинает исполняться на правах взломанного процесса, получая, в частности, доступ в Интернет.
- Dll-injection — внедрение сторонней dll-библиотеки. Метод, аналогичный описанному выше.
- Launcher — запуск доверенной программы или системного сервиса с передачей параметров для сетевого запроса в командной строке или иным способом.
- Substitution — подмена программы, которой разрешен доступ в Интернет. Имя файла теста меняется на имя доверенной программы (например, iexplore.exe), а переименованный файл переписывается в ее каталог.
- Trojan — попытка незамаскированной передачи данных.
Сведения о наиболее известных на сегодня тестах проницаемости представлены в табл. 1 .
Рассмотрев формализованные характеристики тестов, познакомимся с ними поближе.
AWFT (Atelier Web Firewall Tester)
Программа условно-бесплатная, ограничение — десять запусков. Стоимость одной лицензии 19,95 долл.
|
Outpost Pro vs. AWFT |
AWFT содержит серию из шести тестов, демонстрирующих различные методики неавторизованного доступа в сеть, минуя защиту брандмауэра. За каждый успешно пройденный тест (доступ в сеть получен не был) брандмауэру начисляется некоторое количество баллов. Если тест не пройден, баллы начисляются в пользу AWFT. Максимальное количество баллов — десять.
CopyCat
CopyCat в корневом каталоге диска «C» создает файл exploited. txt, в который записывает содержимое документа, запрошенного в диалоге с посетителем Интернета. Следует обратить внимание, что Internet Explorer, получив документ по вызову CopyCat, сразу записывает его в свой кэш. При последующих тестах документ извлекается уже из кэша, а не из Интернета. Следовательно, для чистоты эксперимента перед тестом надо либо очищать кэш браузера, либо при каждом тесте запрашивать новые документы.
CopyCat демонстрирует следующий интересный прием: если брандмауэр настроен на полное блокирование сетевой активности, то, запустившись, тест поражает выбранный процесс. Затем ожидает, когда блокировка будет снята. Когда путь в Интернет свободен, тест выполняет свое задание. Некоторые брандмауэры способны лишь временно блокировать тест.
DNStester
Версия под номером 1.0 самостоятельно выполняет рекурсивный запрос к серверу microsoft.com. Версия теста 1.2 использует стандартный сервис ОС Windows (services.exe/svchost.exe), обрабатывающий DNS-запросы пользовательских приложений для передачи секретной информации, скрытой в теле рекурсивного DNS-запроса. Данные (текстовая строка до 30 символов длиной) запрашиваются у пользователя после запуска теста. Далее они передаются на удаленный хост (в тесте используется сервер dnstester.beefed.com). Проверить, получил ли DNS-сервер тестовый запрос, можно на веб-сайте проекта.
Отмечу, что ограничение передаваемой информации, установленное в тесте (версия 1.2) равным 30 символам, искусственное. И сделано лишь затем, чтобы не перегружать DNS-сервер проекта. В действительности иллюстрируемым в тесте способом можно передавать более значительные массивы данных.
FireHole
Запустив браузер, тест внедряет в его адресное пространство свою dll-библиотеку. Далее команды из нее, действуя на правах доверенного процесса (аксиома психологии интернетчика — первой программой, допущенной пользователем к Интернету, будет браузер), получают доступ к Сети. Вот один из первых тестов проницаемости, продемонстрировавших этот прием.
|
FireHole рапортует... |
Ghost
|
Ghost перед тестом |
Тест, запустив доверенную программу (браузер), перезагружает себя, меняя идентификатор процесса. Затем передает данные. Удивительно, но такого несложного трюка манипуляции процессами иногда хватает для обхода логики работы брандмауэра.
Передаваемые данные (текстовая строка) запрашиваются у пользователя. При успешном прохождении теста строка публикуется на сайте проекта.
LeakTest
|
LeakTest — тест проницаемости |
Патриарх тестов проницаемости. Сейчас он далеко не так эффективен, как пару лет назад, и на данный момент представляет скорее исторический интерес. Но в свое время он доказал несостоятельность многих персональных брандмауэров, применяя тривиальную подмену имени файла-теста на имя «доверенной программы».
pcAudit
Передает на сервер разработчиков фотографию рабочего стола тестируемого компьютера, список файлов из папки «Мои документы», имя пользователя и текст, набранный в окне браузера. В качестве подтверждения успешности теста эти данные можно увидеть на сайте проекта. Получившаяся иллюстрация весьма наглядна. Пытаясь получить доступ в Интернет, pcAudit последовательно поражает различные процессы. Довольно забавно видеть, как драйвер клавиатуры, графический редактор Paint или блокнот Notepad пытаются устанавливать сетевые соединения.
Surfer
|
Surfer — тест проницаемости |
Создав невидимый рабочий стол, запускает на нем браузер без указания адреса документа. На этом этапе доступ к сети не запрашивается. Затем, сменив перезапуском идентификатор своего процесса, Surfer по DDE (Direct Data Exchange — протокол обмена данными между процессами) передает запрос браузеру. В качестве подтверждения успешности теста загружается http-страница с сайта разработчика.
WB
|
Wallbreaker — тест проницаемости |
WB — сокращение от wall breaker. Программа включает четыре теста, различным образом эксплуатирующие MS Internet Explorer. Например, вдруг брандмауэр запутается, если WB запустит консоль командной строки, та — проводник, а проводник — браузер.
Yalta
Незатейливо пытается передать UDP-пакет на произвольный порт произвольного хоста, указанные пользователем.
На тестируемой платформе под управлением MS Windows 2000 SP4 в Yalta был возможен только Classical Leak Test. А Enhanced Leak Test, демонстрирующий работу с сетью в обход стандартного TCP/IP-стека протоколов, был недоступен. Экспериментировать с ним можно на компьютерах с Windows 9x/Me.
Thermite
Некий аналог CopyCat. Во время теста запрашивает начальную страницу веб-ресурса SecurityFocus.
Ожидаемым продолжением рассказа о сканерах и тестах 1 будет иллюстрация их практического применения.
Outpost Pro
Решив поддержать отечественного (или считающегося таковым) производителя, отберем для эксперимента недавно появившийся на сцене брандмауэр Outpost Pro — разработку компании Agnitum, Ltd.
|
Брандмауэр от Agnitum, Ltd. |
Тестируемая версия брандмауэра 2.5.369(369). Стоимость одной лицензии при продаже в России — 499 руб. Всем остальным предлагается раскошелиться на 39,95 долл. Размер дистрибутива 7,42 Мбайт. Бесплатный испытательный период 30 дней.
Поскольку брандмауэры серии Outpost достаточно известны не только в российском регионе и часто становились главными героями обзоров и публикаций, то на описании основных возможностей Outpost Pro 2.5 я останавливаться не буду, сразу перейдя к отличиям версии 2.5 от предыдущей версии Outpost Pro 2.1.
Изменения в новой версии заметны. Полный их список насчитывает более 50 пунктов. Не углубляясь в технические детали, отмечу, что значительное внимание разработчиков было уделено противодействию методикам скрытой утечки данных, демонстрируемой тестами проницаемости. К интерфейсу программы добавились настройки параметров контроля скрытых процессов и расширенного контроля компонентов программ. Введен контроль raw-сокетов. Расширились функции модуля «Детектор атак». Добавлены возможности указать список портов, представляющих наиболее вероятную цель для атакующих, и назвать хосты, активность с которых не будет рассматриваться как вредоносная (может быть, это администраторские хосты?). Введена блокировка DNS-запросов с нарушенной структурой (подобным образом может маскироваться активность троянской программы).
Более подробно ознакомиться с дальнейшими изменениями в Outpost Pro 2.5 можно на сайте разработчика, а еще лучше оценить их лично, установив trial-версию брандмауэра. А мы тем временем перейдем к результатам экспериментов.
Брандмауэр тестировался в двух режимах работы: «доступ в сеть разрешен только для доверенных программ», «доступ блокирован для всех». Если брандмауэр предотвращал утечку информации, в сводной таблице результатов испытаний это обозначалось знаком «•». Если нет, знаком «•». Аналогичным образом отмечались результаты, показанные брандмауэром, при сканировании и APR-атаке. Полученные результаты тестирования представлены в табл. 2.
|
Таблица 2. Результаты тестирования брандмауэра Outpost Pro |
Теперь несколько слов о ходе тестирования.
Первое замечание к Outpost Pro касается установленных по умолчанию правил обработки сетевого трафика. Используя правило «Разрешить исходящий DHCP», можно не передавать UDP-пакеты с произвольной информацией на определенные порты (67, 68, 546, 547 — довольно большой выбор, не правда ли?) произвольного удаленного хоста, что и подтверждает эксперимент с Yalta. Другое правило, «Allow PPTP control connection», позволяет установить соединение удаленным хостом по TCP-протоколу (порт 1723), что легко проверить обычным Telnet-клиентом. В обоих случаях брандмауэр беспрепятственно пропустил «сброс информации».
В компании Agnitum, признавая в опубликованном на сервере проекта документе OFPvsLeakTests.pdf уязвимость Outpost Pro 2.5 перед методикой скрытой передачи данных, продемонстрированной в тесте DNStester, трактуют ее как не стоящую внимания, поскольку практического применения в «троянских конях» или программах-шпионах она еще не получила. Учитывая опыт компании Agnitum, полученный при разработке и сопровождении утилиты Tauscan, можно признать этот аргумент весомым. Но только на данный период времени.
В связи с испытаниями Outpost Pro тестом Wallbreaker хочу отметить следующее: если браузер MS Internet Explorer был запущен заранее, то все четыре теста, входящие в Wallbreaker, успешно нарушают защиту брандмауэра. Если же браузер не был загружен ранее, то брандмауэр определяет три попытки проникновения из четырех. Не замеченным для Outpost Pro проходит второй тест, о котором в описании сказано, что в нем вызывается Internet Explorer способом, не определяемым брандмауэрами (секретное ноу-хау автора). При счете пять пропущенных тестов против трех задержанных нельзя сказать, что Outpost Pro успешно защищается от Wallbreaker.
Вспомнив о младших версиях брандмауэров компании Agnitum (Outpost Pro 2.1, Outpost Free), отмечу, что их тестирование показывает еще более удручающие результаты.
Далее перейдем к проверке возможностей брандмауэра по обработке активных элементов в клиентском трафике. Напомню, что активным/интерактивным элементом веб-страницы или электронного сообщения называется небольшая (относительно) программа, исполняемая на стороне клиента. Активный элемент может быть создан с помощью различных технологий (ActiveX и др., см. выше), и все они позволяют причинить разного рода неприятности. Брандмауэр, выступая посредником между Интернетом и защищаемым клиентом, анализирует получаемый трафик на наличие активных элементов. При их обнаружении брандмауэр, сверившись с установленной политикой фильтрации для данного типа активных элементов, предпринимает одно из следующих действий: пропускает/блокирует/ запрашивает пользователя. Следовательно, разрешив активные элементы только для доверенных источников и запретив для всех остальных, пользователь с этой стороны защищен? Да, если брандмауэр способен определить абсолютно все (!) активные элементы в трафике. А если нет?
Способов обхода фильтрации брандмауэром интерактивных элементов немало, и со временем их количество увеличивается. Поскольку эта тематика узкоспецифична, заинтересовавшимся читателям советую ознакомиться со статьей «Bypassing content filtering whitepaper» специалиста в области безопасности 3APA3A, опубликованной на сайте SECURITY.NNOV. Другим же предложу проверить свой брандмауэр (предварительно установив запрет на исполнение интерактивных элементов) набором тестов, любезно предоставленным тем же специалистом в работе «Обход средств защиты клиентских приложений», опубликованной на том же ресурсе. Для Outpost 2.5 статистика следующая: задержано два активных элемента, пропущено девять.
P.S. Закончив обзор тестирования Outpost 2.5, специально для любителей делать скоропалительные выводы отмечу, что считаю этот брандмауэр одной из достаточно хороших разработок, успешно берущим планку общемировых стандартов. Обо всех сделанных замечаниях разработчики осведомлены и собираются в ближайшее время их исправить.
И возможно, повторюсь: защита должна быть комплексной.
Продолжая играть роль адвоката дьявола, упомяну еще об одном именитом новичке, появившемся на сцене осенью 2004 г., — Windows XP Firewall (SP2). Выступая оппонентом многочисленным специалистам и пользователям, поспешившим заявить о «революционном уровне защищенности Windows XP систем», отмечу, что ничего этого нет и в помине. Windows XP Firewall способен обеспечить лишь одностороннюю (!) фильтрацию сетевых соединений. Проверяются лишь входящие соединения, а исходящие ничем не ограничиваются. Помимо этого Windows XP Firewall уязвим для атаки вида «APR cache poisoning» и не фильтрует веб-трафик.
Завершая статью, хотел бы отметить, что ни одна защита не бывает совершенной. Приведенные примеры — тому подтверждение. Лучше заранее признать возможное существование уязвимости защиты, первому выявить ее слабости и работать, исправляя недостатки, чем ждать, пока кто-либо использует их в своих целях.
Упоминаемые в статье проекты и ресурсы
AWFT http://www.atelierweb.com/
Cain&Abel http://www.oxid.it/
CopyCat http://mc.webm.ru/copycat.exe
DNStester http://www.klake.org/~jt/dnstester/
DslReports http://www.dslreports.com/scan
FireHole http://keir.net/firehole.html
Ghost, WB http://www.firewallleaktester.com/
KAVPF http://www.kaspersky.ru/
Nmap http://www.insecure.org/
pcAudit http://www.pcinternetpatrol.com/
PC Flank http://www.pcflank.com/
SecurityFocus http://www.securityfocus.com/
SECURITY.NNOV http://www.security.nnov.ru/
Shields Up!!, LeakTest http://www.grc.com/
Surfer jt@klake.org
Sygate Online Service http://scan.sygatetech.com/
Thermite oliverlavery@hotmail.com
Yalta http://www.looknstop.com/
1 Исполнительные файлы тестов следует получать с ресурсов разработчиков. В противном случае есть шанс встретиться с подделкой, не только демонстрирующей, но и использующей уязвимость защиты.