Алгоритмы шифрования... WordFIX

Rambler's Top100 OZON.ru

Перейти на главную страницу

Карта сайта

Список статей

 

Анализ встроенной подсистемы защиты информации 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 Word позволяет установить парольную защиту конкретного документа двух видов:

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

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), в котором можно установить одну из следующих степеней защиты документа (полезные, например, при коллективной работе с документами):

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

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

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

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

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

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

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

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

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

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

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

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

Кстати, разработчик утилиты 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 в указанном разделе реестра можно сделать следующие выводы:

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

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

0 – "доверять"
1 – "не доверять"

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

  1. Харт-Девис Г. Word 2000: Руководство разработчика. // Пер. с англ.: Киев, БХВ. – 2000 – 944 с.
  2. MS Office: новая версия, старые проблемы. // Compute Review. – 2001 - № 11 – с. 19.
  3. Гарнаев А., Матросов А., Новиков Ф., Усаров Г., Харитонова И. Microsoft Office 2000: разработка приложений. // Санкт-Петербург, БХВ. – 2000 – 656 с.
  4. Вирусная энциклопедия: макро-вирусы. // www.viruslist.com.
  5. MSDN Library – Microsoft Office 2000 Developer.
  6. Леонтьев Б. Хакинг без секретов. // Москва, Познавательная книга плюс. – 2000 – 607 с.
  7. www.lostpassword.com/word.htm
  8. Медведовский И.Д., Семьянов П.В., Леонов Д.Г. Атака на Internet. // Москва, ДМК. – 2000 – 336 с.
  9. Новости от SEC.RU от 03.10.2001.

Названия рисунков:

  1. Параметры сохранения документа.
  2. Диалог Protect Document.
  3. Свойства проекта VBA.
  4. Диалог Security.
  5. Дамп записи в реестр.
  6. Диалог Security с ошибкой.