Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #58, СЕНТЯБРЬ 2005 г.

Как работает брандмауэр

nezumi

Спецвыпуск: Хакер, номер #058, стр. 058-066-3


Выполняют ли брандмауэры свою задачу? Как сказать… С одной стороны, часть атак они все-таки отражают (кстати, сканирование портов атакой еще не является). Тем не менее, их очень легко обойти.

Пакетные фильтры во сне и наяву

Начиная с Windows 2000 в состав операционной системы входит примитивный брандмауэр, который был значительно усилен в Windows XP (особенно в SP2). Как маркетинговое средство он, может быть, и сгодится, но от хакеров практически никак не защищает. А широко разрекламированный Kaspersky Anti-Hacker - совсем даже не брандмауэр, а вообще непонятно что :).

Мы будем говорить о "правильных" брандмауэрах SyGate Personal Firewall, Outpost Firewall, Zone Alarm и др., представляющих собой пакетные фильтры, которые встраиваются в стек сетевых драйверов.

Упрощенная модель сетевой подсистемы Windows NT приведена на рисунке. На самом верху иерархии находится библиотека ws_32.dll, реализующая функции Winsock (они же "сокеты"), к числу которых принадлежат bind, connect и др. Большинство приложений взаимодействуют с сетью именно через ws_32.dll, вызовы которой очень легко перехватить: достаточно, например, заменить штатную библиотеку на свою собственную или модифицировать таблицу импорта. Однако это нафиг никому не нужно. Значительная часть трафика проходит мимо ws_32.dll. В частности, обращения к "расшаренным" ресурсам таким пакетным фильтром уже не обнаруживаются. К тому же зловредные приложения могут беспрепятственно вызывать функции нижних уровней, работая в обход Winsock. И тем не менее, перехват ws_32.dll все-таки используется в некоторых примитивных брандмауэрах и баннерорезках, к которым можно отнести ранние версии SyGate Personal Firewall (далее по тексту просто SPF) и AtGuard (он же "гвардеец").

Под ws_32.dll находится драйвер afd.sys (ancillary function driver – вспомогательный служебный драйвер), в котором реализованы основные операции над сокетами: создание сокета, установка соединения и т.д. Фактически ws2_32.dll представляет собой высокоуровневую user-mode-обертку, а afd.sys - ее kernel-mode часть, образуя что-то вроде айсберга. Если быть совсем точным, то этих оберток целых две: между ws2_32.dll и afd.sys находится библиотека msafd.dll, на которую садятся некоторые брандмауэры, пытающиеся фильтровать трафик. Однако это не самое удачное решение. Во-первых, часть трафика идет мимо сокетов, а во-вторых, приложению ничего не стоит обратиться к драйверу afd.sys напрямую.

Назад на стр. 058-066-2  Содержание  Вперед на стр. 058-066-4