
Кросс-платформенный помощник для создания вредоносных документов MS Office. Может скрывать макросы VBA, подавлять код VBA (через P-Code) и сбивать с толку инструменты анализа макросов. Работает на Linux, OSX и Windows.
Этот инструмент был выпущен во время нашего выступления на BlackHat Asia (28 марта 2019 года). Видеозапись этого выступления доступна по адресу https://www.youtube.com/watch?v=9ULzZA70Dzg.
Кроссплатформенный помощник для создания вредоносных документов MS Office. Умеет скрывать макросы VBA, подменять код VBA (через P-Code) и запутывать инструменты анализа макросов. Работает на Linux, OSX и Windows.
Если вы новичок в этом инструменте, возможно, вам стоит начать с чтения нашей статьи в блоге об Evil Clippy: https://outflank.nl/blog/2019/05/05/evil-clippy-ms-office-maldoc-assistant/
Этот проект следует использовать только для авторизованного тестирования или образовательных целей.
Если вы понятия не имеете, что всё это значит, сначала ознакомьтесь со следующими ресурсами:
На момент написания этот инструмент способен заставить стандартный макрос Cobalt Strike обходить большинство основных антивирусных продуктов и различные инструменты анализа вредоносных документов (используя подмену VBA в сочетании со случайными именами модулей).
Evil Clippy использует библиотеку OpenMCDF для манипуляции файлами в формате Compound File Binary Format (CFBF) MS Office, и злоупотребляет спецификациями MS-OVBA и их функциями. В нём используется код из Kavod.VBA.Compression для реализации алгоритма сжатия, применяемого в потоках dir и module (см. MS-OVBA для соответствующих спецификаций).
Evil Clippy отлично компилируется с компилятором Mono C# и был протестирован на Linux, OSX и Windows.
Мы не предоставляем готовые бинарные сборки для EvilClippy. Пожалуйста, скомпилируйте исполняемые файлы самостоятельно:
OSX и Linux
Убедитесь, что у вас установлен Mono. Затем выполните следующую команду из командной строки:
mcs /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Теперь запустите Evil Clippy из командной строки:
mono EvilClippy.exe -h
Windows
Убедитесь, что у вас установлена Visual Studio. Затем выполните следующую команду из командной строки разработчика Visual Studio:
csc /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Теперь запустите Evil Clippy из командной строки:
EvilClippy.exe -h
Вывод справки
EvilClippy.exe -h
Скрытие/отображение макросов из GUI
Скрывает все модули макросов (кроме стандартного модуля "ThisDocument") из редактора GUI VBA. Это достигается удалением строк модулей из потока проекта [MS-OVBA 2.3.1].
EvilClippy.exe -g macrofile.doc
Отменяет изменения, выполненные опцией скрытия (-g), чтобы можно было отлаживать макрос в среде VBA IDE.
EvilClippy.exe -gg macrofile.doc
Подмена VBA (злоупотребление P-code)
Помещает поддельный код VBA из текстового файла fakecode.vba во все модули, оставляя P-code нетронутым. Это злоупотребляет недокументированной функцией потоков модулей [MS-OVBA 2.3.4.3]. Обратите внимание, что версия проекта VBA должна совпадать с версией хост-программы, чтобы P-code выполнялся (см. следующий пример для сопоставления версий).
EvilClippy.exe -s fakecode.vba macrofile.doc
Примечание: Подмена VBA не работает для файлов, сохранённых в формате Excel 97-2003 Workbook (.xls)
Установка целевой версии Office для подмены VBA
То же, что и выше, но теперь явно ориентируется на Word 2016 на x86. Это означает, что Word 2016 на x86 будет выполнять P-code, в то время как другие версии Word будут выполнять код из fakecode.vba. Достигается установкой соответствующих байтов версии в потоке _VBA_PROJECT [MS-OVBA 2.3.4.1].
EvilClippy.exe -s fakecode.vba -t 2016x86 macrofile.doc
Установка/сброс случайных имён модулей (обман инструментов аналитика)
Устанавливает случайные имена модулей в потоке dir [MS-OVBA 2.3.4.2]. Это злоупотребляет неоднозначностью в записях MODULESTREAMNAME [MS-OVBA 2.3.4.2.3.2.3] — большинство инструментов аналитика используют указанные здесь ASCII-имена модулей, в то время как MS Office использует вариант Unicode. Устанавливая случайное ASCII-имя модуля, большинство инструментов анализа P-code и VBA вылетают, в то время как настоящий P-code и VBA продолжают нормально работать в Word и Excel.
EvilClippy.exe -r macrofile.doc
Примечание: известно, что это эффективно для обмана pcodedmp и VirusTotal
Устанавливает ASCII-имена модулей в потоке dir, соответствующие их Unicode-аналогам. Это отменяет изменения, сделанные с помощью опции (-r) EvilClippy.
EvilClippy.exe -rr macrofile.doc
Раздача шаблона с подменой VBA через HTTP
Обслуживает macrofile.dot через HTTP-порт 8080 после выполнения подмены VBA. Если этот файл загружается, он автоматически подстраивается под версию Office цели (используя её HTTP-заголовки и устанавливая соответствующие байты _VBA_PROJECT).
EvilClippy.exe -s fakecode.vba -w 8080 macrofile.dot
Примечание: Раздаваемый файл должен быть шаблоном (.dot, а не .doc). Вы можете установить шаблон через URL (расширение .dot не обязательно!) из панели разработчика в Word. Кроме того, в fakecode.vba должен быть установлен атрибут VB_Base для макроса из шаблона (это означает, что ваш fakecode.vba должен начинаться со строки вида Attribute VB_Base = "0{00020906-0000-0000-C000-000000000046}").
Установка/снятие защиты VBA Project Locked/Unviewable
Для установки атрибутов Locked/Unviewable используйте опцию '-u':
EvilClippy.exe -u macrofile.doc
Для снятия атрибутов Locked/Unviewable используйте опцию '-uu':
EvilClippy.exe -uu macrofile.doc
Примечание: Вы также можете снять атрибуты Locked/Unviewable в файлах, которые не были заблокированы с помощью EvilClippy.
Разработан для манипуляции документами Microsoft Word и Excel.
Как отмечалось выше, подмена VBA неэффективна для формата Excel 97-2003 Workbook (.xls).
Stan Hegt (@StanHacked) / Outflank
Со значительным вкладом Carrie Roberts (@OrOneEqualsOne / Walmart).
Особая благодарность Nick Landers (@monoxgas / Silent Break Security) за указание на OpenMCDF.