Способы защиты от макровирусов

Способы защиты от макровирусов

Анализ встроенной подсистемы защиты информации Microsoft Word 2000

© Панасенко Сергей, 2002.

Текстовый процессор Microsoft Word, входящий в пакет программ Microsoft Office, является в настоящее время наиболее популярным текстовым редактором в мире. Microsoft Word занимает около 80% рынка текстовых редакторов в мире [1], в мире продано более 120 миллионов экземпляров пакета программ Microsoft Office, не считая отдельных продаж Microsoft Word [2]. Такой успех объясняется, прежде всего, огромной функциональностью Microsoft Word, сочетающейся с удобством его использования и гибкостью настроек, благодаря которой каждый пользователь сможет сделать Microsoft Word максимально полезным для выполнения конкретных задач. Помимо целой гаммы встроенных средств с различной функциональностью, Microsoft Word содержит и собственную подсистему безопасности. Именно ей посвящена предлагаемая Вашему вниманию статья.

Защита информации в Microsoft Word 2000

Рассмотрим Microsoft Word версии 2000, которую можно считать наиболее актуальной на данный момент: версия 97 уже несколько устарела, а версия 2002 (из пакета Microsoft Office XP) еще не нашла достаточного распространения.
Итак, что можно защищать встроенными средствами Microsoft Word 2000:

  • Документы Microsoft Word.
  • Внедренные в документы или шаблоны макросы – программы, написанные на встроенном в программы пакета Microsoft Office языке Visual Basic for Applications (VBA).
  • Все хранящиеся и обрабатываемые на компьютере сведения – от макровирусов.

Коротко опишу способы защиты встроенными средствами, чтобы впоследствии перейти к их анализу.

Защита документов Microsoft Word

Microsoft Word позволяет установить парольную защиту конкретного документа двух видов:

  • Пароль для открытия документа.
  • Пароль для модификации документа.

Пароли можно ввести в окне параметров сохранения документа (см. рис. 1), которое можно выбрать одним из следующих способов:

  • С помощью команды меню File \ Save As, последующего нажатия кнопки Tools и выбора из выпадающего меню команды General Options.
  • С помощью команды меню Tools \ Options и выбора вкладки Save.

Microsoft Word позволяет вводить пароли длиной до 15 символов. Оба пароля (при их наличии) запрашиваются при открытии документа, причем при отказе от ввода пароля для модификации документа происходит открытие документа в режиме, разрешающем только его чтение (Read-only). Пароль для открытия документа является основой для формирования ключа шифрования, на котором (при наличии пароля) документ шифруется по алгоритму RC4. Следует учесть, что парольная защита документов предусмотрена только для основного формата документов Microsoft Word, при попытке сохранения закрытого паролем документа в другом формате выдается предупреждение о невозможности применения парольной защиты к документам других типов: «This document is password protected. Saving this document in a format other than a Word Document will result in the loss of protection. Do you want to continue?» Помимо этого, с помощью команды меню Tools \ Protect Document вызывается окно Protect Document (см. рис. 2), в котором можно установить одну из следующих степеней защиты документа (полезные, например, при коллективной работе с документами):

  • Фиксирование записи исправлений (Tracked changes). Позволяет вносить исправления в документ, однако, все исправления фиксируются и отмечаются; впоследствии эти исправления могут быть приняты или отвергнуты автором или редактором документа.
  • Запрещение изменений, кроме комментариев (Comments). При включении данного переключателя к просматриваемому документу можно только добавлять комментарии.
  • Разрешение ввода данных только в поля форм (Forms). Модификация документа запрещается, разрешается только ввод данных в формы документа. Эта степень защиты может быть применена к выборочным разделам документа.

Изменение степени защиты может быть также защищено паролем длиной до 15 символов.

Защита VBA-модулей

Встроенный язык программирования VBA существенно увеличивает и без того огромные возможности Microsoft Word и других программ Microsoft Office. Возможности VBA-макросов являются практически неограниченными, поскольку из макроса можно вызывать функции внешних динамических библиотек (DLL), что дает полный доступ к компьютеру в пределах прав конкретного пользователя.
Microsoft Word содержит средство работы с VBA-программами – редактор Visual Basic. Для его активизации следует выполнить команду меню Tools \ Macro \ Visual Basic Editor.
Защита текстов VBA-программ может быть необходима, например, по следующем причинам:

  • ради сохранения интеллектуальной собственности, которой является VBA-программа;
  • ради сохранения целостности VBA-программы от случайной или преднамеренной модификации.
Читайте также:  Классификация шрифтов по способам воспроизведения

Для защиты VBA-программ необходимо выполнить следующие действия:

  • выбрать защищаемый проект в окне проектов (Project) и выполнить команду Project Properties контекстного меню;
  • активизировать вкладку Protection диалогового окна свойств проекта (см. рис. 3).

В окне свойств проекта можно заблокировать проект от просмотра, включив переключатель Lock project for viewing и введя пароль, ввод которого необходим для открытия проекта в дальнейшем.

Защита от макровирусов

Язык VBA позволяет выполнять различные действия при наступлении определенных событий с помощью набора макросов, вызываемых автоматически. Для Microsoft Word это следующие макросы:

  • AutoOpen – вызывается при открытии документа.
  • AutoClose – вызывается при закрытии документа.
  • AutoExec – вызывается при запуске Microsoft Word.
  • AutoExit – вызывается при закрытии Microsoft Word.
  • AutoNew – вызывается при создании нового документа.

В случае, если в документе присутствует макрос AutoOpen, то при открытии данного документа автоматически выполнится код макроса AutoOpen. Макрос AutoOpen может находиться и в шаблоне, в этом случае данный макрос будет выполняться при открытии любого документа, к которому приаттачен содержащий макрос AutoOpen шаблон. Как видно, автоматические макросы позволяют выполнять различные действия без ведома пользователя. Механизм автоматических макросов используется макровирусами для активизации и распространения. Для примера рассмотрим следующую цепочку действия:

  • Макровирус содержится в макросе AutoOpen некоего документа Document.doc.
  • При открытии документа макровирус выполняет предназначенные ему автором функции, а также копирует себя в макросы AutoOpen и AutoNew шаблона Normal.dot.
  • При открытии незараженного документа или создании нового документа вирус копируется в макрос AutoOpen документа, который становится вирусоносителем.

Аналогичные возможности предоставлял и язык Word Basic – предшественник VBA в более старых версиях Microsoft Word. Однако, с появлением механизма Automation, в частности, позволяющего манипулировать из Microsoft Word другими программами Microsoft Office, вирусы стали намного изощреннее, поскольку теперь из макроса AutoOpen документа Microsoft Word можно, например, разослать письма с документом-вирусоносителем по всем адресам, находящимся в адресной книге Microsoft Outlook. Плюс к тому полный контроль над компьютером благодаря огромным возможностям VBA. Ясно, что защита от этого просто необходима. Microsoft Word предлагает защиту от макровирусов (или от любых других «нежелательных» макросов) в виде системы цифровых сертификатов (технология Microsoft Authenticode). Использование цифровых сертификатов (подробно описано, например, в [3] и [5]) состоит в том, что VBA-модули подписываются их разработчиком. При открытии документа, содержащего VBA-модули, производится проверка электронной подписи VBA-модуля. Макросы блокируются, т.е. становятся запрещенными для выполнения, в том случае, если их подпись оказывается неверной, что говорит о том, что код VBA-модуля был изменен после подписывания.
Отношение Microsoft Word к содержащимся в документе макросам определяется настройкой уровня безопасности Microsoft Word. Для настройки уровня безопасности предназначено диалоговое окно Security, которое вызывается с помощью команды меню Tools \ Macro \ Security (см. рис. 4). Возможны следующие уровни безопасности:

  • High. Все макросы автоматически отключаются, за исключением тех, которые подписаны сертификатами из надежных источников.
  • Medium. Автоматического отключения макросов не происходит. В случае открытия документа, содержащего макросы, выдается запрос пользователю, следует ли отключить макросы данного документа.
  • Low. Данный уровень не рекомендуется, о чем указано непосредственно в диалоге Security. Позволяет открывать все документы, не отключая содержащиеся в них макросы и не выдавая запрос пользователю.

Кроме того, вкладка Trusted Sources содержит переключатель Trust all installed add-ins and templates, разрешающий не проверять электронную подпись всех установленных ранее VBA-программ, находящихся в шаблонах, в том числе в Normal.dot. Однако, при выключении данного переключателя электронная подпись VBA-модулей шаблонов будет проверяться при каждой их загрузке.

Проблемы защиты документов Microsoft Word

Вынужден утверждать, что подсистема безопасности Microsoft Word 2000 имеет ряд недостатков.
Начнем с парольной защиты документов Microsoft Word. Любая парольная защита по сравнению с использованием случайно сгенерированного криптографического ключа имеет ряд недостатков, а именно:

  • Многие пользователи небрежно относятся к паролям, что позволяет подбирать пароль как по списку наиболее употребительных паролей (пример приведен в [6]), так и путем атаки с использованием словаря, содержащего список слов какого-либо языка (в том числе, имена собственные) и общеупотребительные фразы.
  • Достаточно часто применяются короткие пароли, что позволяет осуществлять подбор пароля методом «грубой силы» (brute-force attack).
Читайте также:  Основные способы использования отходов

В Microsoft Word данная проблема несколько усугубляется следующими факторами:

  • Используемый для шифрования документов алгоритм симметричного шифрования RC4 может использовать ключи длиной до 128 бит. Microsoft Word ограничивает длину пароля 15 символами, что означает эквивалентную длину ключа – 9 байт, поскольку 96 кодов символов из 256 невозможно использовать в качестве символов пароля. Таким образом, даже при корректном преобразовании из пароля в ключ, эффективная длина ключа шифрования в Microsoft Word практически в два раза меньше, чем позволяется алгоритмом RC4.
  • Ограничивая длину пароля «сверху», Microsoft Word, напротив, никак не ограничивает ее «снизу», допуская использовать даже односимвольные пароли!
  • Существуют утилиты автоматического подбора пароля специально для Microsoft Word, например, программа Word Password Recovery Key, предлагаемая на сайте www.lostpassword.com. С помощью такой утилиты можно перебирать пароли со скоростью более миллиона паролей в секунду, причем, комбинацией методов: словарной атаки, грубой силы и с известными символами пароля. Несомненно, данная программа предназначена для тех пользователей, кто забыл свой пароль, но ничто не мешает использовать ее для вскрытия чужого документа.

Кстати, разработчик утилиты Word Password Recovery Key гарантирует мгновенное определение пароля, защищающего документ от модификации, а также пароля, устанавливаемого в окне Protect Document [7], что означает отсутствие криптографических методов при применении данных паролей в Microsoft Word.

Отсутствие реальной защиты VBA-модулей

Для проверки защиты VBA-модулей я воспользовался возможностью записи макросов, существующей в Microsoft Word (команда меню Tools \ Macro \ Record New Macro), и записал простейший макрос, устанавливающий русский язык для выделенного фрагмента:
Sub Macro1()
Selection.LanguageID = wdRussian
Selection.NoProofing = False
Application.CheckLanguage = True
End Sub
Затем установил блокировку содержащего макрос проекта от просмотра и ввел защищающий пароль.
После чего, если просмотреть содержащий макрос документ Microsoft Word в каком-либо редакторе для DOS (я использовал Hiew.exe), можно наблюдать текст следующего вида:
SelectionZo0 A ©Ä LanguageIDис0 A ©Ä wdRussian=W0 A ©Ä NoProofing^]0 ÆA ©Ä Applicatione*0 A ©Ä CheckLanguageщ¯0 ¨
Легко понять из приведенного текста, о чем идет речь в макросе? На мой взгляд, да. Таким образом, видно отсутствие реальной защиты VBA-проекта от просмотра, поскольку, имея документ с защищенным проектом, злоумышленник вполне может прочитать VBA-код. Сопоставить же соответствие спецсимволов выполняемым операциям достаточно легко хотя бы с помощью моделирования. После пары часов привыкания можно читать защищенный VBA-код из Hiew.exe не хуже, чем из редактора Visual Basic. Кстати, предлагаемая на www.lostpassword.com программа VBA Key, предназначенная для подбора пароля защиты VBA-модулей, гарантирует мгновенное определение пароля. Что удивительно, в отличие от пароля, защищающего документ, пароль для защиты кода VBA имеет существенно большую максимальную длину – до 32 символов, хотя именно здесь длина пароля, практически, не влияет на степень защиты. Где логика?
Мой совет разработчикам VBA-программ: все, что относится к интеллектуальной собственности, максимально выносить во внешние DLL, а VBA использовать только для трансляции данных.

Интересные особенности защиты от нежелательных макросов

Для начала задумаемся над тем, где и как Microsoft Word хранит свои настройки уровня безопасности. При смене уровня безопасности с Low на High программа Regmon.exe (монитор работы с реестром, freeware с www.sysinternals.com) выдает дамп, представленный на рис. 5. После небольших экспериментов с параметром Level в указанном разделе реестра можно сделать следующие выводы:

    Значение уровня безопасности хранится в параметре Level в простейшем виде, а именно:

Стоит сказать, что серьезной дырой прямую запись в реестре уровня безопасности назвать нельзя, поскольку обойти подсистему безопасности напрямую (из документа Microsoft Word) невозможно даже в этом случае. Однако, считаю это серьезным недостатком, поскольку:

  • Хотя это и не дает возможности для широкого заражения компьютеров (как, например, недостатки Internet Information Server), использовав эту особенность злоумышленник может провести атаку на конкретный целевой компьютер – достаточно лишь заставить его владельца активировать приложение, содержащие всего три дополнительные команды: открытие ключа реестра, запись Level 0, закрытие ключа. Сила методов социальной инженерии всем известна [8], а культура пользователей по отношению к безопасности до сих пор оставляет желать весьма лучшего. Такая атака будет незаметной для пользователя, после чего достаточно через один файл с макросом AutoOpen заразить Normal.dot, чтобы, например, получать по сети копии всех обрабатываемых документов через внедренный в Normal.dot макрос AutoClose. Внедрение можно произвести и из того же пишущего в реестр модуля через механизм Automation (При использовании Automation все, на самом деле, еще проще, поскольку через данный механизм, независимо от уровня безопасности, можно загрузить документ, содержащий макросы, и выполнить любой из его макросов).
  • Данная ситуация усугубляется неопытностью пользователей (готов утверждать, что, как минимум, 50 % пользователей не пытались выполнить команду Tools \ Macro \ Security или не понимали назначение диалога Security). Еще хуже с точки зрения безопасности то, что в весьма удобном для использования механизме сокрытия редко используемых меню, появившемся в Microsoft Office 2000, подменю Tools \ Macro изначально (после инсталляции Microsoft Office) не отображается.
  • Вспомним поведение при параметре Level = 0, когда показывается максимальный уровень, а работа происходит при фактическом минимальном. Это способно обмануть пользователя поопытнее.
Читайте также:  Шримс медвежонок способ приготовления

Понятно, что полную защиту без применения специальных средств организовать невозможно, однако, думаю, что не намного сложнее было бы, например, при каждой смене значения Level генерировать случайный ключ, зашифровывать DES-ом новое значение Level, после чего разбрасывать байты ключа по разным переменным реестра (пусть даже в том же подключе Security). Понятно, что строить защиту на неизвестности алгоритма невозможно – он все равно станет известен, но, согласитесь, это уже совсем другие требования к квалификации злоумышленника.
В связи со всем вышесказанным механизм безопасности в Microsoft Word 97 лично я считаю более правильным – макросы проверяются всегда и пользователь каждый раз должен принимать решение об их включении и отключении – таким образом, при получении документа из недоверенного источника он обязательно отключит макросы при их наличии и при минимальном уровне знаний о компьютерных вирусах и безопасности.
Для сравнения приведу настройку доверия уже установленным VBA-модулям (Trust all installed add-ins and templates), значение которой пишется в параметр Don’t trust installed files того же подключа Security в следующем виде:

В отличие от настройки Level, данная ведет себя весьма прилично, т.е. любое отличное от нуля значение трактует как 1, т.е. отсутствие доверия.
На мой взгляд, для тех пользователей Microsoft Word, которые пользуются только встроенной функциональностью (количество таких пользователей я бы оценил не менее, чем в 90 % от их общего числа), отключение доверия установленным макросам было бы весьма неплохой защитой от макровирусов вкупе с максимальным уровнем безопасности (виденные мной макровирусы вообще не лезли в ключ Security, видимо, по причине бесполезности – раз уж там стоит High, то прорываться следует через exe-модуль). Для таких пользователей я бы однозначно рекомендовал поставить уровень High, поскольку макросы им просто не нужны, и по этой же причине отключить доверие установленным макросам. Если такой пользователь после этого не будет запускать что попало на своем компьютере (и пускать на него кого попало), то защита от макровирусов ему обеспечена. Конечно, полную защиту обеспечить невозможно – для этого следует просто отключиться от сети – вспомним, например, обнаруженный в октябре рекордный по возможным последствиям баг в Internet Explorer 5.1 для MacOS 10.1, позволяющий злоумышленнику получить полный контроль над компьютером в обход систем защиты [9].

Заключение

Несмотря на все особенности встроенной подсистемы защиты Microsoft Word 2000, на мой взгляд, она должна удовлетворить не менее 90 % пользователей Microsoft Word. Тем же, кто использует Microsoft Word для обработки информации с повышенными требованиями к ее конфиденциальности, я бы посоветовал не полагаться на встроенную защиту, а использовать дополнительные средства с сильной криптографией.

Источник

Оцените статью
Разные способы