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

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

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

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

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

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

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

Monitoring module loads, especially those not explicitly included in import tables, may highlight obfuscated API function calls. Dynamic malware analysis may also expose signs of function obfuscation, such as memory reads that correspond to addresses of API function code within modules.

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

Monitor and analyze calls to functions such as GetProcAddress() and LoadLibrary() that are associated with dynamically loading API functions.

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

Depending on the method used to obfuscate API function calls, a file-based signature may be capable of detecting dynamical resolution.