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

Игра в прятки

Дмитрий Коваленко aka Ingrem

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


; вычислим смещение для jmp

mov ebx, offset api_hook_proc

sub ebx, eax

sub ebx, 5

; пропатчим API

mov byte ptr [eax], 0e9h

mov dword ptr [eax+1], ebx

Защита восстанавливается все той же VirtualProtect. Теперь при вызове процессом NtQuerySystemInformation управление получает наш обработчик. Обработчик сперва вызывает оригинальную процедуру (в любом случае это нужно). При этом он не восстанавливает ее начало, а просто делает call на переходник. Потом обработчик проверяет аргумент SysInfoClass. Если он не равен 5, то NtQuerySystemInformation была вызвана не для того, чтобы получить список процессов. В этом случае управление просто отдается вызывающему процессу. Если же SysInfoClass имеет значение 5, обработчик проходится по цепочке структур SYSTEM_PROCESS_INFORMATION, которые после возврата из NtQuerySystemInformation лежат по адресу SysInformation.

В каждом элементе цепочки обработчик проверяет имя процесса. Если оно совпадает с installer.exe, предыдущий элемент корректируется. Цель коррективы - увеличить поле смещения (первое в записи) на следующий элемент цепочки, чтобы оно указывало на структуру, идущую за той, которая содержит информацию о нашем процессе. Таким образом, структура, содержащая информацию о нашем процессе, аккуратно исключается обработчиком из цепочки.

Библиотека также обрабатывает DLL_PROCESS_DETACH и при отгрузке из адресного пространства процесса снимает хук. Большое преимущество техники умного сплайсинга в том, что она в отличие от традиционного сплайсинга надежна. И внедрение DLL через глобальный хук не требует прав администратора, так что перехватить парочку-другую API троян спокойно может и под гостем.

Напоследок скажу, что умный сплайсинг можно усовершенствовать, если прикрутить к перехватчику API небольшой дизассемблер.

В статье "Система перехвата функций API платформы Win32" (на www.wasm.ru) отражены проблемы, с которыми троян сталкивается при попытке перехватить системные функции.

О том, какие Native API стоит перехватывать, рассказано в статье "Как стать невидимым в Windows NT", русский перевод которой есть на www.wasm.ru.

Перехватчик с исходниками на MASM есть на диске к журналу.

Подробнее с полями SYSTEM_PROCESS_INFORMATION можно ознакомиться в статьях по недокументированным функциям NT (Гугл в помощь!).

Много полезной информации ты найдешь на www.wasm.ru и www.sysinternals.com.

Назад на стр. 048-046-4  Содержание