PDA

Просмотр полной версии : Преодоление файрволов снаружи и изнутри



SDA
12.01.2006, 20:22
Рассмотрим еще одну популярную атаку, нацеленную на пакетные фильтры уровня IP. Среди прочих TCP-полей притаилось поле контрольной суммы. Как оказалось, брандмауэры не контролируют его, поскольку для этого им потребовалось бы собирать весь TCP-пакет целиком, к тому же расчет CRC – достаточно "прожорливая" операция, а загружать процессор нехорошо :).

Если tcpip.sys драйвер получает "битый" TCP-пакет, он молчаливо прибивает его, независимо от того, открыт данный порт или закрыт. Пакетные фильтры ведут себя иначе, и, если заданный порт закрыт, отправителю посылается "честный" RST, дескать, не ломись туда, куда тебя не просят. Конечно, пакет все равно будет прибит, но, по крайней мере, мы узнаем, что здесь присутствует агрессивный firewall. Впрочем, при некотором стечении обстоятельств проникнуть через брандмауэр все-таки можно, о чем советую прочитать в статье "Firewall spotting and networks analisys with a broken CRC" в журнале Phrack (www.phrack.org/phrack/60/p60-0x0c.txt).
Кстати, ни один известный брандмауэр не обращает внимания на порядок загрузки драйверов. Для 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-уровне, от этой проблемы не спасают, поскольку внешне хакерские пакеты выглядят вполне нормально. Конечно, такие дыры появляются далеко не каждый день, но и заплатки устанавливаются не сразу!
Любая программа, независимо от уровня своих привилегий, может эмулировать клавиатурный ввод, делая с окном брандмауэра все что угодно, например временно отключать защиту. Кстати говоря, некоторые брандмауэры конфигурируются и отключаются через реестр, что упрощает задачу еще больше.

Если брандмауэр выполнен в виде службы, ее можно "снести" или остановить. Взять хотя бы SPF. Разработчики пишут в документации: "Sygate Pesonal Firewall имеет специальный механизм предотвращения сбоев, который останавливает весь принимаемый/передаваемый сетевой трафик, в случае если служба брандмауэра окажется недоступной. Следовательно, если зловредная локальная программа прибьет наш сервис, весь трафик будет остановлен и она останется с носом. Тем не менее, при желании хакер может обойти этот механизм". Чтобы преодолеть брандмауэр, нужно остановить smc-сервис, что можно сделать двумя путями. Либо выполнить команду "net stop smcservice", либо послать сообщение через Service Control Manager API, которая не требует никаких привилегий.
Если на компьютере нет никаких proxy, можно попробовать послать DNS-запрос на подконтрольный хакеру сервер (кстати, он может находиться и на динамическом IP). Практически все брандмауэры спокойно пропускают такие запросы, не выдавая никаких предостерегающих сообщений и не обращаясь к пользователю за подтверждением. Конкретный пример можно найти в утилите DNS-tester, исходный код которой лежит на глухом безымянном сайте www.klake.org/~jt/misc/dnstest.zip. А здесь расположен альтернативный вариант, использующий запрос DnsQuery: www.klake.org/~jt/misc/dnstester.zip. Такую атаку выдерживает только Zone Alarm и Jetico.
Наиболее мощной и в то же время универсальной техникой обхода брандмауэров остается "троянизация" доверенных приложений. На каждом компьютере установлены программы, которым разрешен беспрепятственный выход в Сеть. Брандмауэры первого поколения ориентировались только на имя исполняемого файла, но никак не проверяли его содержимое. Хакеру было достаточно временно переименовать доверенный файл, подменив его своим. И это работало! Современные брандмауэры не только следят за целостностью доверенных приложений, но и распознают подмену используемых динамических библиотек или модификацию компонентов. Лобовая атака захлебывается, еще даже не начавшись.

В то же время ни один брандмауэр не контролирует образ загруженного приложения в памяти, что, собственного говоря, и неудивительно, поскольку многие процессы динамически расшифровываются на лету или создают/удаляют потоки для служебной необходимости. Поразительно, но даже такие наивные способы внедрения собственного кода, как CreateRemoteThread или WriteProcessMemory, обходят все известные брандмауэры и ни один из них даже не порывается пикнуть, хотя отследить вызовы CreateRemoteThread/WriteProcessMemory вполне реально. Готовых примеров хватает в Сети, вот только один из них: www.firewallleaktester.com/leaks/copycat.exe.

Другой невероятно тупой, но вместе с тем элегантный способ обхода, обманывающий все известные брандмауэры: достаточно набрать в командой строке "explorer.exe http://kpnc.opennet.ru" (естественно, http-адрес может быть любым), чтобы выйти в Сеть без запроса со стороны брандмауэра. Указав адрес свой домашней странички, атакующий сможет передать любые данные в строке запроса. Впрочем, эксперименты с SPF показали, что обход брандмауэра не такой уж и полный. И если напротив IE стоит не "Ask" (спрашивать), а "Block" (блокировать), то атакующий обламывается. Но и работа самого IE становится невозможной, так что в целом испытания данного вида оружия можно считать состоявшимися.

Утилита, реализующая такую атаку, зовется WallBreaker (Разрушитель Стен). Когда-то она распространялась в исходных кодах, а теперь на сервере лежит только двоичный файл: www.firewallleaktester.com/leaks/WallBreaker.exe. Как пишет сам автор, "исходные коды моего тестера брандмауэров теперь недоступны, чтобы не помогать пионерам и вирусописателям. Тем не менее, я пошлю свою сырцы любому разработчику брандмауэров, который только захочет...".
Какой из брандмауэров лучший

Споры, что круче - "Мерседес или КАМАЗ" - всегда бесполезны. Существует слишком много критериев, чью значимость каждый оценивает по-своему. Например, Outpost – единственный брандмауэр с открытым SDK, что позволяет использовать его как мощный инструмент для исследования сетевого стека и различных хакерских инструментов. SPF ведет удобные профессиональные ориентированные протоколы, интегрированный XP Firewall наименее конфликтен и т.д.

На сайте www.firewallleaktester.com приведены результаты сравнительного тестирования десятка популярнейших брандмауэров на проникновение и выложено большое количество стенобитных утилит, многие из которых распространяются в исходных текстах. После небольшой доработки напильником их можно использовать для атак или встраивать в собственные программы известного назначения. Если исходных текстов нет - не беда. Файловые и сетевые мониторы, шпионы за API-функциями у нормального хакера всегда под рукой. К тяжелой артиллерии в лице IDA Pro и Soft-ice следует прибегать только в клинических случаях, поскольку дизассемблерный анализ требует времени, а время - это самый ценный и к тому же невосполнимый ресурс, которого никогда не хватает.

Как видно, самым стойким оказался Zone Alarm, но цена этой стойкости весьма относительна. Zone Alarm не контролирует вызовы CreateRemoteThread/WriteProcessMemory (прим. насчет 6 версии не уверен, так как речь скорее всего идет о 5), и поэтому все трояны, использующие эту технологию внедрения, останутся незамеченными! А ее используют, как показывает практика, очень многие...

Последнее место занял интегрированных XP'ый Firewall, который вообще контролирует неизвестно что и непонятно зачем :). За ним с минимальным отрывом идет Kaspersky Anti-Hacker, попавший в результаты тестирования совершенно случайно (это же совсем не брандмауэр, а дикий сын степей калмык, ядрен его кирдык). Остальные брандмауэры занимают промежуточное положение и более-менее пригодны для контроля над легальным трафиком, но с целенаправленной атакой ни один из них, увы, не справляется.
Из статьи Криса Касперски "Полоса препятствий"

orvman
13.01.2006, 04:09
Как сторонник Outpost буду говорить за него, насчет остальных не буду.
SDA,
в журнале Phrack (www.phrack.org/phrack/60/p60-0x0c.txt). ссылка битая.
Кстати, ни один известный брандмауэр не обращает внимания на порядок загрузки драйверов. ???? Но смысл в этом есть, но смотря что конкретно имеется ввиду. Если именно загрузка Винды, то все ОК. А вот с перезагрузкой-смене пользователя, то есть такая особенность Винды, закрытие служб. В данном случае Outpost имеет такую уязвимость, обещали пофиксить. Это вратце, долго пояснять, все прописано уже давным-давно.
Если драйвер модема или сетевухи загрузится раньше брандмауэра (часто все происходит именно так), то на какое-то время компьютер окажется беззащитен! Грош цена такому фаеру. Фаер обязан грузиться раньше сетевых девайсов, как это делает Outpost.
Обычно это продолжается от тридцати секунд до нескольких минут. Мда... - типа обычно два+два бывает четыре - из той же оперы. :) :) :)
Брандмауэр может и сам стать объектом атаки, особенно если представляет собой NDIS-драйвер, реализующий часть функций TCP/IP. А как без NDIS/TDI жить? Ест-но фаер обязан это дело держать под контролем, в другом случае это будет не ваер, а оболочка.
Любая программа, независимо от уровня своих привилегий, может эмулировать клавиатурный ввод, делая с окном брандмауэра все что угодно, например временно отключать защиту. Респектище! Все верно. Это самое элементарное - скрипты Винды (писал об этом уже где только можно).

некоторые брандмауэры конфигурируются и отключаются через реестр, что упрощает задачу еще больше. Не "некоторые", а абсолютно все! Надеюсь пояснять тут ничего не нужно? Теперь насчет ОР. Модуль Anti-Spyware.
Если брандмауэр выполнен в виде службы, ее можно "снести" или остановить. Если фаер грузится до всех сетевых девайсов, значит он грузится как служба. Долго пояснять. А снести действительно реально. Например "net stop ИМЯ_службы_(как)фаера". В ОР это дело давно пофиксили.

можно попробовать послать DNS-запрос на подконтрольный хакеру сервер (кстати, он может находиться и на динамическом IP). Практически все брандмауэры спокойно пропускают такие запросы, не выдавая никаких предостерегающих сообщений и не обращаясь к пользователю за подтверждением. Конкретный пример можно найти в утилите DNS-tester, исходный код которой лежит на глухом безымянном сайте www.klake.org/~jt/misc/dnstest.zip. А здесь расположен альтернативный вариант, использующий запрос DnsQuery: www.klake.org/~jt/misc/dnstester.zip. Такую атаку выдерживает только Zone Alarm и Jetico. Мда. Галавой апстену ударяюся. Только эти два? Эх...
Пользователям ОР! Статья "Руководство по созданию безопасной конфигурации Outpost" - ищем на www.yandex.ru - и делаем так, как я там прописал. Процитирую:

Указание адресов DNS серверов
...
Троянские программы, которые используют только DNS протокол, не имея возможности воспользоваться системным правилом, будут теперь нуждаться в специальном правиле. Это единственный вариант, который позволит блокировать DNShell leaktest (http://www.klake.org/~jt/dnshell/) и аналогичные эксплоиты.

orvman
13.01.2006, 04:10
Продолжаем.
Особенно понравилось вот это:

В то же время ни один брандмауэр не контролирует образ загруженного приложения в памяти Ни один???????? :) :) :)

www.firewallleaktester.com/leaks/copycat.exe.
Пользователям ОР - не беспокоиться насчет этого. Начиная с ОР v2.5.

Другой невероятно тупой, но вместе с тем элегантный способ обхода, обманывающий все известные брандмауэры: достаточно набрать в командой строке "explorer.exe http://kpnc.opennet.ru"
...
если напротив IE стоит не "Ask" (спрашивать), а "Block" (блокировать), то атакующий обламывается. Но и работа самого IE становится невозможной, так что в целом испытания данного вида оружия можно считать состоявшимися. Это смотря какой алгоритм в фаер заложен. Пользователям ОР - не беспокоиться насчет этого.

Утилита, реализующая такую атаку, зовется WallBreaker (Разрушитель Стен). Когда-то она распространялась в исходных кодах, а теперь на сервере лежит только двоичный файл:
www.firewallleaktester.com/leaks/WallBreaker.exe.
Пользователям ОР - не беспокоиться и насчет этого бреда.

На сайте www.firewallleaktester.com приведены результаты сравнительного тестирования десятка популярнейших брандмауэров на проникновение и выложено большое количество стенобитных утилит, многие из которых распространяются в исходных текстах. Старо. И известно всем.
Пользователям ОР - не беспокоиться. При правильных настройках все ОК.
Достаточно поправить файлы brain.dll и hands.dll в корневом каталоги диска C. А как это сделать - прописано вот здесь: http://forum.five.mhost.ru/kb2 - Вопрос 1
Из статьи Криса Касперски "Полоса препятствий"
Башку оторвать надо ламеру-Крису.
Все это актуально было года полтора назад.
А на сей момент - бредятина полнейшая...

Sanja_guest
13.01.2006, 18:53
Кстати, ни один известный брандмауэр не обращает внимания на порядок загрузки драйверов

Sygate загружался до... это раз

2. в современный FW есть опция - Block traffic until bla bla is loaded

Sanja_guest
13.01.2006, 18:57
Как видно, самым стойким оказался Zone Alarm, но цена этой стойкости весьма относительна. Zone Alarm не контролирует вызовы CreateRemoteThread/WriteProcessMemory

угу.. эт ток ламурские фв делают Ж) умные люди выдают запров на OpenProcess() и в за 5.х 6.х такое уже давно было Ж)

Sanja_Guest
13.01.2006, 19:00
Любая программа, независимо от уровня своих привилегий, может эмулировать клавиатурный ввод, делая с окном брандмауэра все что угодно, например временно отключать защиту.

Еще зоне Аларм 3 имел галочку - "Protect ZoneAlarm client" которая какраз для такого была созданна... и сейчас она есть Ж)

Sanja_guest
13.01.2006, 19:04
Не "некоторые", а абсолютно все! Надеюсь пояснять тут ничего не нужно? Теперь насчет ОР. Модуль Anti-Spyware

Причем тут Анти-Спайваре?

Если фаер грузится до всех сетевых девайсов, значит он грузится как служба. Долго пояснять.
ЛОЛ ЛОЛ ЛОЛ! Сервысы грузатся намного пожже tcpip.sys

А снести действительно реально. Например "net stop ИМЯ_службы_(как)фаера". В ОР это дело давно пофиксили.

:)) Зато TerminateProcess() работает Ж)

Xen
13.01.2006, 19:46
ZwTerminateProcess ;) вывод, надо мониторить ZwOpenProcess, внатуре

SDA
14.01.2006, 13:10
orvman, тут еще одна статья появилась, правда я не понял к какой версии Outpost это применимо, автор Kumbayo с http://omegacm.spb.ru/index.php?page=main
статья http://www.securitylab.ru/analytics/254727.php , интересно послушить твои комментарии, как специалиста по Outpost
P.S. orvman, читаю сейчас твою переписку с Kumbayo если можно выложи по твоему заключению минусы в его статье.

kumbayo
19.01.2006, 23:23
SDA :) Вы можете задать их прямо мне, да еще и на вашем же форуме:) Истерику насчет OP прекратите, нормальный фаервол, если бы он был плохой, но я бы не выбрал его для описания в статье.
Да, есть недочеты, но главное - развиваться. И помнить, что нет панацеи от всех болезней. И самое главное - спасение утопающих - дело рук самих утопающих.

SDA
20.01.2006, 13:42
kumbayo, никаких истерик здесь нет, я вообще закрываюсь "Зиной", так что все эти уязвимости тобой описанные мне по "барабану". Интерес Outpost у меня остался, потому что я до Zone Alarm был на Outpost. Другое дело, что и остальным, кто работает на Outpost, было бы интересно послушать мнение о твоей статье специалиста по Outpost - orvman. Получить два мнения по такой животрепещущей теме очень интересно.

orvman
24.01.2006, 05:29
SDA, да тут комментировать-то нечего. Свои комментарии я выложил на форуме securitylab и на неоф. форуме ОР.
Вкратце скажу так, в чем-то kumbayo и прав, но не совсем. Насчет gzip я опять посмеялся. Особенно с репликами - типа срочно менять ключ в реестре. Теперь насчет того примера, где вроде как есть обход.
1. Читаем справку к ОР и делаем выводы для чего он предназначен, а для чего нет. Теперь далее. Как можно комментировать программу, которая запущена локально и получила все привиллегии как админа?
С таким же успехом, имея навыки можно вырубить все, что угодно, с любой программной защитой.
2. Если программа не работает, во всяком случае у меня и с моими жесткими правилами и настройками, то и комментировать тут нечего.

kumbayo
Истерику насчет OP прекратите, нормальный фаервол, если бы он был плохой, но я бы не выбрал его для описания в статье.
Я рад за Вас, а я бы и не сидел на нем, если бы был плохой, хотя глюки и недочеты есть везде.

kumbayo
30.01.2006, 23:17
orvman хе-хе и тут вы:)
Я думаю всем заинтерисованным нужно сходить на ваш сайт и почитать мои и ваши коментарии:)