Hacked Me
Главная
Регистрация
 Administrator ICQ 399114574
Post Вирус в chm

Цель данной статьи – показать небезопасность формата chm, а также прочих сходных (its, mht). Речь идёт о том, что подобные файлы могут носить в себе вредоносное ПО. К статье будут приложены доказывающие данное утверждение рабочие примеры.

Статья рассчитана на широкую аудиторию, однако значительная часть материала будет требовать специфических знаний (программирование на Delphi, далеко не поверхностное знание ОС Windows).

Терминология:
HTMLHelp (Microsoft Compressed HTML Help, .CHM) — формат файлов контекстной справки, разработанный компанией «Майкрософт» и выпущенный в 1997 году в качестве замены формата WinHelp. Содержит в себе набор HTML-страниц, может также включать в себя содержание со ссылками на страницы, предметный указатель, а также базу для полнотекстового поиска по содержимому страниц. Все входящие в .CHM файлы сжаты алгоритмом LZX. Для просмотра .CHM-файлов используется стандартное средство просмотра, встроенное во все версии Windows, начиная с Windows 98 [1].
ITS - файл internet document set, открываемый Internet Explorer.
MHT – веб-архив, подобен its, открывается Internet Explorer.
ActiveX - технология Microsoft, предназначенная для написания сетевых приложений [2].

Введение.
Всем нам известно, какие расширения файлов могут нести угрозу. Типичные приложения-вирусы могут скрываться в *.exe, *.scr, *.pif, *.com, *.bat, *.cmd. Обычно, опытный пользователь избегает запускать файлы с данными расширениями, пришедшие из ненадёжных источников. Да и вообще любой новый исполняемый файл на своём компьютере проверит антивирусом. Пользователь знает, что вирус может находиться там. Только начинающие могут вот так вот запросто запустить экзешник (если антивирус позволит, а позволит он, если вирус будет, к примеру, закриптован). Но даже самый опытный пользователь никак не ожидает, что опасность может храниться в обычном, скажем так, текстовом файле. Он спокойно его запускает. Конечно, есть мысль: ассоциировать текстовый файл, как исполняемый. Но для этого необходим доступ к реестру компьютера пользователя и внесение там изменений. Ясно, что это не годится. Вот пользователь зашёл в Internet и грузит оттуда странички. И знает, что если появилось в Internet Explorer сообщение о загрузке ActiveX, то нужно отклонить. Сохраняет странички на диск. Но html-ки с хакерского портала просто так не сохранит, а проверит – он ведь знает о JS (JavaScript)-вирусах. А вот возьмёт читать мануал по Windows, а он – в формате chm. Но запустит этот мануал.chm без колебаний, зная о том, что chm – всего лишь справка, компилированная html-страничка. И не додумывается о том, что в chm работает и тот же JavaScript и ActiveX.

Я проводил опрос (Табл.2), в ходе которого, увы, выяснилось, что файл chm не рассматривается, как опасный большинством опрошенных (с умением работы на компьютере). Такая позиция опрошенных не верна. Сейчас я расскажу, почему и укажу опасность ActiveX для chm и подобных ему форматов.

Суть.
Исходя из того, что chm может содержать в себе целый сайт со всеми скриптами и прочими элементами, такими как ActiveX, делаем вывод – запуск chm-файла не менее опасен, чем загрузка странички из Internet. Продолжая рассуждения дальше, вспомним, что происходит при попытке загрузки ActiveX из Internet? Появляется запрос подтверждения действия запуска неподписанного ActiveX. Теперь обратим внимание на встроенное средство просмотра chm. Оно при запуске файла распаковывает его и открывает документ в окне, являющимся универсальным системным окном Internet Explorer. В Internet Explorer имеются ограничения, такие, как выдача запроса или даже блокирование ActiveX из ненадёжных узлов. Это справедливо, когда файлы открываются им из Internet. Однако в нашем случае Internet Explorer открывает локальные документы. И окно подтверждения при загрузке ActiveX (на большинстве версий, во всяком случае, Windows XP) по умолчанию, как правило (Табл. 1), не появляется. А запуск ActiveX фактически даёт такие же возможности, как и при запуске любого приложения. Получается, что chm=exe в (0,5875*(1-0,386))*100%=36,1% случаев? (Согласно Табл. 1 и Табл.2).

Это применимо не только к chm, а и к схожим форматам – its и mht. Для защиты пользователю необходимо в свойствах Internet Explorer поставить для всех зон обязательный вывод подтверждения при загрузке любых ActiveX.

Теперь рассмотрим создание примерного chm-файла с ActiveX – начинкой, извлекающей и запускающей обычное exe-приложение. То есть запустил chm, а получил запуск exe.
Для создания chm-файла из веб-страницы нам понадобится программа htm2chm [3]. Для создания ActiveX нужен Delphi. Редактировать ресурсы будем ресторатором. Для остального хватит и блокнота.

Программирование ActiveX. Запускаем Дельфи. Далее выбираем File/New/Other/ActiveX/Active Form, задаём название проекту и форме в диалоге. И появляется обычная форма. Но она практически нам не нужна. Скрываем её (делаем размеры формы минимальные). Затем ставим на форму таймер и на onTimer ставим процедуру извлечения ресурса в файл и запуск файла. Компилируем и выбираем View/Type Library/ - там GUID нашего ActiveX. Он понадобится дальше. Вот и всё.
Берём скомпилированный ActiveX и с помощью ресторатора вставляем в него ресурс (как задано в функции извлечения).
После создаём html-страничку с любым содержимым и обязательной строкой:
Код:
<object classid="clsid:899A34EE-438E-42A9-8F59-5E2983233E0F" codebase="gotovo.snd"> </object>

где 899A34EE-438E-42A9-8F59-5E2983233E0F – наш GUID, а gotovo.snd – имя файла с ActiveX.
Всё сохраняем в одной папке и компилируем в chm-файл с помощью программы htm2chm.

К вышесказанному прилагается пример описанного ActiveX с исходными кодами и готовая демонстрационная chm такого рода с описанием.

Заключение.
В общем, хочу сказать, что не встречал применения такого метода с chm. Всё это было изложено с целью упреждения использования такого метода против пользователей. Ведь может быть не только применение chm, как хранителя и извлекателя вредоносного файла, но использование для непосредственной модификации структуры прочих имеющихся файлов chm таким образом, что и они станут вредоносными – появление нового класса самораспространяющихся вирусов.

Написал статью, приготовил примеры и провёл небольшое исследование со статистической обработкой begin end, 15.03.2007.

Ссылки:
1. http://ru.wikipedia.org/wiki/HTMLHelp
2. http://www.emanual.ru/show/55/
3. http://htm2chm.by.ru/

Таблицы:
Табл. 1 - успешность запуска на компьютерах
Табл. 2 - доверие опрошенных к *.chm

Примеры к части статьи "Программирование ActiveX":
"Примерный сборочный комплект".
Демонстрационный продукт.

__________________
Добавлено: Поскольку появились вопросы такого плана в ходе создания Active X:
"Я создал ActiveX, гружу из паги его и всё работает. Но когда изменяю его заменяю старый новым и снова гружу изменений нету. Почему?"
То немного дополню вышеизложенную статью следующими рекомендациями:
1. При первом запуске Active X, он кэшируется операционной системой в папке вида: C:\WINDOWS\Downloaded Program Files\ под тем именем, под которым был запущен. Потому, при изменении его в источнике зарузки, но прежнем GUID, он грузится из кэша. Устранением проблемы может быть: удаление файла из кэша, удаление записи из реестра или смена GUID.
2. Active X должен производить какие-либо действия только по таймеру.
3. Уменьшить размер поможет упаковка с помощью любых пакеров. К тому же можно создавать Active X и на том же С++, VB.