Дальше мы продолжим мучить наши бедные брандмауэры программой под названием YALTA или Yet Another LeakTest Application (www.soft4ever.com/security_test/En/index.htm), которая имеет два типа тестов: классический и продвинутый. Классический ориентирован на проверку правил доступа к портам по умолчанию, а продвинутый использует специальный драйвер, чтобы посылать пакеты прямо на сетевой интерфейс. Удалось опробовать только первый тест, так как второй работает только под 9x. Для проверки были выбраны порты, рекомендованные разработчиками ЯЛТЫ (21, 53, 67, 1030, 5555). Если файрвол запищит на каждую из попыток посылки пакетов, то испытание можно считать пройденным успешно. Это удалось сделать только ZoneAlarm'у. Kerio потерпел неудачу на 53 порту, а Outpost пропустил пакеты к 53 и 67 портам, но при отправке данных на 53 порт сообщил о неверном DNS-запросе (конечно, "Does it leak?" никак не тянет на DNS-запрос).
Следующим препятствием на пути файрволов к совершенству стали pcAudit и pcAudit2 (www.pcinternetpatrol.com). Обе программы проверяют DLL injection, но вторая отличается от первой тем, что пытается попасть не только в explorer.exe, но и во все другие запущенные в данный момент приложения. И если кому-нибудь из них разрешен доступ в Сеть, то при inject-уязвимости загрузится страничка со списком файлов папки "Мои документы" и скрином экрана (эффектно, неправда ли?). Оба теста провалил Kerio, но Outpost как раз справился. Результаты очень странные: FireHole делал то же самое, а вышло совсем наоборот. Возможно, методы внедрения dll разные. Но будем считать, что Outpost исправился. Да, чуть не забыл: ZoneAlarm выдержал все нападения с честью.
Теперь проверим сетевые экраны на process injection. Для этого воспользуемся Thermite (www.firewallleaktester.com/leaks/thermite.exe). Утилита внедряет свой код непосредственно в адресное пространство удаленного процесса, создавая отдельный поток. В случае удачного внедрения и несрабатывания файрвола, на жестком диске, в директории с термитом, появляется файл securityfocus.html. Kerio снова провалил тест. Остальные справились.
Copycat (http://mc.webm.ru) делает то же самое, что и Thermite, но не создает поток для своего кода. Испытание пройдено успешно всеми.
Далее в нашем арсенале появляется Wallbreaker (www.firewallleaktester.com). Утилита проводит четыре теста. Первый использует explorer.exe для вызова IE. Таким образом, получается, что браузер запустила не "вредоносная" программа, а проводник, и в случае доверия к нему со стороны файрвола информация с компьютера просочится в Сеть. Второе испытание по-хитрому запускает IE. Как сказал разработчик, "Это достаточно известная шутка, но многие firewalls на ней прокалываются". Третий тест – это модификация первого, но для вызова IE он использует следующую цепочку: Wallbreaker.exe-> cmd.exe-> explorer.exe-> iexplore.exe. Четвертый - расширение третьего теста. Wallbreaker, установивший запланированную задачу, использует AT.exe, который в свою очередь выполнит задачу через svchost. Цепочка такова: Wallbreaker.exe-> AT.exe-> svchost.exe-> cmd.exe-> explorer.exe-> iexplore.exe. Для добавления задания создается bat-файл с произвольным именем. Чтобы тест полноценно сработал, нужно чтобы планировщик задач Windows был запущен. Правда, ничто не мешает сделать это какой-нибудь вредоносной программе самой. Четвертое испытание провалили все, а Outpost ухитрился осрамиться на втором.
Теперь мы попробуем провернуть фокус с саморестартингом. В этом нам поможет Ghost (www.firewallleaktester.com). Когда мы запускаем какое-нибудь приложение, для которого не установлены правила доступа в Сеть, файрвол при помощи WinAPI-функций получает PID и имя процесса, приостанавливает его и предлагает пользователю выбрать его дальнейшую судьбу. Ghost же, как только передает сведения о себе, сразу "убивает" себя и тут же снова стартует. Затем он запускает IE и передает на сервер указанную в начале теста строку. Если файрвол не следит за дочерними процессами или просто не успевает сработать вовремя, мы будем лицезреть страничку с наполовину затертыми IP-адресами таких же счастливых обладателей сетевых экранов. Это серьезное испытание прошли все: и ZoneAlarm, и Outpost, и Kerio Personal Firewall.
Следующая программа называется DNS tester (www.klake.org/~jt/dnshell). В операционных системах w2k/WinXP имеется сервис DNS-клиента, который выполняет все DNS-запросы. Само собой, файрвол должен доверять этой службе (svchost.exe) по умолчанию, иначе для серфинга нам пришлось бы запоминать не имена сайтов типа www.xakep.ru, а их IP-адреса. DNS tester использует эту службу, чтобы передать данные на сервер (вовсе не DNS). Троянцы вполне могут послать пароли и еще что-нибудь своему хозяину. Как ни проста и ни опасна такая идея, сопротивляться программе, реализующей ее, смог только ZoneAlarm.
Последней внутренней проверкой стал Surfer (www.firewallleaktester.com/leaks/surfer.exe). Утилита создает скрытый десктоп, затем запускает в нем IE, не передавая ему никакого url'а. После этого стартует новая копия IE, а первая уничтожается. Протокол url передается через DDE новой копии браузера. Все эти хитрые манипуляции были сделаны потому, что многие файволы контролируют прямой вызов ShellExecute или CreateProcess. Как оказалось, не зря мучились авторы утилиты: Outpost завалил финальный экзамен, а Kerio и ZoneAlarm устояли.
Итак, все тесты пройдены, и для окончательного прояснения картины внутренней безопасности предлагаю посмотреть на таблицу, в которой сведены результаты всех тестов испытуемых экранов.
Бесспорным лидером объявляем ZoneAlarm Security Suite. Kerio и Outpost - примерно на равных. Однако стоит обратить внимание на то, что Kerio практически совершенно не устойчив к inject'у, а у Outpost'а, хоть он и проваливался на некоторых тестах, не наблюдалось никаких тенденций к неудачам.
А что снаружи?
Следующим этапом проверки наших файрволов будет сканирование портов. Повторюсь, что успех в преодолении этого испытания зависит в большей степени от пользователя, а не от сетевого экрана, поскольку всегда есть возможность настроить правила доступа к портам настолько криво, что любой чуть грамотный хакер поломает систему за пять минут. Поэтому для чистоты эксперимента были оставлены нетронутыми настройки, отвечающие за доступ к машине извне. Многие разработчики конфигурируют свои продукты по умолчанию так, чтобы сразу после инсталляции ими можно было пользоваться. По их мнению, стандартная конфигурация подходит большинству пользователей.
Теперь выберем инструменты для проверки. Первый попавшийся мне онлайн-сканер располагался на www.pcflank.com. Собственно, на этом сайте собрано шесть тестов, позволяющих испытать защиту компьютера в Сети со всех сторон. Первый из них – это Stealth Test. Он проверяет машину на "видимость" в интернете. Для этого используются такие технологии сканирования, как TCP ping, TCP NULL, TCP FIN, TCP XMAS и UDP scanning. Вторая онлайн-утилита представляет собой продвинутый сканер портов. Он имеет довольно много настроек: техника скана (TCP connect или TCP SYN), выбор диапазона портов и др. Еще один инструмент для проверки privacy – браузер сканер. Он проверяет, сколько персональной информации отсылает обозреватель интернета :) на удаленный сервер. Еще имеется тест на троянцы и эксплойт-тест. Мы будем использовать Quick test, который включает в себя продвинутый скан портов, браузер-тест и троян-тест, однако, замечу, для нашей задачи подошел бы и простой скан портов, так как троянцев на моей машине нет, а проверять бродилку не входит в поставленную задачу. Итак, выбираем ссылку Quick test, читаем подробности теста, жмем кнопочку Start test и ждем некоторое время в зависимости от скорости соединения с Сетью, обычно не больше трех минут. Томительные секунды прошли, и что же мы видим? Тест на троянцев прошли все файрволы (еще бы!), со сканированием портов тоже справились все, а privacy check "на пять" не сдал никто. Outpost был хуже всех, но есть подозрение, что это легко лечится грамотной настройкой.
Я не стал задерживаться на этом ресурсе дольше и пошел искать еще что-нибудь, чем можно проверить наши экспонаты. И, как ни странно, нашел. http://scan.sygate.com - онлайн-сервисы для проверки сетевых экранов, причем от производителя одного из них, к сожалению, не включенных в этот обзор. Нам сходу предлагается пройти проверку, которая соберет некоторую информацию о машине и попробует просканить порты. Жмем на кнопочку Scan now и ждем; через несколько секунд загружается страничка, на которой, кроме версии браузера и операционной системы, ничего нет. Тест не определил имя компьютера и запущенные сервисы, значит, файрволы справились.
Но на этом я не успокоился и решил попробовать Stealth scan. Этот тип проверки сканирует порты следующих служб: FTP DATA – 20, FTP – 21, SSH – 22, SMTP – 25, NetBIOS – 139, Server Message Block – 445 и др. Здесь все справились "на отлично", все порты были жестко заблокированы.
Для того чтобы полностью убедиться в силе стандартных настроек, я отправился на www.hackerwatch.org. Здешний набор тестов не так многообразен, как на предыдущих ресурсах, но порт-сканер есть. Им мы и воспользуемся. Жмем на соответствующую пимпочку и видим, что он проверяет все те же порты разных сервисов, и все испытуемые файрволы также удачно справились с этим заданием.
На этом я решил остановиться. Ясно, что персональные файрволы справляются с внешними угрозами гораздо лучше, чем с внутренними. Все продукты показали высокий уровень зашиты компьютера от сетевых атак и сканирования.
Подведение итогов
Вот мы и провели проверку основных функций персонального файрвола. Все разработчики заявляют, что их продукты могут то и то, но не говорят, насколько качественно реализованы эти возможности. Несколько лет назад тесты на "течи" провалили бы практически все брандмауэры. Тогда воротилы security-индустрии просто делали вид, что таких проблем не существует, и упорно закрывали глаза на результаты независимых испытаний. Но времена изменились, и программисты всерьез занялись своей работой.