T1027.007: Динамическое разрешение API

Злоумышленники могут обфусцировать API-функции, вызываемые вредоносным ПО, и выполнять их динамическое разрешение, чтобы скрыть вредоносную функциональность и помешать анализу защитными решениями. Вредоносное ПО часто использует функции нативного API операционной системы для выполнения различных действий с процессами, файлами и другими системными объектами.

API-функции, вызываемые вредоносным ПО, могут оставлять в файлах полезной нагрузки статические артефакты, например строки. Специалисты по защите могут также выяснить, какие функции могут выполняться в бинарном файле с помощью таблицы адресов импорта (IAT) или других структур, которые помогают динамически компоновать вызывающий код с общими модулями, предоставляющими функции.

Чтобы избежать статического или иного анализа защитными системами, злоумышленники могут использовать динамическое разрешение API для скрытия характеристик и функциональных возможностей своего вредоносного ПО. Подобно упаковке ПО, динамическое разрешение API может изменять сигнатуры файлов и обфусцировать вызовы вредоносных API-функций до их разрешения и вызова непосредственно во время выполнения кода.

Для обфускации вызовов API-функций во вредоносных программах могут использоваться различные методы. Например, вместо символьных строк во вредоносных программах обычно хранятся хеши имен функций. Вредоносная программа может использовать эти хеши (или другие идентификаторы) для ручного воспроизведения процесса компоновки и загрузки с помощью таких функций, как GetProcAddress() и LoadLibrary(). Эти хеши/идентификаторы также могут дополнительно обфусцироваться посредством шифрования или других манипуляций со строками (что требует использования различных видов деобфускации или декодирования файлов или данных во время выполнения).

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

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

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

IDDS0009Источник и компонент данныхПроцесс: Вызовы API ОСОписание

Отслеживайте и анализируйте вызовы таких функций, как GetProcAddress() и LoadLibrary(), которые связаны с динамической загрузкой функций API.

IDDS0011Источник и компонент данныхМодуль: Загрузка модуляОписание

Отслеживайте загрузку модулей, особенно тех, которые явно не указаны в таблицах импорта, — это может быть признаком обфускации вызовов функций API. В ходе динамического анализа вредоносного ПО можно выявить признаки обфускации функций, например чтение памяти, соответствующей адресам функций API внутри модулей.

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

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