Макросы в документах Office остаются одним из основных векторов атак: вредоносный код запускается в момент включения редактирования или нажатия кнопки «Включить содержимое». Защита не в полном запрете макросов — они нужны для работы — а в привычке проверять источник файла до нажатия этой кнопки. Статья описывает конкретные шаги проверки, которые можно выполнить без специальных инструментов, и объясняет, на какие признаки обратить внимание.
- Почему проверка источника важнее доверия к содержимому
- Базовая схема проверки: три уровня доверия
- Шаг 1. Проверка контекста доставки до открытия файла
- Электронная почта
- Мессенджеры и облачные ссылки
- Съёмные носители
- Шаг 2. Анализ свойств файла без запуска макросов
- Шаг 3. Проверка цифровой подписи макросов
- Как проверить подпись в Office
- Шаг 4. Инспекция кода макросов (если нет подписи и файл нужен)
- Шаг 5. Поведенческая проверка в изолированной среде (песочница)
- Типичные ошибки при проверке
- Сценарии действий: что делать в типичных ситуациях
- Сценарий А: Ожидаемый отчёт от коллеги по корпоративной почте, .xlsm, подпись есть и действительна
- Сценарий Б: Неожиданный файл от коллеги, внешняя почта/мессенджер, подписи нет
- Сценарий В: Счёт от контрагента, .docm, подписи нет, в письме срочность
- Сценарий Г: Файл с флешки / скачан с сайта / из спама
- Сценарий Д: Внутри файла кнопка «Нажмите, чтобы включить содержимое» с картинкой-инструкцией
- Настройка политики макросов в организации (для администраторов)
- Чек-лист быстрой проверки перед нажатием «Включить содержимое»
- Что делать, если макросы уже включили по ошибке
- Резюме: главный принцип
- FAQ
- Можно ли доверять файлу, если он прошёл проверку антивирусом на почтовом шлюзе?
- Что такое «Защищённое представление» и защищает ли оно от макросов?
- Если файл подписан самоподписанным сертификатом — это безопасно?
- Нужно ли проверять макросы в .xlsx / .docx / .pptx?
- Можно ли просто удалить макросы из файла, сохранив как .xlsx?
Почему проверка источника важнее доверия к содержимому
Современные версии Office по умолчанию блокируют макросы в файлах из интернета и показывают жёлтую панель предупреждения. Многие пользователи привыкли нажимать «Включить содержимое», не читая текст. Злоумышленники рассчитывают именно на это: документ выглядит как обычный счёт, акт или прайс-лист, а макрос в фоне скачивает полезную нагрузку.
Проверка происхождения отвечает на вопрос: «Действительно ли этот файл пришёл от того, за кого себя выдаёт отправитель, и не был ли изменён по пути?» Ответ на этот вопрос определяет, можно ли доверять коду внутри документа.
Базовая схема проверки: три уровня доверия
Прежде чем открывать файл, определите его уровень доверия по трём критериям:
- Уровень 1 — Ожидаемый файл от известного контакта через корпоративный канал. Пример: коллега прислал .xlsm по внутренней почте или через SharePoint/Teams, вы ждали этот отчёт, имя файла и тема письма совпадают с договорённостью.
- Уровень 2 — Файл от известного контакта, но через внешний канал или неожиданно. Пример: партнёр прислал .docm с личной почты, в Skype/Telegram или по ссылке на облако. Файл не ожидался, тема письма общая («Документ», «Счёт»).
- Уровень 3 — Файл от неизвестного отправителя, из спама, с публичного сайта или флешки. Любой такой файл считается непроверенным до доказательства обратного.
Для Уровня 1 достаточно стандартной проверки свойств файла и цифровой подписи (есть — отлично, нет — решаете по политике компании). Для Уровня 2 и 3 требуется расширенная проверка, описанная ниже.
Шаг 1. Проверка контекста доставки до открытия файла
Не открывайте вложение сразу. Сначала оцените контейнер, в котором оно пришло.
Электронная почта
- Адрес отправителя vs отображаемое имя. Наведите курсор на имя — реальный адрес может быть ivan.ivanov@company.com, а отображаемое — «Иван Иванов». Если домен не совпадает с заявленной организацией (например, @gmail.com вместо @company.ru) — это признак подделки.
- Заголовки письма (Received, SPF, DKIM, DMARC). В Outlook: Файл → Свойства → Заголовки интернета. Ищите строки spf=pass, dkim=pass, dmarc=pass. Их отсутствие не гарантирует вредоносность, но снижает доверие.
- Стиль и язык. Ошибки в названии компании, нетипичные формулировки, срочность («срочно оплатите», «сегодня истекает срок») — социально-инженерные маркеры.
- Наличие других вложений. Если в письме ещё есть .pdf, .exe, .zip, .iso, .lnk — риск выше. Злоумышленники часто кладут несколько полезных нагрузок.
Мессенджеры и облачные ссылки
- Ссылка на OneDrive/Google Drive/Яндекс.Диск не гарантирует безопасность — аккаунт отправителя могли взломать.
- Проверьте, действительно ли это аккаунт коллеги: напишите ему в другом канале (лично, по телефону, в корпоративном чате).
- Если файл прислали в архиве (.zip, .rar, .7z) с паролем, а пароль в том же сообщении — это классический способ обхода антивируса на шлюзе. Не распаковывайте без проверки.
Съёмные носители
- Флешка, найденная на парковке или полученная на конференции — классический вектор (BadUSB, зараженные ярлыки). Вставляйте только свои или выданные ИБ.
- Отключите автозапуск (Autoplay) в Windows: Параметры → Устройства → Автозапуск → «Выбирать действие для каждого типа носителя».
Шаг 2. Анализ свойств файла без запуска макросов
Нажмите правой кнопкой на файл → Свойства. Проверьте следующие поля:
| Поле | Что искать | Подозрительно, если |
|---|---|---|
| Тип файла / Расширение | .docm, .xlsm, .pptm, .doc, .xls, .ppt (старые форматы могут содержать макросы) | Файл назван «Счёт.pdf», но расширение .docm или .exe; двойное расширение (invoice.pdf.docm) |
| Размер | Соответствует ожидаемому типу документа | Пустой отчёт весит 50 МБ; одностраничный Word — 10 МБ (может скрывать встроенные объекты) |
| Дата создания / изменения | Логичная хронология | Дата создания — будущее; дата изменения — вчера, а файл «архив 2020 года» |
| Автор / Последний редактор | Имя совпадает с отправителем или отделом | Автор «Admin», «User», «John», случайный набор символов |
| Компьютер (в деталях) | Имя рабочей станции отправителя | Имя не совпадает с корпоративной схемой именования |
| Блокировка (внизу вкладки «Общие») | Кнопка «Разблокировать» | Файл скачан из интернета — Windows ставит метку Zone.Identifier. Наличие кнопки «Разблокировать» подтверждает внешний источник |
Вкладка «Подробности» (Details) показывает больше метаданных: версию приложения, время редактирования, количество ревизий. Если документ «только что создан», но время редактирования — 40 часов — это признак шаблона, в который вставили макрос.
Шаг 3. Проверка цифровой подписи макросов
Цифровая подпись подтверждает, что код не менялся после подписания и идентифицирует издателя. Это единственный технический способ доверить макрос без ручного аудита кода.
Как проверить подпись в Office
- Откройте файл в «Защищённом представлении» (желтая панель — «Включить редактирование» еще не нажимали).
- Файл → Сведения → Просмотр подписей (View Signatures) или вкладка Разработчик → Макросы → Безопасность макросов → Цифровые подписи.
- Если подпись есть: нажмите «Просмотр сертификата» → вкладка «Сведения» → «Тема» (Subject). Должны быть читаемое имя организации, email, возможно OID политики.
- Проверьте цепочку доверия: сертификат должен выдан доверенным УЦ (DigiCert, GlobalSign, Sectigo, корпоративный УЦ). Самоподписанные сертификаты (Self-signed) не дают гарантии идентичности — их может создать кто угодно.
- Статус подписи: «Действительна», «Недействительна» (код изменён после подписания), «Цепочка доверия не установлена» (корневой сертификат УЦ не в доверенных).
Практический вывод: Действительная подпись доверенного УЦ + имя издателя совпадает с ожидаемым отправителем = высокий уровень доверия. Нет подписи или подпись недействительна = макросы запускать нельзя без согласования с ИБ или ручного анализа кода.
Шаг 4. Инспекция кода макросов (если нет подписи и файл нужен)
Если файл с Уровня 2/3, подписи нет, но бизнес-требует содержимого — можно посмотреть код перед запуском. Это не требует навыков программирования, достаточно знать, на что смотреть.
- Откройте файл в «Защищённом представлении» (макросы не запустятся).
- Вкладка Разработчик → Visual Basic (или Alt+F11). Если вкладки нет: Файл → Параметры → Настройка ленты → галочка «Разработчик».
- В дереве проекта (слева) разверните Modules, ThisDocument, ThisWorkbook, Sheet1 и т.д.
- Ищите подозрительные паттерны в коде:
- Auto_Open, Workbook_Open, Document_Open, AutoClose — автозапуск при открытии/закрытии. Легальные макросы часто используют их для инициализации, но в сочетании с нижеперечисленным — риск.
- Shell, CreateObject(«WScript.Shell»), CreateObject(«Shell.Application») — запуск внешних программ (cmd, powershell, rundll32).
- URLDownloadToFile, WinHttpRequest, XMLHTTP, MSXML2.XMLHTTP — скачивание файлов из интернета.
- Base64, StrConv, Chr, ChrW, обфусцированные строки — скрытие команд (powershell -enc …).
- VBAProject.Protection = False, Unprotect — снятие защиты с проекта (попытка скрыть код).
- Kill, FileCopy, Name As, Scripting.FileSystemObject — манипуляции с файлами на диске.
- Environ(«TEMP»), Environ(«APPDATA») — запись во временные папки.
Если код читаем, комментирован, делает только расчёты/форматирование внутри документа — риск низкий. Если есть сетевая активность, запуск процессов, обфускация — не включайте макросы, передайте файл ИБ.
Шаг 5. Поведенческая проверка в изолированной среде (песочница)
Для файлов Уровня 3 или подозрительных Уровня 2 безопаснее открыть в изолированной среде:
- Windows Sandbox (встроен в Windows 10/11 Pro/Enterprise): чистая ОС при каждом запуске, сеть изолирована или NAT. Скопируйте файл внутрь, откройте, нажмите «Включить содержимое», наблюдайте: появились ли новые процессы (powershell, cmd, wscript), сетевые соединения (Resource Monitor → Network), файлы в %TEMP%.
- Виртуальная машина (VirtualBox, VMware, Hyper-V) со снимком (snapshot) до открытия. Отключите общие папки и сеть (или используйте внутреннюю сеть).
- Онлайн-песочницы (ANY.RUN, Hybrid Analysis, Joe Sandbox, CAPE) — загружаете файл, получаете отчёт по поведению: сетевые индикаторы (IOC), созданные файлы, ключи реестра, MITRE ATT&CK-теги. Не загружайте конфиденциальные документы в публичные песочницы.
Если в песочнице макрос ничего не делает — возможно, он проверяет окружение (VM-детект, домен, язык ОС, наличие антивируса) и «спит». Это не значит, что файл чист.
Типичные ошибки при проверке
| Ошибка | Почему это не работает | Правильная альтернатива |
|---|---|---|
| Доверяю имени файла («Счёт_123.docx») | Расширение может быть скрыто, имя — любым | Проверяйте реальное расширение и свойства файла |
| Доверяю, что антивирус не ругается | Сигнатуры обновляются с задержкой, полиморфный код обходит статический анализ | Антивирус — необходимый, но не достаточный слой. Комбинируйте с проверкой источника и подписи |
| Нажимаю «Включить содержимое», чтобы посмотреть, что внутри | Макрос выполняется в момент нажатия, до того как вы увидите данные | Смотрите код в VBA-редакторе или откройте в песочнице |
| Сохраняю как .xlsx/.docx, думая — макросы удалятся | При сохранении в формате без макросов код удаляется, но если файл уже выполнил вредоносные действия при открытии — поздно | Не открывайте подозрительный файл в основной ОС вообще |
| Доверяю, что файл пришёл от коллеги (имя в From) | Аккаунт мог быть скомпрометирован, адрес подделан (spoofing) | Подтверждайте через второй канал (звонок, корпоративный чат, лично) |
| Игнорирую предупреждение «Файл заблокирован» | Метка Zone.Identifier означает: файл скачан из интернета/вложения | Разблокируйте только после полной проверки источников |
Сценарии действий: что делать в типичных ситуациях
Сценарий А: Ожидаемый отчёт от коллеги по корпоративной почте, .xlsm, подпись есть и действительна
Действие: Включите макросы. Риск минимален.
Сценарий Б: Неожиданный файл от коллеги, внешняя почта/мессенджер, подписи нет
Действие: Не открывайте. Напишите коллеге в корпоративном чате/по телефону: «Ты присылал файл X?» Если да — просите переслать через корпоративный канал или подписать макрос. Если нет — сообщите ИБ.
Сценарий В: Счёт от контрагента, .docm, подписи нет, в письме срочность
Действие: Классическая фишинг-схема. Не включайте макросы. Проверьте контрагента в 1С/CRM, позвоните по известному телефону. Просите прислать PDF или подписанный документ.
Сценарий Г: Файл с флешки / скачан с сайта / из спама
Действие: Откройте только в Windows Sandbox или VM. Если макросы нужны для работы — передайте ИБ на анализ. Самостоятельно не включайте.
Сценарий Д: Внутри файла кнопка «Нажмите, чтобы включить содержимое» с картинкой-инструкцией
Действие: Это социальная инженерия (fake preview). Закройте файл. Реальная панель предупреждения Office — жёлтая, вверху окна, с текстом «Макросы отключены».
Настройка политики макросов в организации (для администраторов)
Если вы настраиваете защиту для других — используйте групповые политики (GPO) или Intune/Endpoint Manager:
- Блокировать макросы в файлах из интернета (политика «Block macros from running in Office files from the Internet» / VBAMacrosFromInternet). Это включает метку Zone.Identifier. Включено по умолчанию в актуальных версиях Office 365 / 2021 / LTSC.
- Требовать подпись макросов (политика «Require macro signature» / RequireSignedMacros). Неподписанные макросы не запустятся даже при нажатии «Включить содержимое».
- Отключить VBA полностью для пользователей, которым макросы не нужны (политика «Disable VBA for Office applications» / DisableVBA).
- Настроить Trusted Locations — только сетевые папки под контролем ИТ, где лежат проверенные шаблоны. Не добавляйте локальные папки пользователей.
- Включить Protected View для всех файлов из интернета, вложений и небезопасных папок.
Политики применяются через User Configuration → Administrative Templates → Microsoft Office 2016/365 → Security Settings или Cloud Policy service для Microsoft 365.
Чек-лист быстрой проверки перед нажатием «Включить содержимое»
- Ожидаю ли я этот файл от этого отправителя?
- Канал доставки — корпоративный (почта, SharePoint, Teams) или внешний?
- Расширение файла соответствует назначению (.xlsm для таблиц с макросами, не .pdf.docm)?
- Есть ли кнопка «Разблокировать» на вкладке «Общие» свойств файла?
- Есть ли действительная цифровая подпись макросов от доверенного издателя?
- Если подписи нет — могу ли я посмотреть код в VBA-редакторе и подтвердить отсутствие сетевой активности, Shell, обфускации?
- Если сомневаюсь — есть ли возможность открыть в Windows Sandbox / VM?
- Подтвердил ли я лично/по телефону/в корпоративном чате, что отправитель действительно прислал файл?
Если хотя бы на один пункт ответ «нет» или «не знаю» — не включайте макросы. Уточните или передайте ИБ.
Что делать, если макросы уже включили по ошибке
- Закройте документ и все приложения Office.
- Отключите компьютер от сети (Wi-Fi / кабель) — остановит возможную загрузку полезной нагрузки или экспфильтрацию.
- Сообщите ИБ / системному администратору: время, файл, что делали.
- Запустите полную проверку антивирусом / EDR-агентом.
- Проверьте автозагрузку (Task Manager → Startup, Autoruns), планировщик задач, службы на предмет новых записей.
- Смените пароли корпоративных аккаунтов с чистого устройства, если есть подозрение на кейлоггер / стилер.
Быстрая реакция ограничивает ущерб. Не пытайтесь «проверить, всё ли ок» самостоятельно — вредонос может быть скрыт.
Резюме: главный принцип
Макросы — это исполняемый код. Относитесь к файлу с макросами как к программе .exe: не запускайте без проверки издателя и назначения. Порядок действий: контекст доставки → свойства файла → цифровая подпись → код (при необходимости) → песочница (при сомнениях). Никакой срочности не оправдывает пропуск этих шагов — восстановление после инцидента стоит в десятки раз дороже минуты проверки.
Материал носит информационный характер и не заменяет корпоративные политики информационной безопасности или консультацию со специалистом по ИБ. При подозрении на инцидент безопасности действуйте согласно регламенту вашей организации и обратитесь к ответственным за защиту информации.
FAQ
Можно ли доверять файлу, если он прошёл проверку антивирусом на почтовом шлюзе?
Антивирус на шлюзе ловит известные сигнатуры. Новые, обфусцированные или целевые образцы проходят. Антивирус — необходимый слой, но не замена проверке источника и подписи.
Что такое «Защищённое представление» и защищает ли оно от макросов?
Да. В «Защищённом представлении» (жёлтая полоса «Включить редактирование») макросы не выполняются. Вы можете читать документ, копировать текст, смотреть свойства и VBA-код (через Alt+F11) безопасно. Не нажимайте «Включить редактирование» и «Включить содержимое» до завершения проверки.
Если файл подписан самоподписанным сертификатом — это безопасно?
Нет. Самоподписанный сертификат можно сгенерировать за минуту. Он подтверждает только целостность кода (не менялся после подписания), но не идентичность автора. Доверяйте только сертификатам публичных УЦ или корпоративному УЦ, корень которого развернут в доверенных.
Нужно ли проверять макросы в .xlsx / .docx / .pptx?
В современных форматах (Office Open XML) макросы не хранятся — для этого нужны .xlsm, .docm, .pptm, .xlsb. Но старые форматы .xls, .doc, .ppt могут содержать макросы. Проверяйте расширение реальное, а не в имени файла.
Можно ли просто удалить макросы из файла, сохранив как .xlsx?
Если файл уже открыт и макросы выполнились — поздно, вредоносный код мог сработать. Если файл не открывали — можно открыть в «Защищённом представлении», сохранить как .xlsx (макросы отбросятся), а потом работать с чистой версией. Но лучше получить чистый файл от отправителя.
