Как работает брандмауэр nezumi Спецвыпуск: Хакер, номер #058, стр. 058-066-5 Существует по меньшей мере три документированных способа для перехвата трафика на NDIS-уровне. Это, во-первых, NDIS Intermediate Driver (промежуточный драйвер NDIS), который садится между NDIS-драйвером и драйвером сетевой карты. Методика так себе. Писать целый драйвер ради одного перехвата - решение из разряда тяжеловесных, к тому же для работы с Dial-Up'ом приходится очень круто извращаться, поэтому особой популярности промежуточный драйвер не завоевал (разработчики брандмауэров, как ни странно, тоже люди, и ничто человеческое им не чуждо). Если возникнет желание познакомиться с ним поближе, всегда можно открыть раздел "Intermediate NDIS Drivers and TDI Drivers" из DDK. Вторым идет Filter-Hook Driver (драйвер фильтра-ловушки), представляющий собой обычный kernel-mode драйвер, фильтрующий сетевые пакеты на уровне IP и работающий из-под палки. Microsoft категорически не рекомендует использовать его для брандмауэров, и вот почему: всего лишь одна ловушка может быть установлена в системе, причем она устанавливается довольно "высоко" и зловредное приложение может легко отключить фильтрацию. DDK по этому поводу пишет: "Firewall-hook-драйвер не удовлетворяет требованиям, предъявляемым к брандмауэру, поскольку он работает на слишком большой высоте в сетевом стеке. Для обеспечения надлежащего функционала на XP и выше необходимо создать NDIS intermediate miniport-драйвер, управляющий отправкой и приемом пакетов через брандмауэр". Но ведь находятся же такие чукчи, которые используют firewall-hook-драйвер как основное средство фильтрации! Третьим и последним способом перехвата остается NDIS-Hooking Filter-драйвер (также называемый Pseudo-Intermediate NDIS Driver - псевдо-промежуточный NDIS-драйвер, сокращенно PIM), перехватывающий некоторые подмножества функций библиотеки NDIS для отслеживания регистрации протоколов и открытия сетевых интерфейсов, незаслуженно раскритикованный разработчиками Outpost Firewall'а. Помимо надежности к достоинствам данного метода следует отнести "прозрачную" поддержку Dial-Up-интерфейса, на котором сидит больше половины всех пользователей. Конкретные методики перехвата достаточно разнообразны, но так или иначе они сводятся к патчу "родного" NDIS-драйвера в памяти, что несравненно проще реализации промежуточного NDIS-драйвера с нуля. К тому же не так-то просто отключить грамотно организованный перехват. Это лучший способ фильтрации из всех имеющихся, и он используется во многих брандмауэрах. Однако, как уже отмечалось, обратная петля до NDIS-уровня уже не доходит, да и pid процесса-носителя определить весьма затруднительно, поэтому одного лишь NDIS-фильтра для реализации персонального брандмауэра будет недостаточно. В итоге Разумеется, существуют и другие способы фильтрации трафика, но мы не будем рассматривать все. Главное, что таких способов великое множество, и ни один из них сам по себе не безупречен. Хороший брандмауэр должен комбинировать прикладные фильтры с фильтрами ядерного уровня, но... ни один из них этого не делает, что позволяет хакеру легко обойти защиту. |