Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
2004 г.

Достоинства и проблемы HTML Application

Вячеслав Белов, Издательский Дом "КОМИЗДАТ"

HTА (HTML Application) - простая технология, позволяющая создавать полезные приложения даже без знания серьезных языков программирования. Вот только как быть с безопасностью?

В основе разработанной Microsoft технологии исполнения HTML-приложений вне веб-браузера, получившей название HTA (HTML Application), заложена благородная идея: помочь пользователям, не обремененным познаниями в области программирования на C+, Visual Basic, Delphi и других "тяжелых" языках, создавать приложения, основанные на более известных языках сценариев VBScript и JavaScript, а также в стандартном HTML-коде. Понятно, что, запатентовав подобную технологию, корпорация попытается обеспечить ее поддержку другими операционными системами. И все бы ничего, если бы не формат файлов, с помощью которого планируется продвигать эту технологию.

Вообще-то, сам по себе формат HTA достаточно удобен. К примеру, именно на его базе построена справочная система Windows. Благодаря ему же обычные HTML-страницы запускаются без браузера и полностью отображаются в окне HTA-файла - со всеми ссылками, графикой, эффектами и скриптами. Создавать и редактировать подобные файлы гораздо проще и быстрее, чем, например, программу на С или Delphi. Удобство работы с HTA еще и в широкой доступности редакторов - для этого формата могут использоваться как обычные текстовые редакторы вроде Notepad, так и специализированные HTML-редакторы (наподобие FrontPage или Macromedia Dreamweaver).

Создание HTA-документов сводится к установке специальных атрибутов в разделе <head>…</head> обычной HTML-страницы, после чего остается только сохранить ее с расширением. hta. Вот пример листинга простого HTA-файла:

<html>
<head> <HTA: APPLICATION id="HTA"
applicationName="TEST HTA"
border="thin"
borderStyle="normal"
caption="yes"
icon="С:/temp/favicon. ico"
maximizeButton="yes"
minimizeButton="yes"
showInTaskbar="no"
windowState="normal"
innerBorder="yes"
navigable="yes"
scroll="auto"
scrollFlat="yes"
singleInstance="yes"
sysMenu="no"
contextMenu="yes"
selection="yes" 
version="1.0" /> </head> <body>Текст страницы</body> </html>

При попытке открыть HTA-файл в браузере пользователю предлагается сохранить этот файл на жестком диске, так как браузер не интерпретирует расширение HTA. Windows же определяет HTA-файл как исполняемый и потому запускает его по щелчку на пиктограмме или через командную строку.

Благодаря тому, что стандарт HTA позволяет исполнять сценарии Java и VB, в этом формате можно создать много полезных приложений, от простого календаря и конвертора валют до ньюсридера и менеджера онлайн-доступа к блогам, сайтам и форумам. Поэтому, обладая даже небольшим опытом создания веб-страниц и написания простых Java-скриптов, пользователь может создавать HTA-файлы, которые ни по функциональности, ни по дизайну не уступают небольшим программам, написанным на более серьезных языках.

Но какая бочка меда обходится без ложки дегтя? Это касается и HTA. К сожалению, HTA-файлы нельзя просматривать в браузере, а значит, все средства защиты веб-браузеров оказываются бесполезны для них. Именно этот факт чаще всего приводится в качестве аргумента против HTA. Ведь в обход защиты с помощью VBscript и Jscript вполне можно организовать запись данных в реестр в фоновом режиме, запускать сторонние программы и скрипты, выполнять чтение и запись на диск. Поэтому хакеры достаточно хорошо освоили этот стандарт и с успехом применяют его для своих целей.

Ярким примером использования злоумышленниками HTA являются разнообразные черви, попадающие на наши компьютеры через почтовые программы. Причем некоторые из них приходят прямо в теле письма (HTML-страницы) в виде скрипта, который запускается при открытии сообщения. Используя известную дыру Scriptlet. Typelib в Internet Explorer, червь с помощью скрипта создает файлы, никак не сообщая об этом пользователю. Обычно создается сценарий VBscript в виде HTA-файла, который и содержит тело вируса. Название такого файла обычно имитирует имя какого-либо системного файла (например, fonts. hta или system. hta) и располагается в каталоге автозагрузки. Поэтому при очередном запуске Windows автоматически запускается и созданный HTA-файл. Когда код червя из HTA-файла получает управление, он запускает программу Outlook со скрытым окном и создает в ней письма, адресованные всем, чьи адреса хранятся в адресной книге Outlook. Червь создает письма в формате HTML и включает в них свой сценарий. Таким образом, червь распространяет сам себя. Кстати, для сценариев, не использующих HTML-код и основное HTA-окно, нет необходимости указывать атрибуты HTA-документа. В этом случае код записывается между тэгами <script> и </script>.

Похожий принцип используют и вирусы, распространяемые вместе с программами. В этом случае вместе с программой на ваш диск может попасть и такой безобидный с виду файл, как readme. hta или help. hta. При первом же запуске этих файлов вместе с демонстрацией текста в фоновом режиме производится ряд записей в реестр. И, несмотря на все ваши последующие действия, ваш браузер будет содержать дополнительные панели, кнопки или неизменную стартовую страницу, до тех пор пока вы не обнаружите сам код вируса в hta-файле.

На этом фоне куда более безопасно выглядят различные шутки на основе HTA-файлов. Например, однажды при запуске своего компьютера я обнаружил необычное окно с сообщением: "Внимание! Ваш винчестер содержит битые кластеры и сейчас будет отформатирован". Меня насторожила надпись "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.

И все-таки - безопасность
На сайте Microsoft размещена " заплатка" для дыры Scriptlet. Typelib в Internet Explorer. Если же вы не планируете использовать HTA-файлы, но хотите защитить компьютер от случайных вирусов, использующих этот формат, лучше отключить поддержку этих файлов. Для этого дважды кликните по пиктограмме Мой компьютер на рабочем столе, откройте Панель управления, выберите в меню окна команду Сервис > Свойства папки, перейдите на вкладку Тип файлов, выберите тип HTA-HTML application и щелкните наM кнопке Удалить.

Атрибуты HTA-документов
Атрибут Описание
applicationName имя приложения, использующегося для идентификации при исполнении HTA-документа
border вид обрамления окна; среди возможных значений - thin, dialog, none, thick
borderStyle стиль обрамления окна; среди возможных значений - complex, normal, raised, static, sunken
caption указывает, нужно ли показывать заголовок окна (yes/no)
icon путь к пиктограмме, которая будет показана в заголовке; допустимые параметры пиктограммы - 32x32 пикселей, формат. ICO
maximizeButton указывает, будет ли активизирована кнопка "восстановить" в заголовке документа (yes/no)
minimizeButton указывает, будет ли активизирована кнопка "свернуть" в заголовке документа (yes/no)
showInTaskbar указывает, будет ли показан документ в панели инструментов Windows (yes/no)
windowState первоначальный размер окна; среди возможных значений - normal, minimize, и maximize
innerBorder указывает, будет ли окно иметь внутреннюю границу (yes/no)
navigable указывает, будут ли ссылки открываться в отдельных окнах или в одном (yes/no)
scroll указывает, будет ли окно иметь полосу прокрутки (yes/no)
scrollFlat указывает вид полосы прокрутки: 3D или нет (yes/no)
singleInstance определяет, возможно ли одновременное открытие нескольких окон для HTA-документов (yes/no)
sysMenu указывает, будут ли показаны составляющие заголовка окна (yes/no)
contextMenu указывает на доступность контекстного меню, вызываемого правой кнопкой мыши (yes/no)
selection указывает, можно ли выделять текст в HTA-окне (yes/no)
version версия HTA

Новости мира IT:

Архив новостей

Последние комментарии:

Loading

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...