Как вредоносные программы используют макросы Office: механика атак и защита

Макросы в Microsoft Office — это скрипты на языке VBA (Visual Basic for Applications), созданные для автоматизации рутинных задач: форматирования документов, расчётов, генерации отчётов. Та же гибкость делает их удобным инструментом для злоумышленников: макрос получает полноценный доступ к объектам приложения, файловой системе, реестру, сети и может запускать произвольный код на компьютере жертвы. Понимание того, как именно происходит атака, позволяет не полагаться только на антивирус, а распознавать подозрительные файлы и правильно настраивать политики безопасности.

Содержание
  1. Почему макросы остаются популярным вектором атаки
  2. Типичная цепочка атаки через макрос
  3. Частые техники обхода защиты и обфускации
  4. Как Microsoft и антивирусы пытаются блокировать атаки
  5. Практические признаки подозрительного документа
  6. Как безопасно проверить подозрительный файл
  7. Настройка защиты на уровне организации Для корпоративной среды защита «по умолчанию» недостаточна. Рекомендуемый базовый набор политик (Group Policy / Intune / Cloud Policy): Блокировка макросов в файлах из интернета (политика Block macros from running in Office files from the Internet — Enabled). Это единственный способ гарантированно предотвратить выполнение, даже если пользователь нажмёт «Включить содержимое». Отключение VBA там, где оно не нужно. Если отдел бухгалтерии не использует макросы — запретите их через Disable VBA for Office applications для соответствующих ОU/групп. Для отделов, где макросы нужны (финмоделирование, автоматизация) — выделите отдельную политику с включённым VBA, но обязательным подписыванием макросов. Требование цифровой подписи макросов. Политика Require macro signature / Trust access to the VBA project object model = Disabled. Только макросы, подписанные доверенным сертификатом (корпоративным CA или публичным EV-сертификатом), будут выполняться без предупреждений. Неподписанные — блокируются или требуют явного подтверждения админом. Настройка Trusted Locations (Доверенные папки). Только конкретные сетевые папки / SharePoint-библиотеки, откуда разрешены макросы. Не добавляйте корень диска C:, профиль пользователя, папку Downloads. Включение Application Guard для недоверенных файлов (если лицензии позволяют). Аудит и алерты. Включите логирование событий Office (Event ID 3000-3009 в Microsoft-Windows-Office/Operational) и пересылайте в SIEM. События «Macro execution blocked», «Protected View exited», «Macro signature validation failed» — повод для расследования. Обучение сотрудников. Регулярные фишинг-тренировки с реальными примерами документов, требующих «Включить макросы». Люди должны понимать: легальный внутренний документ никогда не просит включить макросы для просмотра текста.
  8. Что делать, если макрос всё-таки выполнился
  9. Частые ошибки, которые повышают риск
  10. Сценарии: как действовать в типичных ситуациях
  11. Ситуация 1: Пришло письмо от «бухгалтерии» со счётом в .xlsm
  12. Ситуация 2: Коллега скинул «шаблон с макросами» для отчёта через мессенджер
  13. Ситуация 3: Пользователь жалуется, что «Excel просит включить макросы, а я не умею»
  14. Ситуация 4: В организации используются легальные сложные макросные решения (ценники, закупки, расчёт зарплат)
  15. Альтернативы макросам: как снизить зависимость
  16. Чек-лист для самопроверки перед открытием файла
  17. Резюме: главное, что нужно запомнить

Почему макросы остаются популярным вектором атаки

Несмотря на годы борьбы с макровирусами, этот вектор сохраняет актуальность по трём причинам:

  • Легитимность и доверие. Документы Office — стандарт де-факто в бизнес-коммуникациях. Пользователи привыкли открывать вложения из писем с темами «Счёт», «Договор», «Акт сверки» без лишних сомнений.
  • Мощный API без дополнительных зависимостей. VBA имеет прямой доступ к WMI, PowerShell, CMD, WinHTTP, Windows Script Host, COM-объектам. Злоумышленнику не нужно тащить в систему сторонние утилиты — всё необходимое уже есть в ОС.
  • Простота обфускации. Код макроса хранится внутри документа в сжатом и часто зашифрованном виде. Статические анализаторы и антивирусы сложнее доходят до сути логики, особенно если используются динамическая генерация строк, кодирование Base64, XOR, разбиение кода на множественные модули и формы.

Типичная цепочка атаки через макрос

Атака редко ограничивается самим макросом. Обычно это многостадийный процесс:

  1. Доставка (Initial Access). Файл приходит по почте (фишинг), через заражённый файловый обменник, подменённый легаitimate-ресурс (watering hole) или на флешке. Расширения: .docm, .xlsm, .pptm, реже — старые .doc, .xls с макросами в формате OLE.
  2. Обход Protected View. Файлы из интернета или вложений открываются в «Защищённом представлении» (Protected View) — песочнице с отключёнными макросами. Задача атакующего — заставить пользователя нажать «Включить редактирование» / «Включить содержимое». Для этого используются социальные уловки: фальшивые сообщения «Для просмотра включите макросы», имитация ошибки кодировки, логотипы Microsoft, предупреждения о «повреждённом файле».
  3. Исполнение кода (Execution). После нажатия кнопки макрос запускается. Часто используется событие AutoOpen, Document_Open, Workbook_Open или обработчики событий форм (UserForm_Initialize).
  4. Этап загрузки (Stager / Downloader). Макрос редко содержит полный вредонос. Обычно он скачивает следующую стадию: PowerShell-скрипт, DLL, EXE, shellcode. Загрузка идёт через WinHttp.WinHttpRequest.5.1, MSXML2.XMLHTTP, URLDownloadToFile, вызов powershell.exe -EncodedCommand … или certutil.exe -decode.
  5. Установка и пост-эксплуатация. Загруженный полезный груз устанавливает персистентность (запуск через реестр, задачи планировщика, WMI, ярлыки), собирает данные, движется по сети, разворачивает рен섬вэр, стилер, RAT или криптомайнер.

Частые техники обхода защиты и обфускации

Понимание этих приёмов помогает распознать вредоносный код при ручном анализе или настроить правила обнаружения:

  • Строковая обфускация. Вместо понятных строк («powershell», «download», «http://») используются конкатенация (Chr(112) & Chr(111) …), массивы байт, Base64, XOR с ключом, хранящимся в ячейке листа или свойстве документа.
  • Динамическое создание кода. Макрос генерирует новый VBA-модуль во время выполнения через VBProject.VBComponents.Add и выполняет его — статический анализ не видит итоговый код.
  • Использование свойств документа. Полезная нагрузка или URL спрятаны в BuiltInDocumentProperties / CustomDocumentProperties, в скрытых листах Excel, в текстовых полях (TextBox) на листе, в альтернативном тексте фигур.
  • Living-off-the-land бинарники (LOLBins). Вместо powershell.exe вызывают mshta.exe, wscript.exe, cscript.exe, regsvr32.exe, rundll32.exe, certutil.exe, bitsadmin.exe — они подписаны Microsoft и часто в белых списках.
  • AMSI Bypass. Попытки отключить Antimalware Scan Interface через патч памяти amsi.dll (функция AmsiScanBuffer), установку переменной окружения AMSI_RESULT или использование .NET-рефлексии.
  • Многостадийность внутри документа. Первый макрос безвреден — он только проверяет среду (виртуальная машина, песочница, наличие антивируса, язык ОС, время работы системы). Если проверки пройдены — скачивает и запускает второй макрос или скрипт.
  • Эксплойты уязвимостей Equation Editor / OLE. Старые форматы .doc могут содержать эксплойты CVE-2017-11882, CVE-2018-0802 и др., запускающие код без включения макросов. Важно: это не макровирусы, а уязвимости парсера, но вектор доставки — тот же документ.

Как Microsoft и антивирусы пытаются блокировать атаки

За последние годы защита существенно усилилась. Главные механизмы, которые нужно знать, чтобы не считать их «магией» и не отключать ради удобства:

  • Блокировка макросов из интернета по умолчанию (с 2022 года). В актуальных версиях Office (Microsoft 365, Office 2021, LTSC 2024) макросы в файлах, скачанных из интернета (помеченных Mark-of-the-Web — MotW), блокируются жестко. Пользователь видит жёлтую полоску с текстом «Макросы заблокированы», кнопка «Включить содержимое» неактивна. Снять метку MotW можно только вручную через свойства файла («Разблокировать») или через PowerShell (Unblock-File), что требует осознанного действия.
  • Protected View (Защищённое представление). Изолированный процесс с низкими правами, без доступа к сети, файловой системе, реестру. Макросы там не выполняются. Выход из него — осознанный клик пользователя.
  • Application Guard (Defender Application Guard). Открытие недоверенных файлов в изолированном контейнере Hyper-V (требует Enterprise/Education и настройки). Макрос выполняется внутри контейнера, не затрагивая хост.
  • AMSI (Antimalware Scan Interface). Интерфейс, через который Office передаёт скрипты (VBA, PowerShell, JScript, VBS) в установленный антивирус/EDR до выполнения. Современные защитники видят обфусцированный код после деобфускации в памяти.
  • VBA Macro Blocking Policy (Group Policy / Cloud Policy). Администраторы могут полностью запретить выполнение VBA в Word/Excel/PowerPoint для всех или для конкретных папок/сетевых путей. Политика: Disable VBA for Office applications / Block macros from running in Office files from the Internet.
  • Office Macro Runtime / Script Lab — не установлены по умолчанию. Устаревшие компоненты вроде mscomctl.ocx, mscomct2.ocx часто используются эксплойтами — их отсутствие снижает поверхность атаки.

Практические признаки подозрительного документа

Не нужно быть аналитиком вредоносного ПО, чтобы заметить «красные флаги». Достаточно привыкнуть проверять входящие файлы по этому чек-листу:

  • Расширение с «m» на конце (.docm, .xlsm, .pptm, .dotm, .xltm) — это формат с поддержкой макросов. Обычные рабочие документы в современном Office почти всегда .docx, .xlsx, .pptx (макросы в них сохранять нельзя). Если вам прислали счёт в .xlsm — повод насторожиться.
  • Файл из интернета / почты открывается в Protected View. Это нормально. Если документ требует «Включить редактирование» для простого просмотра текста/таблицы — подозрительно. Легальные шаблоны с макросами обычно не требуют этого для чтения.
  • Навязчивые просьбы включить макросы. Текст в теле документа: «Нажмите «Включить содержимое» для корректного отображения», «Ошибка кодировки, включите макросы», «Документ защищён, для просмотра разрешите скрипты». Легальные файлы так не делают.
  • Скрытые листы, очень мелкий шрифт, белый текст на белом фоне. В Excel злоумышленники прячут полезную нагрузку на листах с Visible = xlSheetVeryHidden (невидимы через UI, только через VBA).
  • Множественные модули VBA с бессмысленными именами (Module1, Module2, Class1, UserForm1) и отсутствие понятных комментариев. Легальные макросы обычно имеют говорящие имена: modExportToPDF, clsInvoiceCalculator.
  • Ссылки на системные библиотеки в References (Tools → References): Microsoft Scripting Runtime (FileSystemObject), Microsoft WinHTTP Services, Microsoft XML, WMI Scripting Library. Их наличие не гарантирует вредоносность, но резко повышает риск — макрос умеет работать с файлами, сетью, системой.

Как безопасно проверить подозрительный файл

Если документ вызывает сомнения, не открывайте его на рабочей машине. Порядок действий:

  1. Проверка расширения и MotW. Правый клик → Свойства → вкладка «Общие» → внизу галочка «Разблокировать». Если она есть — файл скачан из интернета. Не снимайте галочку до анализа.
  2. Открытие в «Защищённом представлении» (Read-Only). В настройках Office (Файл → Параметры → Центр управления безопасностью → Защищённое представление) включите все три пункта. Откройте файл — макросы не запустятся. Посмотрите содержимое: есть ли реальные данные или только картинка с просьбой включить макросы.
  3. Просмотр кода макросов без выполнения. В Protected View вкладка «Разработчик» недоступна. Сохраните копию файла (Файл → Сохранить как) на локальный диск, откройте копию, нажмите Alt+F11 — откроется редактор VBA. Проверьте модули (ThisDocument, Sheet1, Module1…), References, свойства документа. Не нажимайте F5 (Run).
  4. Онлайн-песочницы. Загрузите файл в Any.run, Hybrid Analysis, Joe Sandbox, CAPE, VirusTotal (Behavior таб). Они покажут сетевые соединения, запущенные процессы, записанные файлы, ключи реестра. Не загружайте конфиденциальные внутренние документы в публичные песочницы.
  5. Статический анализ инструментами. olevba (из пакета oletools) извлекает и деобфусцирует VBA-код, показывает подозрительные ключевые слова (AutoOpen, Shell, WinHttp, PowerShell, Base64, WScript.Shell). oleid показывает структуру OLE, наличие флеш-объектов, эксплойтов. msoffcrypto-tool проверяет шифрование файла.
  6. Проверка хешей и IOC. SHA256 файла — в VirusTotal, MalwareBazaar, ThreatFox. Если файл известен — вы увидите детекты и описание поведения.

Настройка защиты на уровне организации

Для корпоративной среды защита «по умолчанию» недостаточна. Рекомендуемый базовый набор политик (Group Policy / Intune / Cloud Policy):

  • Блокировка макросов в файлах из интернета (политика Block macros from running in Office files from the Internet — Enabled). Это единственный способ гарантированно предотвратить выполнение, даже если пользователь нажмёт «Включить содержимое».
  • Отключение VBA там, где оно не нужно. Если отдел бухгалтерии не использует макросы — запретите их через Disable VBA for Office applications для соответствующих ОU/групп. Для отделов, где макросы нужны (финмоделирование, автоматизация) — выделите отдельную политику с включённым VBA, но обязательным подписыванием макросов.
  • Требование цифровой подписи макросов. Политика Require macro signature / Trust access to the VBA project object model = Disabled. Только макросы, подписанные доверенным сертификатом (корпоративным CA или публичным EV-сертификатом), будут выполняться без предупреждений. Неподписанные — блокируются или требуют явного подтверждения админом.
  • Настройка Trusted Locations (Доверенные папки). Только конкретные сетевые папки / SharePoint-библиотеки, откуда разрешены макросы. Не добавляйте корень диска C:, профиль пользователя, папку Downloads.
  • Включение Application Guard для недоверенных файлов (если лицензии позволяют).
  • Аудит и алерты. Включите логирование событий Office (Event ID 3000-3009 в Microsoft-Windows-Office/Operational) и пересылайте в SIEM. События «Macro execution blocked», «Protected View exited», «Macro signature validation failed» — повод для расследования.
  • Обучение сотрудников. Регулярные фишинг-тренировки с реальными примерами документов, требующих «Включить макросы». Люди должны понимать: легальный внутренний документ никогда не просит включить макросы для просмотра текста.

Что делать, если макрос всё-таки выполнился

Если пользователь открыл файл, включил макросы, и вы подозреваете компрометацию:

  1. Изолируйте хост от сети (отключите кабель/вай-фай, блокируйте на коммутаторе/файрволе) — остановите возможный C2-трафик и латеральное движение.
  2. Соберите артефакты до перезагрузки: дамп памяти (WinPMEM, DumpIt), список процессов и сетевых соединений (netstat -ano, Get-Process), Prefetch, Amcache, Shimcache, журналы PowerShell (Operational, 4104), журналы Office, временные файлы (%TEMP%, %APPDATA%\Microsoft\Office\Recent).
  3. Проверьте персистентность: ключи Run/RunOnce в реестре (HKCU/HKLM), задачи планировщика (schtasks /query /fo LIST /v), WMI-подписки (Get-WmiObject -Namespace root\subscription -Class __FilterToConsumerBinding), ярлыки в Startup, службы, драйверы.
  4. Смените пароли для учётных записей, которые использовались на этой машине (особенно если был запущен стилер или keylogger).
  5. Проведите полную проверку EDR/антивирусом в офлайн-режиме (Windows Defender Offline или загрузочная флешка вендора).
  6. Проанализируйте документ-вектор (как описано выше), чтобы понять, какой полезный груз был загружен, и проверить остальные хосты на IOC (IP, домены, хеши, имена файлов, ключи реестра).
  7. Отчётность. Если это корпоративный инцидент — оформите по процессу IR (Incident Response), уведомите заинтересованные стороны, при необходимости — регулятор (152-ФЗ, GDPR, PCI DSS и т.д.).

Частые ошибки, которые повышают риск

Ошибка Почему это опасно Правильный подход
Отключение Protected View «чтобы не мешало» Файлы из интернета открываются с полными правами сразу, макросы запускаются без лишних кликов Оставьте Protected View включённым для всех трёх источников (файлы из интернета, вложения, небезопасные папки)
Добавление папки Downloads или корня диска в Trusted Locations Любой скачанный файл получает право выполнять макросы без предупреждений Доверенные папки — только контролируемые сетевые ресурсы с проверкой контента
Разрешение выполнения неподписанных макросов для всех пользователей Один клик на «Включить содержимое» — и код запускается Требовать цифровую подпись, блокировать неподписанные через политику
Игнорирование метки Mark-of-the-Web (снятие галочки «Разблокировать» массово) Снимается главный маркер происхождения файла, Office считает его локальным и доверенным Не снимайте MotW без анализа. Используйте скрипты очистки только для проверенных внутренних файлов
Отсутствие обучения: пользователи не знают, как выглядит запрос на включение макросов Социальная инженерия работает почти гарантированно Регулярные тренировки с примерами: «Этот экран — ловушка, не нажимайте»

Сценарии: как действовать в типичных ситуациях

Ситуация 1: Пришло письмо от «бухгалтерии» со счётом в .xlsm

Не открывайте сразу. Проверьте адрес отправителя (не отображаемое имя, а реальный SMTP-адрес), домен, SPF/DKIM/DMARC. Свяжитесь с бухгалтерией по известному каналу (внутренний чат, телефон). Если файл неожиданен — отправьте в ИБ/админов на проверку в песочнице. Откройте только в Protected View для оценки содержимого.

Ситуация 2: Коллега скинул «шаблон с макросами» для отчёта через мессенджер

Файл не из корпоративной библиотеки шаблонов / SharePoint. Сохраните, проверьте расширение (.xlsm). Откройте в Protected View. Посмотрите код (Alt+F11) — есть ли подозрительные вызовы (Shell, WinHttp, PowerShell, Base64). Если макрос просто форматирует таблицу — подпишите его корпоративным сертификатом и положите в доверенную библиотеку. Если код непонятный — не используйте, попросите коллегу выложить в официальное хранилище.

Ситуация 3: Пользователь жалуется, что «Excel просит включить макросы, а я не умею»

Это правильная реакция пользователя. Инструкция: «Не нажимайте «Включить содержимое». Закройте файл. Напишите в службу поддержки / перешлите письмо в ИБ». Поощряйте такую осторожность, а не ругайте за «неумение».

Ситуация 4: В организации используются легальные сложные макросные решения (ценники, закупки, расчёт зарплат)

Выделите их в отдельные доверенные папки (Trusted Locations) с ограниченным доступом на запись. Подпишите все модули корпоративным сертификатом. Настройте политику: только подписанные макросы выполняются. Запретите VBA для всех остальных пользователей. Ведите реестр утверждённых макросных решений с ответственными лицами и датами перепроверки.

Альтернативы макросам: как снизить зависимость

Лучшая защита — убрать вектор атаки там, где это возможно. Современные инструменты Office позволяют заменить большинство VBA-решений:

  • Power Query (Get & Transform) — загрузка, очистка, объединение данных из баз, API, файлов без кода. Работает в .xlsx, макросы не нужны.
  • Office Scripts (TypeScript/JavaScript) в Excel Online — облачные скрипты, выполняются в песочнице Microsoft 365, не имеют доступа к локальной файловой системе и реестру. Подходят для автоматизации в браузере и Power Automate.
  • Power Automate / Logic Apps — процессыapproval, уведомления, перемещение файлов, вызовы API. Выносят логику из документа в управляемый облачный workflow.
  • Python в Excel (Public Preview / Microsoft 365 Insiders) — выполнение Python-кода в изолированном контейнере Azure, результаты возвращаются на лист. Нет доступа к хосту.
  • Надстройки (Office Add-ins) на платформе Office.js — веб-приложения в боковой панели/ленте, изолированные от документа, деплоятся через манифест, обновляются централизованно.

Постепенный переход на эти технологии снижает поверхность атаки и упрощает управление: не нужно подписывать макросы, контролировать Trusted Locations, бояться обфускации.

Чек-лист для самопроверки перед открытием файла

  • Расширение файла: .docx/.xlsx/.pptx (без макросов) или .docm/.xlsm/.pptm (с макросами)?
  • Файл из интернета / почты / флешки / сетевой папки?
  • Есть ли галочка «Разблокировать» в свойствах файла (Mark-of-the-Web)?
  • Открывается ли файл в Protected View (жёлтая полоска сверху)?
  • Требует ли документ «Включить редактирование» / «Включить содержимое» для простого просмотра?
  • Есть ли в тексте документа просьбы нажать кнопки включения макросов, предупреждения о кодировке, логотипы Microsoft?
  • Если нужно посмотреть код: открыл копию в редакторе VBA (Alt+F11) — есть ли вызовы Shell, WinHttp, PowerShell, WScript, Base64, обфускация строк?
  • Есть ли в References подозрительные библиотеки (Scripting Runtime, WinHTTP, MSXML, WMI)?
  • Файл проверен в песочнице / VirusTotal / olevba?
  • Соответствует ли файл корпоративной политике (подписан, лежит в Trusted Location, утверждён ИБ)?

Резюме: главное, что нужно запомнить

Макросы Office — мощный инструмент автоматизации, который десятилетиями эксплуатируется злоумышленниками. Современная защита работает по принципу «по умолчанию запрещено»: файлы из интернета открываются в песочнице, макросы в них блокируются, выполнение разрешено только для подписанного кода из доверенных мест. Ваша задача — не отключать эти защиты ради удобства, а выстроить процессы так, чтобы легальные макросные решения работали безопасно (подпись, доверенные папки, реестр решений), а всё остальное — блокировалось до анализа.

На практике это значит: не нажимайте «Включить содержимое» в файлах извне, не добавляйте Downloads в доверенные папки, требуйте цифровые подписи для внутренних макросов, обучайте коллег распознавать социальную инженерию («Нажмите, чтобы просмотреть»), и используйте современные альтернативы (Power Query, Office Scripts, Power Automate) там, где макросы не обязательны. Если макрос всё же выполнился подозрительно — изолируйте хост, собирайте артефакты, анализируйте вектор, меняйте пароли.

Материал носит информационный характер и не заменяет профессиональную оценку безопасности вашей инфраструктуры. При обнаружении инцидента или подозрении на компрометацию обратитесь к специалистам по информационной безопасности (SOC, CERT, ИБ-отдел) для проведения расследования и реагирования в соответствии с корпоративными политиками и нормативными требованиями.

PEFile.ru