Руткит может вмешаться в работу программы когда угодно - он может, например, перехватить результат, возвращаемый функцией ZwQuerySystemInformation, и, модифицировав его (удалив из списка процессов нужные ему процессы), передать измененный список функции NtQuerySystemInformation. Он может также вмешаться в работу функции NtQuerySystemInformation - это будет проще - чтобы она вывела такой результат, какой ему нужно. Но в этом случае больше риск обнаружения руткита. И вообще, чем ниже уровень, на котором работает руткит, тем меньше вероятность его обнаружения. Наконец, руткит может работать на нулевом кольце защиты и модифицировать саму структуру PsActiveProcessList. В этом случае его практически невозможно обнаружить, пока он находится в памяти.
Для вывода списка процессов код программы (tasklist или Диспетчера задач) должен вызвать системную API-функцию, которая выводит список процессов системы (например, та же функция NtQuerySystemInformation из библиотеки ntdll.dll). Функция NtQuerySystemInformation, в свою очередь, вызывает функцию ядра ZwQuerySystemInformation - это функция уровня ядра, использующая прерывание Windows (int 0x2E). Функция уровня ядра напрямую обращается к памяти ядра и получает из структуры PsActiveProcessList список выполняемых процессов, который впоследствии передается "наверх" (на пользовательский уровень) и программа, вызвавшая функцию NtQuerySystemInformation, выводит его на экран.
Предположим, системный администратор вводит команду tasklist, выводящую список процессов. Да, согласен, в наше время не каждый администратор подозревает о наличие такой команды. А если и подозревает, то он скорее нажмет Ctrl + Alt + Del, чтобы вызвать диспетчер задач Windows. Хотя, принципиальной разницы нет - в любом случае он хочет увидеть список выполняемых в данный момент процессов. На рисунке 5.1 изображена утилита tasklist, а на рисунке 5.2 - Диспетчер задач.
Мы уже знаем, что любой "приличный" руткит должен уметь скрывать процессы, файлы и разделы реестра. Как он это делает? Рассмотрим сокрытие процессов - сокрытие файлов и реестра выполняется аналогично.
5.2. Руткит Hacker Defender. Принципы работы
Книга Д. Колисниченко Rootkits под Windows. Теория и практика программирования ЂЂЂшапок-невидимокЂЂЂ, позволяющих скрывать от системы данные, процессы, сетевые соединения.
Англо-русский словарь компьютерных терминов (Д. Колисниченко)
Денис Колисниченко. Документация по Linux и PHP. Linux-сервер своими руками. Denix
Комментариев нет:
Отправить комментарий