Враг неведом Зайцев Олег Спецвыпуск: Хакер, номер #070, стр. 070-034-3 * Метод сигнатурного внедрения. Данный метод основан на том, что многие системные библиотеки почти не меняются от версии к версии. Следовательно, разработчик руткита может выбрать любое подходящее место для внедрения своего кода и затем динамически искать его при помощи сигнатур. Данный метод позволяет не только внедрять код в любую точку функции, но и производить вмешательство в работу функций без их явного перехвата путем патча машинного кода. [kernel-Mode руткиты] Kernel-Mode руткиты менее распространены (примерно на 5-10 руткитов UserMode приходится один KernelMode), однако их возможности гораздо шире. Главный плюс подобного руткита – глобальное воздействие на систему. По принципу действия, их можно классифицировать на несколько категорий: * На основе правки адресов в KiST. Это самый распространенный метод перехвата, сводящийся к поиску таблицы KiST в памяти и правке адреса одной или нескольких функций. KiST размещена в SDT, адрес которой экспортируется ядром, так что это почти документированный метод перехвата. Описание методики перехвата с примерами можно найти в книге Свена Шрайбера «Недокументированные возможности Windows 2000». * Модификация машинного кода перехватываемых функций. Метод полностью аналогичен модификации машинного кода в UserMode. * Перехват вектора INT 2E и sysenter. Подобный перехват позволяет разом взять вызовы всех функций под контроль, что бывает удобно для глобального мониторинга системы. * Драйвер-фильтр. Основан на фильтрации IRP и применяется чаще всего для маскировки файлов на диске. В остальном (кроме метода перехвата функции и работы в Ring0) функционирование KernelMode руткита принципиально не отличается от UserMode – все тот же перехват функции для мониторинга ее работы и модификации входных параметров или результатов работы функции. [DKOM, или как замаскироваться без перехватов] DKOM-руткиты (DKOM расшифровывается как Direct Kernel Object Manipulation) основаны на том, что вместо перехвата функций они манипулируют объектами ядра в памяти. Это позволяет, в частности, достаточно эффективно маскировать запущенные процессы и загруженные библиотеки. Наиболее популярной и известной реализацией DKOM-технологии является FU-руткит и его многочисленные клоны. Рассмотрим подробнее одну из наиболее простых задач – маскировку процесса. Маскировка процесса основана на том, что для каждого из запущенных процессов в системе существует структура EPROCESS. В этой структуре имеется два указателя — Flink и BLink, — которые указывают на последующую и предыдущую структуры, образуя двухсвязный список. Структура EPROCESS зависит от версии Windows, поэтому для корректной работы с ней необходимо либо заранее знать смещение интересущих нас полей, либо определять их каким-либо эвристическим методом. Мы пойдем простым путем: определим вмещения при помощи отладчика WinDBG. |