Как работает антивирус: API Hooking и системные вызовы
• Мы уже упоминали API Hooking, теперь разберемся, что именно перехватывает EDR и зачем ему это нужно.
• Обычная программа на Windows взаимодействует с операционной системой через Win32 API. Например, для получения доступа к процессу она может вызвать
OpenProcess из kernel32.dll.• Упрощенная цепочка выглядит так:
OpenProcess -> NtOpenProcess -> syscall -> ядро Windows• Высокоуровневая функция проверяет и преобразует аргументы, после чего управление может перейти к функции Native API из
ntdll.dll. Та формирует системный вызов, который передает выполнение в ядро.• EDR может разместить hook в начале интересующей функции. Когда программа обращается к ней, управление сначала получает компонент защиты.
• Благодаря этому можно изучить переданные аргументы, определить вызывающий процесс и понять контекст операции. После проверки управление возвращается настоящей функции.
• Особенно интересны операции с памятью, процессами и потоками: по отдельности они могут быть легитимными, но их определенная последовательность характерна для инъекции кода или выполнения нагрузки в памяти.
• Важно понимать, что API Hooking — не единственный источник данных. EDR также может использовать драйверы, системные callbacks, файловые фильтры, анализ памяти и ETW.
• Поэтому обход user-mode hook не означает обход всей защиты. Программа может миновать одну точку наблюдения, но оставить события на другом уровне.
• API Hooking позволяет увидеть не только какую функцию вызвали, но и кто, откуда и с какими аргументами это сделал. Удачи!
#AV
• Поддержать автора монеткой: @v_meshke
