Перехват доступа к процессу с помощью драйвера Windows MiniFilter

Я разрабатываю приложение безопасности, которое должно отслеживать активность любого процесса.

Мне удалось перехватить доступ к файлам, установив драйвер MiniFilter благодаря образец MiniFilter, предоставленный Microsoft на GitHub.

Однако я не нашел документации о том, как перехватить создание / завершение процесса с помощью минифильтра.

Я хотел бы перехватить создание нового процесса любым родительским процессом (который мог бы использовать такие функции, как CreateProcess, ShellExecute и т. Д.).

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

На данный момент я настраиваю функцию обратного вызова в моем драйвере минифильтра, которая успешно перехватывает операции ввода-вывода файлов, как указано в примере Microsoft:

FLT_POSTOP_CALLBACK_STATUS ScannerPostCreate (
    _Inout_ PFLT_CALLBACK_DATA CallbackData,
    _In_ PCFLT_RELATED_OBJECTS FltObjects,
    _In_opt_ PVOID CompletionContext,
    _In_ FLT_POST_OPERATION_FLAGS Flags
    )

Мой вопрос: могу ли я использовать ту же функцию обратного вызова для перехвата доступа к процессу? Или мне нужно настроить другую функцию обратного вызова или использовать совершенно другой метод?


person Flavio    schedule 16.10.2019    source источник


Ответы (1)


Поскольку минифильтр является модулем ядра, вы можете использовать любую процедуру, экспортированную ядром / HAL или другими модулями ядра. Например, PsSetCreateProcessNotifyRoutine.

person Eugene Muzychenko    schedule 19.10.2019