Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #60, НОЯБРЬ 2005 г.

Повесть о разведчиках

Зайцев Олег (z-oleg.com/secur)

Спецвыпуск: Хакер, номер #060, стр. 060-054-5


RootKit можно разделить на две большие категории: UserMode и KernelMode.

Самым известным представителем UserMode является HackerDefender, выполненный в виде самостоятельного продукта, который может конфигурироваться пользователем при помощи ini-файла. Принцип работы HackerDefender основан на перехвате ряда API-функций путем подмены первых пяти байт машинного кода функции на JMP, указывающей на его функцию-перехватчик. Данная методика не совсем корректна, так как для вызова перехваченной функции ему приходится восстанавливать ее машинный код, производить вызов и заново записывать в начало функции JMP. Тем не менее, метод вполне рабочий, исходники HackerDefender открыты, и это привело к появлению множества его "клонов".

Из KernelMode RootKit наиболее знаменит BackDoor.Haxdoor. Он устанавливает несколько драйверов, перехватывает ряд функций в KiST, что позволяет ему достаточно эффективно маскироваться от обнаружения пользователем.

Практика показывает, что разработчики вредоносных программ (вирусов, троянских программ, шпионского ПО) все чаще начинают использовать RootKit-технологии, что существенно затрудняет обнаружение и удаление созданных ими вредоносных программ. По статистике, AdWare/SpyWare чаще всего применяют методики перехвата функций в режиме пользователя.

Trojan-SPY

Как показывает их название, это шпионы в чистом виде. Приставка Trojan сигнализирует об их однозначной вредоносности. К этой категории принято относить наиболее опасные разновидности кейлоггеров, а также всевозможные троянские программы для шпионажа за пользователем. Самый типичный пример - TrojanSpy.Win32.Banker. Программы данного семейства нацелены на воровство номеров кредитных карт. Некоторые подобные звери применяют изощренные методы внедрения в системы и обходят многие Firewall'ы. Рассмотрим типовой пример такого "зверя" на примере Banker, который устанавливает драйвер iesprt.sys размером всего 16 Кб, однако вот результат:

1.1 Поиск перехватчиков API, работающих в UserMode

Функция ntdll.dll:LdrLoadDll (70) перехвачена, метод APICodeHijack.JmpTo

Функция wininet.dll:HttpSendRequestA (207) перехвачена, метод APICodeHijack.JmpTo

1.2 Поиск перехватчиков API, работающих в KernelMode

Функция ZwCreateProcess (2F) перехвачена (805B3543->gt; F9E57219), перехватчик C:\WINDOWS\system32\iesprt.sys

Функция ZwCreateProcessEx (30) перехвачена (805885D3->gt; F9E57280), перехватчик C:\WINDOWS\system32\iesprt.sys

Проверено функций: 284, перехвачено: 2, восстановлено: 0.

Логика работы "зверя" такова: драйвер перехватывает ZwCreateProcess, что позволяет ему отследить запуск процессов; в запускаемые процессы он внедряет свой перехватчик UserMode, перехватывая LdrLoadDll. Последнее позволяет ему отловить загрузку библиотек и в момент загрузки wininet.dll перехватить HttpSendRequestA (метод перехвата типовой - подмена первых пяти байт функции на JMP). Дальше все просто. Перехват этой функции предоставляет трояну контроль над работой приложения с интернетом (конечно, при условии что она работает через указанную функцию wininet.dll, но для Internet Explorer это справедливо).

Назад на стр. 060-054-4  Содержание  Вперед на стр. 060-054-6