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

Защита снаружи и изнутри

(c)oded by Lame@pochta.ru

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


Как пробивается защита

Фильтры содержимого далеко не всегда могут распознать вредоносный контент. Это связанно с тем, что полностью представить себе поведение клиентской программы практически невозможно. Ни разу не замечал, как программа из пары сотен строк, работавшая вчера, сегодня начинает вытворять непонятно что? Здесь то же самое: фаервол думает одно, а браузер или почтовая программа – совсем другое.

Например, межсетевой экран настроен на запрет VBScript. И пользователь получает страницу, на которой присутствует подобный код:

<script language=javascript>

document.write('<script language=vbscript> alert "чмок"<\/script> ')

</script>

С точки зрения фаервола, это безобидный JavaScript, а, с точки зрения браузера, это два скрипта. Когда Internet Explorer начнет обрабатывать подобную конструкцию, JavaScript создаст в теле страницы динамический сценарий, написанный на запрещенном VBScript. Подобные проблемы были еще в 2002 году подробно описаны 3APA3ой (www.security.nnov.ru/advisories/content.asp), и, оказывается, они актуальны до сих пор.

А вот пример обхода фильтрации с использованием UNICODE - www.security.nnov.ru/opossum/test2.html. Работает на многих персональных межсетевых экранах, в том числе и на Outpost. Преобразовать свой html в UNICODE проще простого – запусти Notepad, нажми "Сохранить как" и в диалоговом окне выбери кодировку.

Практически все персональные межсетевые экраны реализуют проверку приложений, пытающихся работать с сетью. Они умеют отслеживать сетевую активность приложений, пропуская разрешенное приложение, например Internet Explorer, и блокируя все остальные. Сетевые фаерволы также умеют разграничивать доступ к ресурсам на уровне приложений. К примеру, Microsoft ISA Server при использовании Firewall Client позволяет указывать, каким из приложений можно пользоваться для выхода во внешнюю сеть.

Казалось бы, контроль сетевых приложений – весьма вредная вещь для большинства троянских программ. Однако это не так. Существует огромное количество методов, позволяющих обойти эту фильтрацию. Основные из них:

- использование собственных сетевых драйверов

- внедрение кода в память доверенных процессов (Code Injection)

- использование служебных протоколов

- использование доверенных приложений для утечки данных

Первые два метода требуют, чтобы троянская программа была запущена с правами администратора.

Использование собственных сетевых драйверов

Устанавливается свой собственный сетевой драйвер, работающий напрямую с NDIS. Если МСЭ фильтрует трафик на уровне Winsock, он просто «не видит» проходящего трафика. Сейчас трюк не актуален, поскольку он избитый и большинство фаерволов его ловит.

Внедрение кода в память доверенных процессов (Code Injection)

Внедрение кода использует другой подход. В памяти ищется заведомо разрешенная программа, в ее адресное пространство внедряется код, через который осуществляется взаимодействие с клиентской частью троянской программы. Межсетевой экран разрешил взаимодействие программы с внешней сетью, поэтому он пропускает и запросы троянца.

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