Нестареющая классика, или обзор новых векторов атак через Microsoft Office

    image
    Хакеры десятилетиями эксплуатируют человеческую доверчивость и невнимательность. Большинство пользователей без раздумий открывают безобидное, на первый взгляд, почтовое вложение и, сами того не зная, запускают вредоносное ПО. Чтобы защититься от подобных атак, нужно знать врага в лицо. Сегодня мы попробуем разобраться, как устроены три новые техники выполнения кода в офисных приложениях, обнаруженные в этом году, и какие способы защиты от них существуют.


    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».


    image


    Далее выбрать «MS Excel 4.0».


    image


    В результате появится лист «Macro1», в любой ячейке которого посредством функции «EXEC» можно запустить нужный процесс. Для автоматического запуска макроса первую ячейку необходимо переименовать в «Auto_open» (аналогично процедуре AutoOpen() в VBA-макросах).


    После открытия сохраненного документа появляется стандартное оповещение с запросом на запуск макроса.


    image


    Лист с макросом можно скрыть, выбрав «Hide» в контекстном меню.


    Помимо возможности запуска процессов, XLM-макросы умеют обращаться к Win32 API с помощью функций REGISTER и CALL. Ниже приведен PoC-код макроса, осуществляющего технику внедрения шелл-кода.


    image


    При этом для хранения символов шелл-кода внутри ячейки макроса используется функция кодирования CHAR. Для удаления нулевых байтов можно воспользоваться утилитой msfvenom, входящей в состав Metasploit Framework.


    По способу хранения внутри файла Excel XLM-макросы существенно отличаются от классических VBA-макросов, появившихся годом позднее в Excel 5.0. В новом формате Excel .xlsm, который представляет собой ZIP-архив, XLM-макросы хранятся внутри XML-файла в каталоге macrosheets. В формате .xsl (Excel 97 – 2003) макрос хранится внутри OLE-потока.


    Далее видно, что VBA-макрос хранится в отдельном контейнере (на рисунке слева), в то время как XLM-макросы расположены в одном контейнере с данными.


    image


    Данные различия в способах хранения макросов существенно сказываются на качестве их детектирования антивирусами, в частности, технология Antimalware Scanning Interface (AMSI) не поддерживает XLM, несмотря на заявленную поддержку со стороны Office 365.


    К примеру, Metasploit powershell web_delivery код был внедрен в Excel средствами VBA- и XLM-макросов (на рисунках ниже).


    image


    image


    На Virustotal документ Excel с VBA-макросом вызвал срабатывания 21 из 59 антивирусов.


    image


    При этом аналогичный документ с XLM-макросом не вызвал подозрений ни у одного антивируса.


    image


    Демонстрация
    Выполнение кода через 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».


    image


    2.Сохранить созданный docx-файл.


    3.Разархивировать сохраненный docx. Формат docx. представляет собой zip-архив следующего содержания:
    image


    4.В каталоге Word в файле document.xml в элементе embeddedHtml добавить свой JavaScript-код путем его вставки в тело iframe либо путем замены соответствующей ссылки (src) в iframe.


    5.Сформировать zip-архив (с расширением docx) с внесенными изменениями.


    Далее при открытии сформированного docx-файла от пользователя требуется кликнуть по ссылке на видео и запустить скачанный файл. Как вариант можно вывести скриншот с предложением обновить Flash Player, побуждающий пользователя скачать и запустить файл. При этом никаких предупреждений безопасности не выводится.


    image


    Как и в случае с XLM-макросами, данная техника выполнения кода не детектируется ни одним антивирусом на Virustotal и выглядит очень привлекательной для вирусописателей, а также распространена при проведении социальной инженерии в рамках тестирования на проникновение.


    Демонстрация
    Выполнение кода через Online Video в Office



    VBA Stomping


    На конференции Derbycon 2018 была представлена техника запуска VBA-макросов в документах Office, получившая название VBA Stomping. Суть техники заключается в удалении/модификации (как вариант заполнении нулями) исходного кода VBA в теле офисного документа, оставляя нетронутым скомпилированный код макроса, называемый p-кодом. VBA-код, как и его скомпилированная версия, располагаются внутри файла vbaProject.bin, находящегося в zip-архиве (файл с расширением .docm, .xslm).


    image


    Таким образом, техника сводится к удалению/заполнению нулями части файла vbaProject.bin.


    image


    В результате документ не вызывает подозрений у антивирусов, анализирующих макрос только по его исходному коду. Например, с помощью этой техники исследователям удалось снизить количество срабатываний антивирусов на банковский троян Emotet, распространяющийся через офисные файлы, с 36/59 до 7/58 на Virustotal.


    image


    image


    Также данная техника позволяет затруднить анализ файла, поскольку ни один инструмент, не прибегая к декомпиляции, не сможет извлечь исходный код VBA, который также не будет отображаться в редакторе макросов Office до его разрешения.


    Защита


    Рекомендации по противодействию описанным техникам традиционны для защиты от методов социальной инженерии:


    1. Повышение осведомленности сотрудников по части вопросов информационной безопасности.
    2. Запрет использования макросов в Microsoft Office.
    3. Комплексный подход к обеспечению информационной безопасности, включающий использование Endpoint-решений, а также периметровых средств защиты (next generation firewalls, UTM-решения, почтовые шлюзы).
    • +44
    • 10,5k
    • 9
    Инфосистемы Джет
    319,00
    Компания
    Поделиться публикацией

    Комментарии 9

      +2
      VBA Stomping напоминает атаки через npmjs, когда минифицированная версия пакета содержала в себе вредоносную нагрузку.
        0
        Самый доступный и эффективный тут второй способ. Но вот как запретить макросы например средствами групповых политик? я искал этот вопрос и нашел только очень не простое решение в виде добавления отдельного шаблона и потом уже его модификации, т.к. Win по умолчанию не имеет шаблона для настройки в GPO. Может кто знает более простой способ?
          0
          Можно скачать офисные ADM/X и с их помощью настроить политики стандартным редактором.
            +3
            Позволю себе несколько расширить ответ предыдущего комментатора.
            Вам понадобится:
            1. Внедрить централизованное хранение административных шаблонов групповых политик (почитать можно например здесь)
            2. Скачать шаблоны групповых политики офиса (те самые admx). Для Office 2013 здесь. Для других версий найдёте по аналогии.

            Далее уже стандартная работа с GPO. Надеюсь разберётесь сами.
            +2

            Хуже того, дырявое решето под названием Excel выполняет также XLM макросы из CSV файлов. Зато легендарная совместимость с дырками из прошлого тысячелетия.

              0

              Вы абсолютно правы. Удивительно то, что по каким-то непонятным причинам антивирусы не считают xlm зловредными, в отличие от vba. Видимо еще не было претендентов.

                0

                *Прецедентов

                  0
                  Пока бага не натворит делов — это не бага, а фича. :-D
                0
                Абсолютно безопасна разве что система PDP/VAX. А макросы отличная штука, например недавно написал вместо монструозного кода в формулах, простейший макрос который составляет спецификацию для Autocad. Инженеры были счастливы.
                А безопасность обеспечить довольно просто, нужно подписать этот документ сертификатом.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое