Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #74, ФЕВРАЛЬ 2005 г.

Секс с IFRAME

Крис Касперски ака мыщъх

Хакер, номер #074, стр. 074-060-1


Как размножаются черви в Internet Explorer

Время идет, а дыры в программах остаются. Количество бажных машин исчисляется миллионами - о лучшем подарке к Новому годы хакеры не могли и мечтать. Недавно в IE было найдено очередное переполнение буфера, на этот раз в теге IFRAME. Для нового бага уже появился эксплоит. Не совсем работающий, но уже растиражированный по всей Сети. Как отремонтировать его? Как переписать shell-код? Как защитить свой компьютер от атак?

Источник заразы

В начале ноября 2004 года в Microsoft Internet Explorer была обнаружена очередная уязвимость: переполнение буфера в плавающих фреймах (тэг IFRAME) позволяет передавать управление на shell-код и захватывать управление машиной, после чего жертву террора можно насиловать как угодно и чем угодно. Например использовать как плацдарм для дальнейших атак или спама, похищать конфиденциальную информацию, бесплатно звонить за бугор и много еще чего. Уязвимости подвержены: IE версий 5.5 и 6.0 и Opera 7.23 (другие версии не проверял). Неуязвимы: IE 5.01 SP3 или SP4, IE 5.5 SP 2, IE 5.00 на Windows 2000 без сервис-паков, IE 6 на Windows Server 2003 без сервис-паков, IE 6 на Windows XP SP 2. По умолчанию IE не запрещает выполнение плавающих фреймов в интернет и интранет-зонах. Чтобы подцепить заразу, жертве достаточно зайти на URL с агрессивным кодом внутри. С Outlook Express дело обстоит иначе: HTML-письма открываются в зоне ограниченного доверия, и тэги IFRAME по умолчанию не обрабатываются. JavaScript не может самостоятельно вызвать переполнение буфера при просмотре письма, и для активации shell-кода жертва должна взять в руки мышь и кликнуть по ядовитой ссылке. Уже появилась новая версия интернет-червя MyDoom, использующая эту технологию для своего распространения, да и новые черви не за горами, так что не теряй бдительности и не кликай по ссылкам, если не доверяешь им на 100%.

Технические подробности

Переполняющий код в общем случае выглядит так: <IFRAME src=file://AAAAAA name="BBBBBBxx"></IFRAME>, где AAAAAA и BBBBB - текстовые строки строго дозированной длины, набранные в UNICODE, а xx - символы, затирающие указатель на виртуальную функцию экземпляра ООП-объекта, находящуюся внутри динамической библиотеки SHDOCVW.DLL. Дизассемблерный листинг уязвимого кода приведен ниже (конкретные адреса варьируются от одной версии IE к другой):

Фрагмент IE, обеспечивающий передачу управления на shell-код

7178EC02 8B 08 MOV ECX, DWORD PTR [EAX]

7178EC02 ; загружаем указатель на таблицу виртуальных функций

7178EC02 ; некоторого ООП-объекта

7178EC02 ; после переполнения в регистре EAX окажутся символы xx,

7178EC02 ; расположенные в хвосте UNICODE-строки с именем файла

7178EC02

7178EC04 68 84 7B 70 71 PUSH 71707B84

7178EC04 ; заталкиваем в стек константный указатель

7178EC04

7178EC09 50 PUSH EAX

7178EC09 ; заталкиваем в стек указатель this,

7178EC09 ; указывающий на экземпляр ООП-объекта

7178EC09 ; с таблицей виртуальных функций внутри

7178EC09

7178EC0A FF 11 CALL NEAR DWORD PTR [ECX]

7178EC0A ; вызываем виртуальную функцию по указателю ECX,

Содержание  Вперед на стр. 074-060-2
<<< НАЗАД ||| ГЛАВНАЯ