Детектор перехвата системных вызовов

Coder_CC

Member
Messages
24
Reaction score
9
Points
3
Что такое Syscall?

Syscall — это механизм, с помощью которого программы пользовательского пространства запрашивают службы из ядра операционной системы, такие как доступ к файлам, манипулирование процессами и сетевое взаимодействие. В Windows эти вызовы в основном реализованы в библиотеке ntdll.dll, которая действует как мост между функциями пользовательского режима и ядром.

Что такое заглушка Syscall?

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

Что такое хук?

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

Как работает хук в вызовах API EDR?

EDR часто вставляют хуки во внутренние функции, где системные вызовы создаются для мониторинга поведения запущенных программ. Эти хуки реализованы с использованием таких инструкций, как jmp или call, которые перенаправляют поток выполнения исходной функции в код мониторинга EDR. Это позволяет EDR проверять или изменять поведение вызова API до того, как он достигнет ядра.

Обнаружение хуков EDR

Мы можем определить, были ли перехвачены системные функции. Детектор проверяет функции в ntdll.dll и идентифицирует перенаправления, вызванные хуками. Следующий код C++ обнаруживает хуки в системных вызовах из ntdll.dll, проверяя, были ли функции изменены такими решениями, как EDR, анализируя их инструкции по перенаправлению.

Исходный код: https://github.com/CyberSecurityUP/SyscallHookDetector

Рисунок 1: «Код C++ детектора хуков, направленный на выявление изменений в системных вызовах, экспортируемых ntdll.dll».

Рисунок 2: «Выходные данные детектора хуков, показывающие несколько функций системных вызовов, проверенных как неизмененные в системе без EDR/AV».

Рисунок 3: «Использование детектора хуков с Bitdefender, настроенным для демонстрации, показывающее некоторые функции, которые были перехвачены».

Определение перехваченной функции позволяет использовать методы отцепления для обхода EDR/AV, используя как прямые, так и косвенные методы системных вызовов, в дополнение к таким дополнениям, как переназначение ntdll, эмуляция системных вызовов или извлечение заглушек системных вызовов ntdll, цепочка хуков, исправление отцепления и другие методы, полезные в этом контексте.


1749373299639.png


1749373305708.png


1749373310715.png


Дополнительные ресурсы:
https://www.ired.team/offensive-security...-functions
https://github.com/Helixo32/SimpleEDR
https://github.com/Mr-Un1k0d3r/EDRs
https://github.com/ZeroMemoryEx/Hooks_Hunter
https://github.com/helviojunior/hookchai.../main/enum
https://github.com/xalicex/Unhook-Import-Address-Table
https://docs.redteamleaders.com/offensiv...-ntdll.dll
 
Top