Вредоносные документы остаются одним из самых надёжных векторов начального доступа в корпоративные сети и на личные устройства. Форматы, которые пользователи открывают ежедневно — .docx, .xlsx, .pdf, .rtf — имеют сложную внутреннюю структуру, поддерживают активное содержимое (макросы, скрипты, встроенные объекты) и успешно проходят через почтовые шлюзы и антивирусы, если атакующий грамотно их подготовил. Понимание того, как именно злоумышленники маскируют полезную нагрузку, позволяет не полагаться только на сигнатуры защитных средств, а распознавать подозрительные признаки уже на этапе получения файла.
- Почему документы — удобный контейнер для атак
- Основные техники маскировки полезной нагрузки
- 1. Обфускация макросов и скриптов
- 2. Эксплойты «нулевого дня» и известных CVE в парсерах
- 3. Полиглот-файлы (Polyglots)
- 4. Стеганография и скрытые данные в контейнере OOXML
- 5. OLE-объекты и встроенные пакеты (Embedded OLE Packages)
- 6. DDE (Dynamic Data Exchange) и формулы
- 7. Внешние ссылки и «Remote Template Injection»
- Социальная инженерия как неотъемлемая часть маскировки
- Практические признаки подозрительного документа
- Ограничения защиты и почему сигнатуры не гарантируют безопасность
- Настройка окружения для снижения риска (чек-лист для админа / продвинутого пользователя)
- Что делать, если подозрительный документ уже открыт
- Частые ошибки при оценке вложений
- Резюме: алгоритм действий при получении неожиданного документа
Почему документы — удобный контейнер для атак
Любой современный формат документа — это не просто текст с форматированием, а контейнер, способный хранить исполняемый код, ссылки на внешние ресурсы, встроенные объекты (OLE) и метаданные. Microsoft Office (OOXML), PDF, RTF и ODF позволяют встраивать:
- макросы на VBA / JavaScript / Python (в LibreOffice);
- ActiveX-объекты и COM-компоненты;
- внешние ссылки (DDE, OLE, гиперссылки, связанные изображения);
- эксплойты для уязвимостей парсеров формата (CVE в Equation Editor, Font Parsing, PDF-рендерерах);
- скрытые потоки данных (Alternate Data Streams в ZIP-контейнере OOXML);
- полиглотные структуры — файлы, валидные сразу для нескольких парсеров.
При этом пользователь привык доверять документам: они выглядят как рабочие материалы, счета, договоры, резюме. Социальная инженерия делает остальное — заставляет включить макросы, нажать «Включить редактирование», открыть вложение из «важного» письма.
Основные техники маскировки полезной нагрузки
1. Обфускация макросов и скриптов
Классический вектор — VBA-макрос в .docm, .xlsm, .pptm. Чтобы обойти статический анализ антивирусов и YARA-правила, атакующие применяют:
- Строковую обфускацию: разбивку строк на части, конкатенацию через Chr(), ChrW(), Base64, XOR, ROT13, пользовательские функции-декодеры.
- Мёртвый код и ловушки для анализатора: бессмысленные циклы, условия, которые никогда не выполняются, вызов несуществующих API — чтобы запутать эмулятор.
- Динамическое разрешение API: вместо прямого вызова CreateObject(«WScript.Shell») — получение объектов через GetObject, Application.GetObject, реестр, WMI.
- Хранение кода вне модулей VBA: в свойствах документа (CustomDocumentProperties), в скрытых листах Excel, в текстовых полях формы, в комментариях, в XML-части vbaProject.bin в виде сжатых/зашифрованных блобов.
- Использование AutoOpen, Document_Open, Workbook_Open, AutoClose и менее известных триггеров: события форм, Window_Activate, SheetChange.
Пример признака: в редакторе VBA (Alt+F11) модули пусты или содержат лишь обфускарованные строки, а реальный код загружается из свойств документа при открытии.
2. Эксплойты «нулевого дня» и известных CVE в парсерах
Файл может не содержать макросов вообще. Уязвимость срабатывает при парсинге самого формата:
- Equation Editor (CVE-2017-11882, CVE-2018-0802): встроенный объект EQNEDT32.EXE парсит вредоносный MTEF-блок в OLE-объекте.
- Уязвимости шрифтов (CVE-2019-0938, CVE-2020-0938): специально созданный встроенный шрифт (Embedded OpenType) вызывает переполнение в atmfd.dll / fontsub.dll.
- Парсеры RTF (CVE-2017-0199, CVE-2017-8759): манипуляция объектами objdata, objupdate, \objsect для загрузки внешнего HTA/HTML через Moniker.
- PDF — уязвимости в JavaScript-движке, парсере JBIG2, JPEG2000, шрифтах: CVE-2021-21017, CVE-2023-26369 и др.
Маскировка здесь — в структуре файла: вредоносный объект выглядит как легальный встроенный компонент (формула, шрифт, картинка), но содержит специфические байтовые последовательности, запускающие код в контексте уязвимого парсера.
3. Полиглот-файлы (Polyglots)
Файл, который одновременно валиден для нескольких парсеров. Классический пример — HTA/HTML + DOCX или PDF + ZIP.
- Файл имеет расширение .doc или .docx, но начинается с корректного HTML/HTA-заголовка (,
