Еще один из способов для антивируса выявить возможную зловредную активность - это анализ Import Address Table (IAT). Это таблица, содержащая импортируемые функции из DLL-библиотек нашей программой.
Соответственно, если мы собираемся вызывать какие-то подозрительные функции из нашего кода, то они упадут в IAT.
Посмотреть список импортов можно так:
dumpbin /imports .\binary.exe
К способам обхода относятся:
1) Статическая линковка (по сути включаем нужные библиотеки в состав самой программы)
2) Динамическая загрузка необходимых функций в коде (указываем лишь dll)
3) Сократить число импортируемых функций через отключение Run-Time библиотек (MSCRT) - уменьшит энтропию файлов. Если кратко - энтропия характеризует файл на предмет шифрования и упаковщика. Вредоносы обладают повышенной энтропией, а потому если энтропия файла выше определенной границы, то можно сказать, что файл с большой долей вероятности - вредонос.
4) API Hashing для скрытия названий функций
5) Подделка IAT. Нужна на тот случай, чтобы антивирус не среагировал на пустой IAT. Поэтому мы грузим функции и заставляем их выполнять пустые действия.
Ссылки:
- [2023] Статья с примерами реализации: https://xakep.ru/2023/09/05/hiding-iat/
- [2023] Api Hashing https://xakep.ru/2023/10/06/api-hashing/
- [2024] Чуть больше способов скрытия: https://www.rotta.rocks/offensive-tool-development/bypassing-av/hiding-and-obfuscating-iat
- [2024] И там же про camouflaging https://www.rotta.rocks/offensive-tool-development/anti-analysis-techniques/hiding-camouflaging-iat#camouflaging-iat
- [2019] Про энтропию файлов : https://practicalsecurityanalytics.com/file-entropy/