На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Клиентские сценарии и вредоносный код

"Вирус "ILOVEYOU"за 5часов заразил более 1 миллиона компьютеров"4
Клиентские программы, такие как Microsoft Excel, Word или Internet Explorer, мо­гут исполнять код, который загружается из непроверенных источников. Таким обра­зом эти программы создают благотворную среду для компьютерных вирусов и "червей". И действительно, до недавнего времени причиной быстрого распространения самых мощных вирусов было использование хакерами выполнения сценариев на клиентских хостах. Примерами таких вирусов являются Concept (1997 год), Melissa (1999 год), Hove You (2000 год), NIMDA (2002 год). Для успешной атаки клиентской программы прежде всего необходимо определить локальные объекты и вызовы функ­ций API, к которым способен получить доступ клиентский сценарий. Используя мно­гие из этих библиотечных функций, можно получить доступ к локальной системе.
Рассмотрим атакуемую сеть, которая состоит из нескольких тысяч хостов. Учтите, что на многих из этих систем запущены одинаковые клиентские программы, одинаковые версии Windows, одинаковые клиенты электронной почты и т.д. Таким образом, речь идет о гомогенной среде, в которой один вирус способен уничтожить (или еще хуже — незаметно использовать в своих интересах) значительную часть систем атакуемой сети. Используя методы восстановления исходного кода (описанные в главе 3, "Восстановле­ние исходного кода и структуры программы"), злоумышленник способен выявить уяз­вимые вызовы библиотек и создать вирус, который устанавливает потайные ходы, пере­хватчики сообщений электронной почты и средства атаки на базы данных.
Функция Host () программы Excel
При проведении атак можно воспользоваться функцией Host (), встроенной в офисные документы.
WScript.Shell
Очень часто целью атак становится интерпретатор, поскольку он позволяет по­лучить доступ к реестру Windows и выполнить команды посредством командного интерпретатора.
Myobj   =new ActiveXObject("WScript.Shell");
Myobj.Run("C:\\WINNT WSYSTEM32 \\CMD.EXE /С DIR C:\\ //A /P /S") ;
Компонент Scripting.FileSystemObj ect
Компонент Scripting. FileSystemObject очень широко используется в ра­боте многих "червей" на основе сценариев. Этот компонент позволяет создавать, чи­тать и записывать как двоичные, так и ASCII-файлы.
Объект Wscript.Network
Объектом Wscript .Network можно воспользоваться для монтирования сете­вых дисков.
Элемент управления Scriptlet .TypeLib
Используя известное уязвимое место элемента Scriptlet .Typelib в Internet Explorer, можно незаметно для пользователя создавать файлы. Злоумышленник мо­жет использовать это уязвимое место для размещения копий сценариев в опреде­ленных местах сетевых дисков (например, в каталогах автозагрузки) для их испол­нения после перезагрузки системы.
Поиск уязвимых локальных вызовов
Удачным методом для реализации описанных выше атак является поиск эле­ментов управления, которые обладают возможностями доступа к локальной сис­теме или локальной сети, в частности вызовов функций. Даже быстрый и непол­ный поиск в реестре системы Windows XP позволяет найти несколько библиотек DLL, которые отвечают за обслуживание интересующих вызовов функций для выполнения сценариев.
scrrun.dll
Scripting.FilesystemObject Scripting.Encoder wbemdisp.dll
WbemScripting.SWbemDateTime.1 WbemScripting.SWbemObjectPath.1 WbemScripting.SWbemSink.1 WbemScripting.SWbemLocator.1
wshext.dll
Scripting.Signer
Путем анализа зависимостей для библиотеки scrrun. dll определим возможно­сти библиотеки DLL. Другими словами, такое исследование позволяет выяснить, на что способны сценарии при использовании надлежащих команд. Чтобы установить, какие именно вызовы могут быть сделаны из конкретной библиотеки DLL, удобно воспользоваться программой по определению зависимостей между библиотеками. Программа Dependency Walker строит иерархическое дерево взаимозависимости модулей. Для каждого найденного модуля строится список всех экспортируемых функций и определяется, какие из этих функций в самом деле используются в дру­гих модулях. Эта программа поставляется совместно со стандартными средствами разработки от Microsoft (2).
Используя информацию о выявленных зависимостях, мы можем определить, что библиотека использует следующие импортированные функции из других вызывае­мых библиотек DLL.
Это довольно любопытный перечень, поскольку он показывает, какие функции способна использовать библиотека scrrun.dll по требованию сценария. Правда, не все перечисленные здесь вызовы функций непосредственно доступны для сцена­рия. Предлагаем вернуться к аналогии с подбором ключей, которую мы обсуждали в предыщущих главах. Сценарий предоставляет путь для взлома логических замков между хакером и интересующим его библиотечным вызовом. При определенных об­стоятельствах многие из этих библиотечных вызовов могут быть использованы при атаках с применением сценариев.
Web-браузеры и технология ActiveX
Современный Web-браузер превратился в ограниченную зону исполнения пере­носимого кода. Таким образом, браузер является мощным клиентом, который запус­кает непроверенный программный код. Это бы не стало такой серьезной проблемой, если бы браузер был надежно отделен от операционной системы. Даже "безопасные" системы переносимого кода наподобие виртуальной машины Java изобилуют выяв­ленными ошибками, которые позволяют хакерам обойти технологии безопасности ограниченной зоны исполнения.
Что же касается программного обеспечения от компании Microsoft, то ситуация во много раз хуже, чем с другими системами. Использование технологии COM/DCOM
ванных имен файлов и свойств файловой системы ("переход" с помощью относи­тельных имен) позволяет создать успешные программы атаки. ActiveX является прекрасной средой для организации программ атаки.
В некотором смысле уровень между сценариями и операционной системой фор­мирует еще одну зону доверия, в которой могут быть запущены классические атаки с помощью входных данных. В результате большая часть атак на серверные приложе­ния с помощью входных данных (см. главу 4, "Взлом серверных приложений") мо­жет успешно применяться и для клиентского программного обеспечения.
Шаблон атаки: предоставление имен локальных файлов для функций с поддержкой URL-адресов
Если для функции разрешено подавать на вход URL-адреса, то вместо них можно подставлять имена локальных файлов. Не сомневайтесь, что хакер найдет весьма любопытные варианты.
Имена локальных файлов и предзагрузчик ActiveX
Компания Microsoft совместно с Internet Explorer поставляет модуль, называе­мый предзагрузчиком (preloader). Используя сценарий для доступа к этому модулю (как это сделано в следующем примере кода JavaScript), можно читать файлы на ло­кальном жестком диске.
<script LANGUAGE="JavaScript"> <!—
function attack() {
preloader.Enable=0;
preloader.URL ="c:Wboot. ini"; preloader.Enable=l;
//->
</script>
<script LANGUAGE="JavaScript"FOR="preloader"EVENT="Complete()"> //Мы здесь,  если мы нашли файл. </script>
<а href="javascript:attack()">щелкните здесь, чтобы получить файл boot.ini</a>
Вызов функции GetObject () в Internet Explorer
В Internet Explorer предусмотрен вызов функции GetObject (), который может использоваться в многочисленных атаках.
DD=GetObject("Ошибка! Недопустимый объект гиперссылки...
/.. /boot. ini" , "htmlf ile") ; DD=GetObject ("с: Wboot. ini", "htmlf ile" )
Для доступа к тексту интересующего файла воспользуемся следующей командой.
DD.body.innerText
ActiveX-объект ixsso. query
Подобные проблемы затрагивают еще один объект ActiveX.

nn=new  ActiveXObject("ixsso.query") ; nn.Catalog="SystemM; nn.query='@filename =*.pwl ',-
Таким образом, вполне справедливо считать, что технология ActiveX предостав­ляет "широкую дорогу" для действий злоумышленников.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика