Как работает антивирус: Import Address Table и API Hashing
• Программы редко реализуют всю функциональность самостоятельно. Для работы с файлами, памятью, процессами и сетью они вызывают функции из системных DLL.
• Список импортируемых библиотек и функций хранится в структуре PE-файла, которая называется Import Address Table (сокращенно IAT).
• Например, наличие функций для выделения исполняемой памяти, записи в чужой процесс и создания потока не доказывает вредоносность файла, но их сочетание может заинтересовать антивирус.
• Посмотреть импортируемые функции можно с помощью Visual Studio:
dumpbin /imports .\binary.exe
• Чтобы не оставлять названия функций в IAT, программа может загружать библиотеки и получать адреса необходимых функций динамически во время выполнения.
• Но даже в таком случае внутри файла могут остаться строки вроде
VirtualAlloc, WriteProcessMemory или CreateRemoteThread. Поэтому применяется API Hashing.• При API Hashing программа хранит не название функции, а вычисленный из него хеш. Во время запуска она перебирает экспортируемые функции нужной DLL, вычисляет их хеши и ищет совпадение.
• Статическому анализатору становится сложнее сразу определить, какие API будут вызваны. Однако это не делает программу невидимой.
• Средства защиты могут обратить внимание на:
• Почти пустую или искусственно заполненную IAT
• Перебор Export Address Table
• Скрытые названия DLL и функций
• Последовательность реально выполненных системных операций
• Более того, API Hashing широко встречается во вредоносном ПО и сам может использоваться как эвристический признак. MITRE относит этот подход к Dynamic API Resolution.
• IAT показывает намерения программы до запуска, а API Hashing пытается эти намерения скрыть. Но после вызова функции защита снова видит действие. Удачи!
#AV
• Поддержать автора монеткой: @v_meshke
