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

детектор лжи

КРИС КАСПЕРСКИ АКА МЫЩЪХ

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


1 МОДИФИЦИРОВАТЬ NTDLL.DLL НА ДИСКЕ, УСТАНОВИВ В НАЧАЛО ФУНКЦИИ NTQUERYSYSTEMINFORMATION КОМАНДУ ПЕРЕХОДА НА СВОЙ ОБРАБОТЧИК (РАСПОЛОЖЕННЫЙ ГДЕ-НИБУДЬ В СВОБОДНОМ МЕСТЕ ВНУТРИ NTDLL.DLL), «ВЫЧИЩАЮЩИЙ» ИЗ ВЫДАВАЕМОЙ ЕЮ ИНФОРМАЦИИ ВСЯКОЕ УПОМИНАНИЕ О СЕБЕ. СПОСОБ ПРОСТОЙ КАК БАРАБАН, НО ГРЯЗНЫЙ И ЛЕГКО ОБНАРУЖИВАЕМЫЙ ПУТЕМ ДИЗАССЕМБЛИРОВАНИЯ NTDLL.DLL ИЛИ СРАВНЕНИЕМ ЕЕ С ОРИГИНАЛОМ. ТАК ЖЕ МАЛВАРИ ПРИДЕТСЯ ПРОТИВОСТОЯТЬ SFC И УСТАНОВКЕ SERVICEPACK'ОВ, НЕКОТОРЫЕ ИЗ КОТОРЫХ ОБНОВЛЯЮТ NTDLL.DLL.

2 МОДИФИЦИРОВАТЬ NTDLL.DLL!NTQUERYSYSTEMINFORMATION В ПАМЯТИ. ПОСКОЛЬКУ NT ПОДДЕРЖИВАЕТ МЕХАНИЗМ COPY-ON-WRITE, АВТОМАТИЧЕСКИ «РАСЩЕПЛЯЮЩИЙ» СТРАНИЦЫ ПАМЯТИ ПРИ ЗАПИСИ, МОДИФИКАЦИЯ NTDLL.DLL ПРИОБРЕТАЕТ ЛОКАЛЬНЫЙ ХАРАКТЕР, ОГРАНИЧЕННЫЙ КОНТЕКСТОМ ПРОЦЕССА-ПИСАТЕЛЯ. ТО ЕСТЬ, ЧТОБЫ ВОЗДЕЙСТВОВАТЬ НА «ДИСПЕТЧЕР ЗАДАЧ», В НЕГО ПРЕЖДЕ НЕОБХОДИМО ВНЕДРИТЬСЯ.

ВОТ ОДИН ИЗ ВОЗМОЖНЫХ СЦЕНАРИЕВ. МАЛВАРЬ СОЗДАЕТ СВОЮ DLL И ПРОПИСЫВАЕТ ЕЕ В СЛЕДУЮЩУЮ ВЕТКУ СИСТЕМНОГО РЕЕСТРА: HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINDOWS\APPINIT_DLLS. В РЕЗУЛЬТАТЕ ЧЕГО ЭТА DLL ПОСЛЕ БУДЕТ ОТОБРАЖАТЬСЯ НА ВСЕ ПРОЦЕССЫ. ДЛЯ БОЛЬШЕЙ СКРЫТНОСТИ МОЖНО МОДИФИЦИРОВАТЬ NTDLL.DLL ТОЛЬКО В КОНТЕКСТЕ ТЕХ ПРОЦЕССОВ, КОТОРЫЕ ИСПОЛЬЗУЮТСЯ ДЛЯ ВЫВОДА СПИСКА ЗАДАЧ (TASKMNG.EXE, FAR.EXE, TLIST.EXE И Т. Д.). В ЭТОМ СЛУЧАЕ, ЗАГЛЯНУВ ОТЛАДЧИКОМ ВНУТРЬ NTQUERYSYSTEMINFORMATION, МЫ НЕ НАЙДЕМ НИКАКИХ СЛЕДОВ МАЛВАРИ. МОЖНО, КОНЕЧНО, ПРОВЕРИТЬ APPINIT_DLLS, НО ЭТО НЕ ЕДИНСТВЕННЫЙ СПОСОБ ВНЕДРЕНИЯ, ТАК ЧТО ЗАДАЧА ВЫЯВЛЕНИЯ МАЛВАРИ РЕЗКО УСЛОЖНЯЕТСЯ.

3 МОДИФИЦИРОВАТЬ ТАБЛИЦУ ИМПОРТА TASKMNG.EXE («ДИСПЕТЧЕР ЗАДАЧ»), PROCLIST.DLL (ПЛАГИН FAR'А, ОТВЕТСТВЕННЫЙ ЗА ВЫВОД СПИСКА ПРОЦЕССОВ), TLIST.EXE НА ДИСКЕ (ИЛИ В ПАМЯТИ), ПОДМЕНИВ ВЫЗОВОВ NTQUERYSYSTEMINFORMATION СВОЕЙ СОБСТВЕННОЙ ФУНКЦИЙ ОБЕРТКОЙ. ТАКОЙ ПЕРЕХВАТ ЛЕГКО ОБНАРУЖИВАЕТСЯ ПУТЕМ СРАВНЕНИЯ ИСПОЛНЯЕМЫХ ФАЙЛОВ С ИХ ОБРАЗОМ ПАМЯТИ, КОТОРЫЙ МОЖЕТ БЫТЬ ПОЛУЧЕН ПУТЕМ СНЯТИЯ ДАМПА УТИЛИТОЙ ТИПА PE TOOLS ИЛИ СТАРЫМ ДОБРЫМ PROCDUMP'ОМ. К ТОМУ ЖЕ МАЛВАРИ ПРИДЕТСЯ ДОПОЛНИТЕЛЬНО ПЕРЕХВАТЫВАТЬ GETPROCADDRESS, ЧТОБЫ ОТСЛЕЖИВАТЬ ДИНАМИЧЕСКУЮ ЗАГРУЗКУ NTDLL.DLL.

При наличии прав администратора, малварь может проникнуть в NTOSKRNL.EXE и подменить сервис 97h своим собственным обработчиком. Тогда с прикладного уровня обнаружить зловредный процесс уже не удастся и придется спускаться на уровень ядра (подробно рассмотрено в разделе «восстановление SST»).

А вот Soft-Ice не использует NtQuerySystemInformation и для отображения списка процессов самостоятельно разбирает базовые структуры операционной системы, а потому легко выявляет скрытые процессы.

Теоретически, малварь может внедриться в soft-ice и перехватить любую из его команд (например, команду «PROC»), действуя по той же схеме, что и IceExt/IceDump (благо, что обе утилиты распространяются в исходных текстах). Но в живой природе такие «монстры» пока что не встречались. Можно надеяться, что IceExt, скрывающий soft-ice от большинства защит, скроет его и от малвари, однако, при этом остается угроза сигнатурного поиска отладчика в памяти. К тому же на хакерских форумах не первый год обсуждается гипотетический алгоритм скрытия, перехватывающий функции переключения контекста и «вытирающий» себя в промежутках между ними. Но реализация такого проекта упирается в непреодолимые практические трудности. Формат процессорных структур непостоянен и меняется от одной версии системы к другой, к тому же с ними взаимодействует множество недокументированных функций, вызываемых в разное время из различных мест. И малварь, пытающаяся замаскироваться, постоянно обрушивает систему в BSOD, чем сразу себя и разоблачает...

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