Преодоление firewall'ов снаружи и изнутри


         

Из неволи на свободу или проникновение изнутри


Пробиться сквозь брандмауэр изнутри намного проще, чем снаружи, поскольку брандмауэр физически выполняется на той же самой машине, что и зловредные приложения и его код свободно доступен для изменения и модификации. Исключение составляет аппаратные firewall'ы, встроенные в материнскую плату, однако, их возможности сильно ограничены (в частности, они не могут определить какое именно приложение ломится на данный порт— "честный" Лис или коварный троян, поэтому мы их не рассматриваем).

Любая программа, независимо от уровня своих привилегий, может эмулировать клавиатурный ввод, делая с окном брандмауэра все, что угодно (например, временно отключать защиту). Пример готового кода можно найти в статье "знакомство с багами или ошибки клиентских приложений", опубликованной в этом номере "Хакера". Кстати говоря, некоторые брандмауэры конфигурируются и отключаются через реестр, что еще больше упрощает нашу задачу.

Если брандмауэр выполнен в виде службы, ее можно "снести" или остановить. Взять хотя бы тот же SPF. Разработчики пишут в документации: "Sygate Personal Firewall has a fail-safe mechanism that will stop all network traffic to and from the system in case the firewall service in unavailable. Hence if a malicious local program is able to kill the firewall service, all traffic will stop. However, there is a flaw in the implementation of this feature, allowing an attacker to bypass this mechanism." (Sygate Pesonal Firewall имеет специальный механизм предотвращения сбоев, который останавливает весь принимаемый/передаваемый сетевой трафик из, в случае если служба брандмауэра окажется недоступной. Следовательно, если зловредная локальная программа прибьет наш сервис, весь трафик будет остановлен и одна останется с носом. Тем не менее, при желании хакер может обойти этот механизм). Чтобы преодолеть брандмауэр, мы должны остановить smc-сервис. Сделать это можно двумя путями: либо выполнить команду "net stop smcservice", либо послать сообщение через Service Control Manager API, которая не требует никаких привилегий: SendMessage(hHdrControl, HDM_GETITEMRECT, 1, (LPARAM)NON-WRITABLE_ADDR);



Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий