Хакеры десятилетиями эксплуатируют человеческую доверчивость и невнимательность. Большинство пользователей без раздумий открывают безобидное, на первый взгляд, почтовое вложение и, сами того не зная, запускают вредоносное ПО. Чтобы защититься от подобных атак, нужно знать врага в лицо. Сегодня мы попробуем разобраться, как устроены три новые техники выполнения кода в офисных приложениях, обнаруженные в этом году, и какие способы защиты от них существуют.
XLM-макросы
Эксперты компании 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
Microsoft Office Online Video
Командой исследователей Cumulate был обнаружен новый способ выполнения кода в Word через вставку видео средствами Online Video. Используя данный элемент, можно добавить в документ видео с YouTube, далее подменить ссылку на него кодом JavaScript, который будет выполнен в Internet Explorer при открытии документа и клике на видео. Наиболее подходящими при проведении социальной инженерии выглядят следующие векторы:
- Добавление в iframe с YouTube-роликом кода эксплойта для IE/Flash.
- Добавление в iframe с YouTube-роликом JavaScript-кода с методом msSaveOrOpenBlob, посредством которого будет предложено скачать и запустить вредоносный файл. Тело файла содержится внутри JavaScript в base64.
Для создания файла с расширением 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
VBA Stomping
На конференции Derbycon 2018 была представлена техника запуска VBA-макросов в документах Office, получившая название VBA Stomping. Суть техники заключается в удалении/модификации (как вариант заполнении нулями) исходного кода VBA в теле офисного документа, оставляя нетронутым скомпилированный код макроса, называемый p-кодом. VBA-код, как и его скомпилированная версия, располагаются внутри файла vbaProject.bin, находящегося в zip-архиве (файл с расширением .docm, .xslm).
Таким образом, техника сводится к удалению/заполнению нулями части файла vbaProject.bin.
В результате документ не вызывает подозрений у антивирусов, анализирующих макрос только по его исходному коду. Например, с помощью этой техники исследователям удалось снизить количество срабатываний антивирусов на банковский троян Emotet, распространяющийся через офисные файлы, с 36/59 до 7/58 на Virustotal.
Также данная техника позволяет затруднить анализ файла, поскольку ни один инструмент, не прибегая к декомпиляции, не сможет извлечь исходный код VBA, который также не будет отображаться в редакторе макросов Office до его разрешения.
Защита
Рекомендации по противодействию описанным техникам традиционны для защиты от методов социальной инженерии:
- Повышение осведомленности сотрудников по части вопросов информационной безопасности.
- Запрет использования макросов в Microsoft Office.
- Комплексный подход к обеспечению информационной безопасности, включающий использование Endpoint-решений, а также периметровых средств защиты (next generation firewalls, UTM-решения, почтовые шлюзы).
Комментарии (7)
Tufed
14.12.2018 17:35Самый доступный и эффективный тут второй способ. Но вот как запретить макросы например средствами групповых политик? я искал этот вопрос и нашел только очень не простое решение в виде добавления отдельного шаблона и потом уже его модификации, т.к. Win по умолчанию не имеет шаблона для настройки в GPO. Может кто знает более простой способ?
vesper-bot
14.12.2018 17:53Можно скачать офисные ADM/X и с их помощью настроить политики стандартным редактором.
Mur81
14.12.2018 18:04Позволю себе несколько расширить ответ предыдущего комментатора.
Вам понадобится:
1. Внедрить централизованное хранение административных шаблонов групповых политик (почитать можно например здесь)
2. Скачать шаблоны групповых политики офиса (те самые admx). Для Office 2013 здесь. Для других версий найдёте по аналогии.
Далее уже стандартная работа с GPO. Надеюсь разберётесь сами.
cebka
14.12.2018 20:55+1Хуже того, дырявое решето под названием Excel выполняет также XLM макросы из CSV файлов. Зато легендарная совместимость с дырками из прошлого тысячелетия.
mk2
VBA Stomping напоминает атаки через npmjs, когда минифицированная версия пакета содержала в себе вредоносную нагрузку.