T1564.007: Сокрытие в скомпилированном VBA-коде

Злоумышленники могут скрыть полезную нагрузку в формате Visual Basic for Applications (VBA), встроенную в документы Microsoft Office, подменив исходный код на языке VBA безопасными на вид данными.

Документы Microsoft Office со встроенным содержимым в формате VBA хранят исходный код внутри потоков модулей. Каждый поток модулей содержит раздел PerformanceCache, в котором хранится отдельная скомпилированная версия исходного кода на VBA, называемая пи-кодом (p-code). Этот пи-код выполняется в том случае, если версия Microsoft Office, указанная в потоке _VBA_PROJECT (который содержит зависимое от версии описание проекта VBA), соответствует версии хост-приложения Microsoft Office.

Злоумышленник может замаскировать вредоносный код на VBA, перезаписав его исходный код нулями, безопасным кодом или случайными байтами, не затронув при этом ранее скомпилированный вредоносный пи-код. Таким образом можно обойти средства, сканирующие документы на наличие вредоносного кода на VBA, поскольку нежелательный код скрыт в скомпилированном пи-коде. Если исходный код на VBA удален, некоторые средства защиты могут даже не обнаружить наличие макросов. Если версии потока _VBA_PROJECT и хост-приложения Microsoft Office совпадут, пи-код будет выполнен. В противном случае безопасный исходный код VBA будет распакован и перекомпилирован в пи-код — таким образом вредоносный пи-код будет перезаписан, что потенциально позволит обойти динамический анализ кода.

Какие продукты Positive Technologies покрывают технику

Описание методов обнаружения техники пока недоступно

Способы обнаружения

IDDS0012Источник и компонент данныхСценарий: Выполнение сценарияОписание

Отслеживайте различия между исходным кодом VBA и p-кодом. Код VBA можно извлечь из p-кода до его выполнения с помощью дизассемблера pcodedmp и аналогичных инструментов. Дизассемблер pcodedmp используется в составе инструментария oletools для обнаружения техники сокрытия в скомпилированном VBA-коде путем сопоставления ключевых слов из исходного кода VBA с p-кодом.

IDDS0022Источник и компонент данныхФайл: Метаданные файлаОписание

Если документ будет открыт через графический интерфейс (GUI), вредоносный p-код будет декомпилирован и отображен. Но если в поток PROJECT, в котором указаны свойства проекта, были внесены определенные изменения, декомпилированный код VBA не будет отображаться. Например, добавление имени модуля, не заданного в потоке PROJECT, затруднит попытки чтения исходного кода VBA с помощью графического интерфейса пользователя.

Меры противодействия

IDM1042НазваниеОтключение или удаление компонента или программыОписание

Отключите или ограничьте доступ к ненужным компонентам VB.