[Visual Basic for Applications, Информационная безопасность] Защита проекта VBA в MS Excel

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
09-Авг-2020 23:31

Всем привет! Я обычный пользователь MS Excel. Не являющийся профессиональным программистом, но накопивший достаточно опыта, для установки и обхода защиты проектов VBA.
Дисклеймер:
В данной статье рассмотрены виды защиты проектов VBA, от несанкционированного доступа. Их сильные и слабые стороны – ранжирование.
Цель статьи показать слабые и сильные стороны каждого вида защиты проекта VBA в MS Office.
Демонстрация разработанных инструментов, в надстройке Macro Tools VBA, для снятия и установки той или иной защиты. 
Все инструменты реализованы стандартными средствами VBA, без использования дополнительных библиотек. 

Главная панель Надстройки Macro Tools VBA

Первый вид защиты — Обычный пароль
Время на снятие: мгновенно
Недостаток: быстрый доступ к запароленному модулю VBA
Стандартный инструмент (В среде VBE: панель Tools -> VBAProject Properties -> Protection). 
Самая легко снимающаяся защита. В интернете легко находится код, для снятия данной защиты. 
Данную защиту можно снять следующим инструментом:

Второй вид защиты — Project is Unviewable
Время на снятие:  от 10 до 15 мин (в ручную)
Недостаток: доступ к исходному коду модуля VBA
Один из самых распространённых видов защит.  Встречается в 95% файлах с защитой модуля VBA. При попытке открыть проект, открывается диалоговое окно, с  сообщением:  Project is Unviewable.

Большинство пользователей Excel, не могут снять данную защиту, так как она имеет множество вариации и нюансов, для ее снятие нужно иметь представление о внутренней структуре файла Excel.
Основан, данный вид защиты, на изменение ключей:
DPB=«0B09CE0F8E108E108E»
GC=«CCCE09520B120C120CED»</source>
в файле `vbaProject.bin`. 
<img src="https://lh3.googleusercontent.com/RACGzRAHgHZAhDpkh5qo-B4MuDJZ-CMUd-BTvwgXBsDl1LMUrQcFmZ5whRrk_cJlZ7p2X5ikFegRPXl2jLoLowoWwH78-T9CANv6rqCCzB8Hoi14DFUaqBr1A0K8KSeccfr-Iss" align="center">
<h2>Кратко, как создается данная защита</h2>
Для создания данной защиты нужно, разархивировать файл Excel. Перейти в архиве в папку <strong>xl</strong>, открыть файл <strong>vbaProject.bin</strong>,  в конце файла находятся наши ключи, редактируем значения ключей на пусто, сохраняем файл. Переводим наш архив, обратно в файл Excel. Готово! 
Это самый простой вариант данной защиты, но существует множество модификаций.
Алгоритм снятия защиты <strong>Project is Unviewable.</strong>
1)      Разархивируем подопытный файл, переходим в файл  <strong>…\xl\_rels\workbook.xml.rels</strong>
<strong>
<img src="https://lh6.googleusercontent.com/SbsqJbKGS7gLk4g26PH3w481mTv15EozjjsNXzbQnDFMRW0DKdk9_X3ymJJN_0F23zBePuBhEYpIRgqzdOK0MID51HdemHlTo1QaTbWECgjNrFs9_8d7Ups-IImsI36aKTReT8g" align="center">
</strong>
2)      В файле<strong> workbook.xml.rels</strong>  ищем строку, содержащую слово  <strong>vbaProject</strong>, обычно имеет следующий вид:  <strong><Relationship Id="rId6" Type="http://schemas.microsoft.com/office/2006/relationships/vbaProject" Target="vbaProject.bin"/></strong>. В этой строке нас интересует ключ <strong>Target</strong>,<strong> </strong>и<strong> </strong>его значение. Значение является название файла, в котором находится проект VBA. Иногда, защищающий меняет значения ключа на <strong>printerSettings.bin</strong>.<strong> </strong>Получается маскировка файла с проектом VBA  под другой файл.
3)      Открываем на редактирование файл, указанный в  ключе <strong>Target</strong>, ищем в файле ключи  <strong>CMG, DPB, GC</strong>. И меняем в их названиях любую букву на любую другую, например: <strong>CMC, DPC, CC</strong>. При поиске нужно быть аккуратным, так как защищающий может поместить  в проект форму,  подписью повторяющую один из ключей, например такую: <strong>DPB=«0B09CE0F8E108E108E»</strong>. При ее изменении проект VBA, будет удален из книги Excel.  Сохраняем и закрываем файл.
4)      Переводим архив обратно в файл Excel.
5)      Запускаем приложение Excel, выполняем следующее: в <i>Центре управления безопасностью -> Параметры макросов  -> Отключить все макросы без уведомления</i>. Перезапускаем Excel. Данная операция нужна, для блокировки защиты, которую иногда ставят авторы макросов. Данная защита реализована следующим образом. В модуле VBA «<strong>ЭтаКнига</strong>», создается процедуры, реагирующие на события открытия книги или закрытия книги. Эти события обычно проверяют, наличие пароля на проект VBA, запрет сохранения и прочее.
6)      Открываем файл. Если все правильно сделано то, Excel, будет ругаться на не правильные ключи, которые мы отредактировали, в пункте 3. Жмем, да, пока данные сообщения не закончатся и диалоговое окно закроется. 
      Если данное сообщение не появляется то, вы отредактировали не файл который содержит проект VBA.
<img src="https://lh6.googleusercontent.com/-JxpNp2qXgtcvjcx09dOaY0xCTuKNSXMKmcf1BXuto99S7Z_GE-tDDZj0sZqXWY7Trq2rEZd1KJikHM41KqmHkzsMdIG_OXO3FdSIMyMB2bCfX7qKYYu1VVmExD6AaNuJiB8YKo" align="center">
7)      Открываем проект VBA. После всего, проект VBA должен быть доступен.
8)      Но иногда защита не снимается, тогда нужно сохранить файл, проверить, что он действительно сохранился! И проделать повторно операции с 1 по 7. Обычно так происходит когда в файле <strong>workbook.xml.rels </strong>в ключе <strong>Target</strong>  установлено <strong>printerSettings.bin</strong>.<strong> </strong>При сохранение,  Excel  исправляет это на значение на <strong>vbaProject.bin</strong>
Данную защиту можно установить и снять следующим инструментом:
<img src="https://lh5.googleusercontent.com/dqxpKVuWZ9_2FPe-c4IVoQyeYy5wqdRrsqZjoTmpRW9uge7SFttkYkhJJvjbW7oVu2uTXp73sTPm6mYcihA_tZt4tCci3rn3LExJXgJqGLDGp25ZkJbMtrXc1EkmJQT7qMa_5rQ" align="center">
<strong>Третий вид защиты — Hidden  Module, скрытые модули VBA</strong>
Время на снятие:  от 15 до 20 мин (нужен редактор OLE — объектов, Structured Storage Viewer, например.
Недостаток: доступ к коду модуля VBA
Менее распространенный вид  защиты обычно встречается в комбинации с защитой <strong>Project is Unviewable. </strong>При установке данной защиты модуль VBA не отображается в проекте книги Excel. О его существовании можно узнать, проанализировав код VBA (что требует время!) или открыть файл Excel в программе  <strong>OpenOffice  или  LibreOffice </strong>(так же можно смотреть код при защите Project is Unviewable, но данный способ не дает возможность получить рабочий файл, без пароля). 
<img src="https://lh6.googleusercontent.com/dA3BfIzuQg79o3IP_Ez4x8pumirxRSn3JdNX-SE-CLrJ7X-V9HwgbrBujuel9uasdeVI5ZGwzpFMaMyKr0cNWxLn4BJTEVC-WRXuxQnfH8XjzIosuKr5GrZGriv4X7HuTDhQfzk" align="center">
Просмотр кода VBA в  <strong>LibreOffice</strong>
<h2>Кратко, как создается данная защита</h2>
Для создания данной защиты нужно отредактировать файл  с проектом VBA — <strong>vbaProject.bin  </strong>или <strong>printerSettings.bin</strong>,<strong> </strong>в зависимости от настроек в файле <strong>…\xl\_rels\workbook.xml.rels</strong>. В конце файла удаляются строки вида: <strong>Module1=32, 32, 635, 330, Z</strong>.  С нужными названиями модулей.
<img src="https://lh6.googleusercontent.com/kGIfWR-aM8dJ54j9YqQI4RhfqvYDeHJDm_22kelGtwasIa5nshjoqdSFBGJhdVVWGgN0URV55fH5WawjcPJM2GpC7qgplXrqcADmWgEahnqc3__DmhCMCeJkaDpQqjdWf-XTLy0" align="center">
Для снятия данной защиты нужно в файле <strong>vbaProject.bin — </strong>восстановить удаленные записи модулей.
Данную защиту можно установить следующим инструментом.
<img src="https://lh5.googleusercontent.com/eYCYXgNpc5vhun4VWEBaLR8VA-co7c9qv2af8OhAvJ1KyPtplzfmZQt9d_jROYG0ci_ysmkd6jIgCzYX4mv6sarBefOngkayo8l-d2wKWGBoJTNvJ5EsWK2-NUHpbtV7VczTZg8" align="center">
<h2>Четвертый вид защиты — Обфускация кода</h2>
Время на снятие:  неизвестно, зависит от объема кода и пере использования частей кода
<img src="https://lh6.googleusercontent.com/_O09MKRA_Wg2GupSqHCnAeGJhl7zM3VU_s-5xWF9Cz3AuFefpYnzJhrUwRCVWBneumlfXqz6TSiJY6k30oE0gu9v0sx1cVxUFrN-YEj8PV6aQJ0TZj_6XBqZgxItW6VHNEsrBIY" align="center">
<i> Обфусцированный код VBA</i>
Недостаток:  необходимость тестирование файла после обфускации, на работоспособность
Крайне редкий вид защиты, основанный на изменении исходного кода VBA, в не удобочитаемый вид для человека. Удаляются все комментарии, форматирование кода, переименовываются названия всех переменных,  процедур, функций, модулей и прочего. Злоумышленнику никогда не удастся восстановить первоначальный вид кода, и потребует достаточно много времени для, его восстановления в удобно читаемый вид для человека.  
Для де-обфускации кода нужно иметь  время, специализированное ПО.
Данную защиту можно установить следующим инструментом.
<img src="https://lh5.googleusercontent.com/pKd3MdYYw84gzK1HtxteUPQYj302kXbkGLgYX6Qnx8U8Wck9zezpL9WDCMTF_-yIZ0mwMWFJeDg1k72x7zKJxn-HnQUH1uqNQJE82G3TSwTP30kOqqEeOb_KHQnu_0J7HBhGfDw" align="center">
<h2>Пятый вид защиты — Перенос кода в dll</h2>
Время на снятие:  неизвестно, зависит от языка программирования и квалификации
Недостаток:  необходимости в дополнительном  файле dll
Один из самых редких видов защиты. Основная идея перенос основного кода в отдельную библиотеку dll, написанную на любом другом языке программирования. Не распространённость данный вид защиты получил по следующей причине,  необходимости за файлом Excel, «таскать» дополнительный файл, dll.
Для получения доступа к коду dll, нужно обладать специальными знаниями.
<h2>Заключение</h2>
В заключении хочу выделить бесполезность защит:  <strong>Project is Unviewable и Hidden  Module</strong> которые, по существу ни отчего не защищают. Позволяют просматривать код VBA, без изменения исходного  файла, в таких программах как <strong>OpenOffice  </strong>или<strong>  LibreOffice. </strong>Так и снимаются без особых проблем.

===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_visual_basic_for_applications, #_informatsionnaja_bezopasnost (Информационная безопасность), #_vba, #_zaschita_proekta_vba (защита проекта VBA), #_project_is_unviewable, #_hidden__module, #_visual_basic_for_applications, #_informatsionnaja_bezopasnost (
Информационная безопасность
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 23-Ноя 01:41
Часовой пояс: UTC + 5