Недавно корпорация Microsoft зарегистрировала патент (пат. США 6 662 341 от 9 декабря 2003 г.) на технологию исполнения HTML-приложений вне Web-браузера. Идея его авторов более чем благородна, так как призвана помочь тем, кто не обладает познаниями в области программирования на Си++, Visual Basic, Delphi и т. п., создавать собственные приложения, основанные на более известных простым пользователям и интернетчикам скриптовых языках VBScript, JavaScript и стандартном HTML-коде. В его основе лежит новый формат файлов - HTA (производное от HTML application).
Сам по себе этот формат достаточно удобен, в частности система подсказки в Windows построена именно с его помощью - обычные HTML-страницы запускаются без браузера и полностью отображаются в окне HTA-файла со всеми ссылками, графикой и эффектами, и при этом исполняют разные скрипты. Создать и отредактировать подобный файл гораздо проще и быстрее, чем, например, программу на Си или Delphi. Удобство работы с HTA выражается еще и в широкой доступности редакторов для этого формата, в качестве которых могут использоваться как обычные текстовые редакторы (наподобие "Блокнота" в Windows), так и профессиональные HTML-редакторы (FrontPage, Macromedia Dreamweaver и т. д.).
Структура HTA-документов
Создание HTA-документов сводится к установке специальных атрибутов в раздел ... обычной html-страницы и последующему ее сохранению в формате HTA. Вот пример листинга простого HTA-файла*1:
_____
*1 Подробнее с настройками HTA-файлов вы можете познакомиться в таблице.
<html>
<head>
<HTA:APPLICATION id="HTA"
applicationName="TEST HTA"
border="thin"
borderStyle="normal"
caption="yes"
icon="C:/tempfavicon.ico"
maximizeButton="yes"
minimizeButton="yes"
showlnTaskbar="no"
windowState="normal"
innerBorder="yes"
navigable="yes"
scroll="auto"
scrollFlat="yes"
singlelnstace="yes"
sysMenu="yes"
contextMenu="yes"
selection="yes"
version="1.0" />
</head>
<body>Текст страницы</body>
</html>
При попытке с помощью браузера открыть этот файл вам будет предложено сохранить его на жестком диске (рис. 1), так как браузер не интерпретирует атрибуты HTA. Windows же определяет подобные файлы как исполняемые. Те, кто пользуется стандартом HTA, ценят в нем то, что файл может исполнять Java- и VB-скрипты. Эта особенность позволяет создавать много полезных приложений - от простого календаря и конвертора валют до программы чтения новостных групп или менеджера онлайнового доступа к блогу, сайту или форуму. При этом, обладая даже небольшим опытом создания веб-страниц и написания простых Java-скриптов, пользователь может создавать такие HTA-файлы, которые ни по функциональности, ни по дизайну не будут уступать небольшим программам, написанным на более сложных языках. Вообще, исходя из своего опыта могу сказать, что HTA-формат удобен, когда у вас вдруг возникает проблема, которую надо решить быстро, простыми средствами и без привлечения программистов.
Проблемы безопасности
Но в каждой бочке меда есть своя ложка дегтя. Как вы уже, наверное, поняли, HTA-файлы нельзя просматривать в браузерах, а значит, файл будет обходить все предусмотренные для них средства защиты. Именно этот факт пугает большинство людей, негативно отзывающихся о технологии HTA. Ведь в обход защиты с помощью VBscript и Jscript вполне можно организовать запись данных в реестр в фоновом режиме, запустить сторонние программы и скрипты, выполнить операции по чтению и записи на диск. И если кто-то думает, что это какая-то далекая перспектива, то глубоко ошибается, хакеры уже достаточно хорошо освоили данный стандарт и с успехом применяют его для своих целей.
Рис. 1. Изображение всплывающего окна, вызываемого
при попытке открытия hta-файла с помощью браузера
Ярким примером использования НТА-стандарта в противоправных действиях хакеров можно назвать написание разного рода червей, попадающих на наши компьютеры через почтовые программы. Причем некоторые из них приходят к нам прямо в теле письма (HTML-страницы) в виде исполняемого (по открытию письма) скрипта. Задействовав ошибку в коде Internet Explorer’а, называемую специалистами Scriptlet.Typelib security vulnerability, червь с помощью скрипта создает файлы без каких-либо предупреждений об этом пользователя. Обычно создается VBscript в виде HTA-файла, который и содержит тело вируса. Название такого файла, как правило, зашифровывается под какое-то системное имя (например, fonts.hta или system.hta) и располагается в каталоге автозагрузки. Поэтому при очередном запуске Windows автоматически запускается и HTA-файл. Когда код червя в HTA-файле получает управление, то запускает программу Outlook со скрытым окном, помещает в нее письма в формате HTML, адресованные всем, чьи адреса хранятся в адресной книге Outlook, и включает в них свой скрипт. Таким образом, червь сам распространяет себя. Кстати, для скриптов, не использующих в своей работе HTML-код и основное HTA-окно, нет необходимости указывать атрибуты HTA-документа, в этом случае код записывается между тегами <script>...</script>.
Рис. 2. Изображение всплывающего окна, вызываемого VB-скриптом из hta-файла
Похожий принцип лежит и в основе действия вирусов, распространяемых вместе с программами. В этом случае на ваш диск может попасть и такой с виду безобидный файл, как readme.hta или help.hta. При первом же запуске этих файлов вместе с демонстрацией текста в фоновом режиме производится ряд записей в реестр. И несмотря на все ваши последующие действия, ваш браузер будет содержать дополнительные панели, кнопки или неизменную стартовую страницу до тех пор, пока вы не обнаружите сам код вируса в HTA-файле.
На этом фоне куда более безопасными выглядят разного рода шутки на основе HTA-файлов. Так, однажды при запуске своего компьютера я обнаружил необычное окно (рис. 2). Меня насторожила надпись VBScript в заголовке окна. Заподозрив неладное, я обратился к папке автозагрузки в главном меню и обнаружил там файл win.hta с вот таким содержимым:
<script language=VBScript>
Set Shl = CreateObject("WScript.Shell")
MsgBox("Внимание! Ваш винчестер содержит битые кластеры и сейчас будет отформатирован...")
window.close()
</script>
Такой файл при каждой загрузке Windows создавал всплывающее окно с предупреждением о форматировании жесткого диска. Диск конечно же не форматировался, так как скрипт не содержал такой команды, но поволноваться заставлял.
Немного оптимизма
Однако те же функции и возможности скриптовых языков и HTA, несмотря на все свои недостатки, позволяют делать много полезной работы. Так, веб-мастера или веб-администраторы могут использовать НТА-формат для контроля за работой компьютера, отслеживания индивидуальной статистики, ограничения доступа к дискам и папкам, создания специальных инструментов для быстрого доступа и контроля за отдельными страницами сайтов или организовать прямо в рабочем браузере "порт" для внесения новостей на сайт, которые будут появляться на нем в режиме реального времени. Так что в зависимости от интересов каждый может найти для себя в этой технологии что-то полезное.
Таблица настроек атрибутов для HTA-документов
Внимание тех, кто продолжает скептически смотреть на HTA, хотелось бы обратить на то, что Microsoft предлагает этот формат для личного пользования при необходимости решения небольших текущих задач и не рекомендует его для обмена данными и их распространения. Другими словами, если вы не будете передавать файлы HTA и копировать чужие, то о безопасности не стоит и беспокоиться. Если же Microsoft захочет изменить статус HTA-файлов, то без серьезных работ по обеспечению безопасности подобная идея обречена на скорую смерть. В случае, если вопрос с безопасностью удастся решить в ближайшее время, популярность новой технологии, вполне возможно, сравнится с популярностью тех же JScript или VBscript.
P. S. На сайте Microsoft (http://support.microsoft.com/support/kb/articles/Q240/3/08.ASP) можно загрузить плагин для защиты дыры в Internet Explorer ("Scriptlet.Typelib" security vulnerability). Если же вы не планируете использовать в своей работе HTA-файлы и хотите обезопасить собственный компьютер от случайных вирусов, использующих этот формат, то лучше удалить поддержку таких файлов. Для этого дважды кликните значок Мой компьютер на рабочем столе, выберите вкладку Панель управления, в меню окна выберите Сервис - Свойства папки - Тип файлов, укажите HTA-HTML application и нажмите кнопку "Удалить".
С автором можно связаться по адресу: viacheslavb@ua.fm.