Хакеры десятилетиями эксплуатируют человеческую доверчивость и невнимательность. Большинство пользователей без раздумий открывают безобидное, на первый взгляд, почтовое вложение и, сами того не зная, запускают вредоносное ПО. Чтобы защититься от подобных атак, нужно знать врага в лицо. Сегодня мы попробуем разобраться, как устроены три новые техники выполнения кода в офисных приложениях, обнаруженные в этом году, и какие способы защиты от них существуют. Эксперты компании Outflank представили новый способ запуска кода в MS Office Excel через так называемые XLM-макросы (не путать с XML). Хотя технологии XLM-макросов уже больше 26 лет (впервые появились в Excel 4.0 для Windows 3.0/3.1), она до сих пор поддерживается всеми версиями Microsoft Office Excel вплоть до Office 2016.  Для создания XLM-макроса в Excel необходимо выполнить следующие шаги:
В контекстном меню листа Excel выбрать «Insert».  Далее выбрать «MS Excel 4.0».  В результате появится лист «Macro1», в любой ячейке которого посредством функции «EXEC» можно запустить нужный процесс. Для автоматического запуска макроса первую ячейку необходимо переименовать в «Auto_open» (аналогично процедуре AutoOpen() в VBA-макросах). После открытия сохраненного документа появляется стандартное оповещение с запросом на запуск макроса.  Лист с макросом можно скрыть, выбрав «Hide» в контекстном меню. Помимо возможности запуска процессов, XLM-макросы умеют обращаться к Win32 API с помощью функций REGISTER и CALL. Ниже приведен PoC-код макроса, осуществляющего технику внедрения шелл-кода.  При этом для хранения символов шелл-кода внутри ячейки макроса используется функция кодирования CHAR. Для удаления нулевых байтов можно воспользоваться утилитой msfvenom, входящей в состав Metasploit Framework. По способу хранения внутри файла Excel XLM-макросы существенно отличаются от классических VBA-макросов, появившихся годом позднее в Excel 5.0. В новом формате Excel .xlsm, который представляет собой ZIP-архив, XLM-макросы хранятся внутри XML-файла в каталоге macrosheets. В формате .xsl (Excel 97 – 2003) макрос хранится внутри OLE-потока. Далее видно, что VBA-макрос хранится в отдельном контейнере (на рисунке слева), в то время как XLM-макросы расположены в одном контейнере с данными.  Данные различия в способах хранения макросов существенно сказываются на качестве их детектирования антивирусами, в частности, технология Antimalware Scanning Interface (AMSI) не поддерживает XLM, несмотря на заявленную поддержку со стороны Office 365.  К примеру, Metasploit powershell web_delivery код был внедрен в Excel средствами VBA- и XLM-макросов (на рисунках ниже).   На Virustotal документ Excel с VBA-макросом вызвал срабатывания 21 из 59 антивирусов.   При этом аналогичный документ с XLM-макросом не вызвал подозрений ни у одного антивируса.  Демонстрация
Выполнение кода через XLM-макросы в Office Командой исследователей Cumulate был обнаружен новый способ выполнения кода в Word через вставку видео средствами Online Video. Используя данный элемент, можно добавить в документ видео с YouTube, далее подменить ссылку на него кодом JavaScript, который будет выполнен в Internet Explorer при открытии документа и клике на видео. Наиболее подходящими при проведении социальной инженерии выглядят следующие векторы: Для создания файла с расширением docx. с описанной нагрузкой необходимо выполнить следующие шаги: 1.Добавить YouTube-видео через «Insert – Online Video».  2.Сохранить созданный docx-файл. 3.Разархивировать сохраненный docx. Формат docx. представляет собой zip-архив следующего содержания:
 4.В каталоге Word в файле document.xml в элементе embeddedHtml добавить свой JavaScript-код путем его вставки в тело iframe либо путем замены соответствующей ссылки (src) в iframe. 5.Сформировать zip-архив (с расширением docx) с внесенными изменениями. Далее при открытии сформированного docx-файла от пользователя требуется кликнуть по ссылке на видео и запустить скачанный файл. Как вариант можно вывести скриншот с предложением обновить Flash Player, побуждающий пользователя скачать и запустить файл. При этом никаких предупреждений безопасности не выводится.  Как и в случае с XLM-макросами, данная техника выполнения кода не детектируется ни одним антивирусом на Virustotal и выглядит очень привлекательной для вирусописателей, а также распространена при проведении социальной инженерии в рамках тестирования на проникновение. Демонстрация
Выполнение кода через Online Video в Office На конференции Derbycon 2018 была представлена техника запуска VBA-макросов в документах Office, получившая название VBA Stomping. Суть техники заключается в удалении/модификации (как вариант заполнении нулями) исходного кода VBA в теле офисного документа, оставляя нетронутым скомпилированный код макроса, называемый p-кодом. VBA-код, как и его скомпилированная версия, располагаются внутри файла vbaProject.bin, находящегося в zip-архиве (файл с расширением .docm, .xslm).  Таким образом, техника сводится к удалению/заполнению нулями части файла vbaProject.bin.  В результате документ не вызывает подозрений у антивирусов, анализирующих макрос только по его исходному коду. Например, с помощью этой техники исследователям удалось снизить количество срабатываний антивирусов на банковский троян Emotet, распространяющийся через офисные файлы, с 36/59 до 7/58 на Virustotal.    Также данная техника позволяет затруднить анализ файла, поскольку ни один инструмент, не прибегая к декомпиляции, не сможет извлечь исходный код VBA, который также не будет отображаться в редакторе макросов Office до его разрешения. Рекомендации по противодействию описанным техникам традиционны для защиты от методов социальной инженерии: