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, попавший в результаты тестирования совершенно случайно (это же совсем не брандмауэр, а дикий сын степей калмык, ядрен его кирдык). Остальные брандмауэры занимают промежуточное положение и более-менее пригодны для контроля над легальным трафиком, но с целенаправленной атакой ни один из них, увы, не справляется.
Из статьи Криса Касперски "Полоса препятствий"
Если 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, попавший в результаты тестирования совершенно случайно (это же совсем не брандмауэр, а дикий сын степей калмык, ядрен его кирдык). Остальные брандмауэры занимают промежуточное положение и более-менее пригодны для контроля над легальным трафиком, но с целенаправленной атакой ни один из них, увы, не справляется.
Из статьи Криса Касперски "Полоса препятствий"