Анализ макросов Workbook_Open и AutoOpen на наличие вредоносного кода

Макросы, запускаемые автоматически при открытии документа, являются основным вектором доставки вредоносного ПО через офисные документы. В Microsoft Excel за автоматический запуск отвечает процедура Workbook_Open (в модуле ThisWorkbook), а в Microsoft Word — процедура AutoOpen (в модуле AutoMacros). Поскольку эти функции срабатывают до того, как пользователь успеет проанализировать содержимое файла, они используются злоумышленниками для скрытной загрузки полезной нагрузки, кражи данных или изменения системных настроек.

При проверке таких макросов ключевым критерием является не само наличие кода, а его намерение. Легитимный макрос настраивает интерфейс или обновляет данные, в то время как вредоносный — пытается выйти за пределы приложения (в систему или сеть).

Ключевые признаки вредоносной активности

Вредоносный код редко бывает очевидным. Чтобы избежать обнаружения простыми антивирусами, разработчики эксплойтов используют методы обфускации (запутывания) и вызывают системные компоненты через промежуточные объекты. При анализе следует искать следующие паттерны:

  • Обфускация строк: Использование функций Chr(), Asc() или конкатенации (склеивания) строк для скрытия команд. Например, вместо «powershell.exe» код может выглянить как Chr(112) & Chr(111) & Chr(119)…. Это позволяет обойти простые сигнатурные сканеры, ищущие запрещенные слова.
  • Вызов командной строки: Использование объектов WScript.Shell или Shell для запуска cmd.exe или powershell.exe. Это прямой признак попытки выполнить команды в операционной системе.
  • Сетевые запросы: Использование объектов MSXML2.XMLHTTP, WinHttp.WinHttpRequest или InternetTransfer для загрузки файлов из интернета или отправки украденных данных на удаленный сервер (C2-сервер).
  • Манипуляции с файловой системой: Использование FileSystemObject для создания, копирования или удаления файлов в системных папках (например, в AppData или Temp) для обеспечения закрепления (persistence) в системе.
  • Использование системных переменных окружения: Обращение к Environ(«USERPROFILE») или Environ(«TEMP») для определения путей, куда будет загружен вредоносный файл, чтобы избежать ошибок при работе на разных конфигурациях ОС.

Сравнение легитимного и подозрительного поведения

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

Метод / Объект Легитимное использование Признак угрозы
Shell / WScript.Shell Запуск встроенных утилит (например, калькулятора для теста). Запуск cmd.exe, powershell.exe или скачивание через certutil.exe.
XMLHTTP / WinHttp Обновление курсов валют или данных из API. Загрузка исполняемых файлов (.exe,.vbs) или отправка данных на неизвестный IP.
Chr() / Asc() Форматирование текста или работа с кодировками. Сборка длинных строк (команд) по частям для скрытия текста.
FileSystemObject Создание логов или экспорт данных в текстовый файл. Запись файлов в папки автозагрузки или системные директории.

Алгоритм безопасной проверки макроса

Никогда не открывайте подозрительные файлы в основной рабочей среде. Для анализа необходимо подготовить изолированную среду (песочницу или виртуальную машину без доступа к локальной сети и общим папкам).

  1. Изоляция среды: Используйте виртуальную машину (VirtualBox, VMware) с настроенным сетевым адаптером в режиме «Host-only» или полностью отключенным интернетом.
  2. Отключение автоматического запуска: Перед открытием файла в Excel/Word убедитесь, что в настройках безопасности (Trust Center) установлен режим «Disable all macros without notification». Это предотвратит выполнение кода сразу после открытия файла.
  3. Доступ к редактору VBA: Откройте файл и перейдите в редактор Visual Basic (клавиши Alt + F11).
  4. Поиск триггеров: В окне «Project Explorer» найдите объект ThisWorkbook (для Excel) или соответствующие модули (для Word). Проверьте наличие процедур Workbook_Open или AutoOpen.
  5. Статический анализ кода:
    • Просмотрите содержимое процедур. Если код кажется нечитаемым (длинные строки из цифр или случайный набор символов), это признак обфускации.
    • Проследите цепочку вызовов: если Workbook_Open вызывает функцию с непонятным названием, перейдите к ней. Часто вредоносный код разбит на множество мелких, маскирующихся под стандартные функции.
    • Динамический анализ (опционально): Если статический анализ не дал результатов, файл можно запустить в специализированной песочнице (например, Any.Run или Cuckoo Sandbox), которая фиксирует все системные вызовы, сетевую активность и изменения в реестре.

    Типичные ошибки при анализе

    При проверке макросов пользователи и специалисты часто допускают ошибки, которые приводят к заражению системы:

    • Доверие к «социальному инжинирингу»: Ошибка полагаться на текст внутри документа (например, «Нажмите ‘Включить содержимое’, чтобы увидеть отчет»). Код может быть запущен не только через макрос, но и через скрытые формы или кнопки.
    • Игнорирование модулей: Аналитики часто проверяют только ThisWorkbook, забывая, что вредоносный код может быть спрятан в стандартных модулях (Module1, Module2) и вызываться из основного триггера.
    • lack of isolation: Запуск подозрительного файла в системе с доступом к корпоративной сети. Даже если макрос не запускает shell, он может попытаться использовать уязвимости самого Office для повышения привилегий.

    Если в ходе анализа вы обнаружили использование Shell с параметрами загрузки или подозрительные строки, преобразованные через Chr(), файл следует считать вредоносным. Его необходимо удалить, а в корпоративной сети — проверить логи сетевого оборудования на предмет исходящих запросов от подозрительных хостов.

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

    PEFile.ru