Защита снаружи и изнутри (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) Внедрение кода использует другой подход. В памяти ищется заведомо разрешенная программа, в ее адресное пространство внедряется код, через который осуществляется взаимодействие с клиентской частью троянской программы. Межсетевой экран разрешил взаимодействие программы с внешней сетью, поэтому он пропускает и запросы троянца. |