Полоса препятствий Крис Касперски Спецвыпуск: Хакер, номер #058, стр. 058-058-2 Кстати, ни один известный брандмауэр не обращает внимания на порядок загрузки драйверов. Для Dial-Up'а это действительно безразлично, поскольку к тому моменту, когда пользователь полезет в Сеть, брандмауэр будет гарантированно загружен. А для постоянного подключения (DSL-модем или сетевая карта) это уже критично! Если драйвер модема или сетевухи загрузится раньше брандмауэра (часто все происходит именно так), то на какое-то время компьютер окажется беззащитен! Обычно это продолжается от тридцати секунд до нескольких минут. Казалось бы, что тут такого? Вероятность атаки ничтожно мала... Как бы не так! В разгар эпидемии червя MS Blast (он же Love San) он ломился на порт чуть ли не через каждые полчаса и проникновение из маловероятного становилось вполне реальным. К тому же хакер может уронить атакуемую систему в синий экран, склоняя ее к перезагрузке, и тут же обрушить на нее шторм пакетов, ломящихся на заблокированный порт. К тому времени, когда брандмауэр завершит свою загрузку, атака будет завершена :). Брандмауэр может и сам стать объектом атаки, особенно если представляет собой NDIS-драйвер, реализующий часть функций TCP/IP. Специально подготовленным пакетом можно свалить его в синий экран или передать управление на shell-код. В частности, Jetico падает при сканировании машины утилитой XSpider (правда, последние версии Jetico не проверяли). Кроме того, никакой брандмауэр не спасает от атак на драйвер tcpip.sys, а ошибки в нем тоже содержатся. В частности, техническая заметка KB893066, датируемая 17 июня 2005 (www.microsoft.com/technet/security/bulletin/ms05-019.mspx), сообщает о дыре в tcpip.sys, способной выполнять shell-код или вызывать синий экран. Пакетные фильтры, работающие на NDIS-уровне, от этой проблемы не спасают, поскольку внешне хакерские пакеты выглядят вполне нормально. Конечно, такие дыры появляются далеко не каждый день, но и заплатки устанавливаются не сразу! Из неволи на свободу Пробиться сквозь брандмауэр изнутри намного проще, чем снаружи, поскольку брандмауэр физически выполняется на той же самой машине, что и зловредные приложения. Его код свободно доступен для изменения и модификации. Исключение составляют аппаратные firewall'ы, встроенные в материнскую плату. Однако их возможности сильно ограничены. В частности, они не могут определить, какое именно приложение ломится на данный порт - "честный" Лис или коварный троян. Любая программа, независимо от уровня своих привилегий, может эмулировать клавиатурный ввод, делая с окном брандмауэра все что угодно, например временно отключать защиту. Кстати говоря, некоторые брандмауэры конфигурируются и отключаются через реестр, что упрощает задачу еще больше. Если брандмауэр выполнен в виде службы, ее можно "снести" или остановить. Взять хотя бы SPF. Разработчики пишут в документации: "Sygate Pesonal Firewall имеет специальный механизм предотвращения сбоев, который останавливает весь принимаемый/передаваемый сетевой трафик, в случае если служба брандмауэра окажется недоступной. Следовательно, если зловредная локальная программа прибьет наш сервис, весь трафик будет остановлен и она останется с носом. Тем не менее, при желании хакер может обойти этот механизм". Чтобы преодолеть брандмауэр, нужно остановить smc-сервис, что можно сделать двумя путями. Либо выполнить команду "net stop smcservice", либо послать сообщение через Service Control Manager API, которая не требует никаких привилегий: |