Меню
Назад » »

Перехват функций в режиме ядра (kernel mode)

Перехват функций в режиме ядра (kernel mode)

Чтобы понять суть метода, будет полезным рассмотреть принципы взаимодействия библиотек user‑mode и kernel‑mode.

Взаимодействие с ядром осуществляется через ntdll.dll, большинство функций которой являются посредниками при обращении к ядру через прерывание INT 2Eh. Конечное обращение к функциям ядра основано на структуре KeServiceDescrip‑torTable (или сокращенно SDT), расположенной в ntoskrnl.exe. SDT, – это таблица, содержащая адреса точек входа сервисов ядра NT.

Упрощенно можно сказать, что для перехвата функций необходимо написать драйвер, который произведет модификацию таблицы SDT. Перед модификацией драйверу необходимо сохранить адреса перехватываемых функций и записать в таблицу SDT адреса своих обработчиков. Следует отметить, что такой перехват может быть реализован не только в руткитах. Так, существует достаточное количество полезных программ "мирного" назначения, перехватывающих функции при помощи правки SDT (RegMon от SysInternals или программа Process Guard).

Описанный выше метод перехвата можно считать наиболее простым. Существуют и другие подобные способы перехвата, к примеру создание драйвера‑фильтра. Драйвер‑фильтр может с успехом как решать задачи мониторинга (например, утилита FileMon), так и использоваться для активного внедрения в работу системы.

В частности, драйвер‑фильтр может применяться для маскировки файлов и папок на диске. Принцип работы такого драйвера основан на манипуляциях с пакетами запроса ввода‑вывода (IRP).
Никто не решился оставить свой комментарий.
Будь-те первым, поделитесь мнением с остальными.
avatar