Перед открытием файла из ненадёжного источника разумно убедиться, что внутри нет VBA-кода. Макросы — самый распространённый способ доставки вредоносной нагрузки через документы Office: внешне безобидный счёт или резюме может при открытии запускать скрипты, скачивать программы или шифровать файлы. Хорошая новость в том, что базовую проверку можно выполнить вручную за несколько минут, не устанавливая сторонний софт.
Главный принцип такой: VBA-код физически существует только в файлах определённых форматов. Если документ сохранён в современном формате без поддержки макросов, кода в нём быть не может в принципе. Поэтому проверка начинается не с открытия файла, а с анализа его расширения и структуры.
Шаг 1. Посмотрите на расширение файла
Начиная с Office 2007 Microsoft разделила форматы на два типа: обычные документы и документы с поддержкой макросов. Это ключевая точка проверки.
| Расширение | Может содержать VBA-код? | Комментарий |
|---|---|---|
| .docx, .xlsx, .pptx | Нет | Современный формат без макросов. При попытке сохранить код Office потребует сменить формат. |
| .docm, .xlsm, .pptm | Да | Формат «с поддержкой макросов». Наличие буквы m означает, что код возможен, но не гарантирует его присутствие. |
| .doc, .xls, .ppt | Да | Старые бинарные форматы до Office 2007. Всегда могут содержать макросы. |
| .dotm, .xltm, .potm | Да | Шаблоны с поддержкой макросов. |
| .rtf | Нет (VBA) | Не хранит VBA-модули, но исторически использовался для эксплуатации уязвимостей, поэтому тоже требует осторожности. |
Если файл пришёл как .docx или .xlsx, но вы подозреваете подмену, проверьте настоящее расширение: во включённом по умолчанию режиме Windows скрывает известные расширения. Откройте проводник, перейдите в «Вид» и включите флажок «Расширения имён файлов», либо щёлкните по файлу правой кнопкой и посмотрите свойства. Злоумышленники нередко называют файл «отчёт.docx.exe» — при скрытых расширениях видна только первая часть.
Ещё один признак подмены: настоящий .docx — это ZIP-архив. Если переименовать копию такого файла в .zip и открыть её, вы увидите папки вроде word, xlsx или структуру с файлом [Content_Types].xml. Если вместо этого файл открывается как исполняемая программа или архив выглядит иначе — это не документ Office.
Шаг 2. Проверьте наличие модулей через редактор VBA
Если расширение допускает макросы (.docm, .xlsm, .doc, .xls), следующий шаг — заглянуть внутрь. Для этого:
- Скопируйте файл в отдельную папку и работайте только с копией.
- Отключите сетевое подключение, если файл вызывает серьёзные опасения, — это не замена антивирусу, но снижает риски.
- Откройте приложение Office (Word или Excel) пустым, без документа.
- Перейдите в «Файл» → «Параметры» → «Центр управления безопасностью» → «Параметры центра управления безопасностью» → «Параметры макросов» и убедитесь, что выбран режим отключения макросов с уведомлением. В этом режиме код не запустится сам.
- Откройте проверяемый файл. Если появится жёлтая панель «ВНИМАНИЕ! Часть содержимого документов отключена» с кнопкой «Включить содержимое» — не нажимайте её. Само появление панели уже означает, что в файле есть макросы.
- Нажмите Alt+F11, чтобы открыть редактор VBA.
- В дереве проекта слева раскройте строки вида «VBAProject (имя файла)» → «Microsoft Excel Objects» / «Modules». Каждая строка Modules — отдельный модуль с кодом. Двойной щелчок покажет текст.
Обратите внимание на два места, которые часто упускают:
- Элементы ThisWorkbook, Лист1, Document и подобные. Код может находиться не в отдельных модулях, а прямо в объектах книги или документа — например, в обработчике события открытия. Обязательно просмотрите их содержимое.
- Авто-запуск. Процедуры с именами AutoOpen, AutoClose, Workbook_Open, Document_Open, Document_New выполняются автоматически при определённых действиях с файлом. Их наличие — главный маркер того, зачем вообще в документе код.
Если проект защищён паролем и содержимое недоступно для просмотра, это само по себе тревожный сигнал: легитимные внутренние документы редко скрывают исходный код от получателя.
Шаг 3. Осмотрите структуру файла как архива
Способ подходит для современных форматов (.docm, .xlsm, .pptm) и не требует открывать документ в Office. Сделайте копию файла, переименуйте расширение в .zip и распакуйте любым архиватором или штатными средствами системы.
Внутри ищите путь word/vbaProject.bin, xls/vbaProject.bin или ppt/vbaProject.bin. Наличие этого файла однозначно говорит о том, что VBA-проект в документе есть. Если такого пути нет — макросов в файле нет, и дальше можно работать спокойно.
Сам vbaProject.bin — бинарный контейнер, и прочитать код в блокноте напрямую не получится, но иногда в нём видны фрагменты строк: имена функций, вызовы Shell, URL-адреса, упоминания PowerShell или cmd. Это косвенные признаки того, что код делает что-то помимо оформления документа. Полный разбор такого контейнера — задача специализированных инструментов анализа, а не ручной проверки.
Шаг 4. Проверьте другие способы запуска кода
VBA — не единственный механизм автоматизации в Office. Документ может быть «заряжен» и без единого макроса:
- DDE-поля — старый механизм обмена данными, позволяющий выполнить команду при открытии. Word при этом показывает необычное предупреждение о запуске приложения; такое сообщение — повод закрыть документ.
- Внешние ссылки и подключения в Excel («Данные» → «Запросы и подключения») могут тянуть данные из посторонних источников.
- OLE-объекты — внедрённые файлы (например, ярлык или исполняемый файл внутри документа). Проверьте документ на предмет странных внедрённых объектов: в Word они отображаются как значки в тексте.
- Формы и элементы ActiveX, у которых привязан собственный код.
Полностью исключить все эти механизмы глазами сложно, поэтому ручная проверка — это фильтр первой линии, а не гарантия безопасности.
Признаки подозрительного документа
- Расширение допускает макросы, хотя содержимое (счёт, письмо, резюме) этого не требует.
- При открытии появляется предложение включить содержимое или макросы.
- Имя файла содержит двойное расширение или много пробелов перед настоящим расширением.
- Отправитель незнаком, а тема письма создаёт срочность: «оплата», «штраф», «документ к подписанию сегодня».
- Внутри vbaProject.bin заметны упоминания PowerShell, cmd, WScript, загрузки по HTTP.
- VBA-проект запаролен без объяснимой причины.
- Документ просит разрешить изменение системных параметров или запуск внешней программы.
Чего ручная проверка не даёт
Ручной осмотр отвечает на вопрос «есть ли в файле код и выглядит ли он подозрительно», но не заменяет полноценную защиту. Ограничения стоит понимать заранее:
- Код может быть обфусцирован так, что даже прочитанный текст ничего не скажет неспециалисту.
- Вредоносная логика может срабатывать не сразу, а по условию — дате, имени пользователя, количеству открытий.
- Эксплойты уязвимостей работают без макросов вовсе, и ни одна проверка расширений их не выявит.
- Человек легко пропустит деталь, которую ловит актуальный антивирус с обновлёнными базами.
Поэтому разумная схема для файлов из сомнительных источников выглядит так: сначала ручной осмотр расширения и структуры, затем проверка актуальным антивирусом, а открытие — только в изолированной среде (виртуальная машина, отдельный компьютер без доступа к рабочей сети), если цена ошибки высока.
Что делать после проверки
- Если макросов нет (нет vbaProject.bin, чистый редактор VBA) — работайте с документом как обычно, но помните про остальные механизмы вроде OLE-объектов.
- Если макросы есть, а отправитель не объяснил зачем — уточните у источника происхождение кода. Легитимный автор обычно легко подтверждает назначение макросов.
- Если макросы нужны для работы, но источник надёжный лишь частично, попросите версию без кода: почти любой отчёт можно пересохранить в .xlsx/.docx, потеряв только автоматизацию.
- Если найдены признаки вредоносного кода — не открывайте файл на рабочих машинах, сообщите в ИТ-отдел или службу безопасности организации и удалите файл вместе с письмом.
Главный вывод: проверка начинается с расширения, продолжается взглядом внутрь архива или редактора VBA и заканчивается здравой оценкой того, зачем документу вообще нужен код. Файл .xlsx без vbaProject.bin безопасен в части макросов по определению, а любой .docm из неизвестного источника заслуживает проверки до первого двойного щелчка.
Материал носит информационный характер и описывает общие приёмы проверки документов. Он не заменяет работу средств защиты информации и специалистов по информационной безопасности: при работе с потенциально заражёнными файлами в корпоративной среде обращайтесь в ИТ-отдел вашей организации.
