Программа RootkitRevealer (версия 1.71)Авторы: Брайс Когсвелл (Bryce Cogswell)и Марк Руссинович (Mark Russinovich)
Опубликовано 1 ноября 2006 г.
ВведениеПрограмма RootkitRevelader является программой с расширенными возможностями для обнаружения rootkit-программ. Она работает под управлением ОС Windows NT 4 и более поздних версий. Программа выводит список несоответствий результатов работы API-интерфейсов файловой системы и реестра реальным данным. Эти несоответствия могут означать наличие rootkit-программы, работающей в пользовательском режиме или в режиме ядра. Программа RootkitRevealer успешно обнаруживает все постоянные rootkit-программы, включая такие, как AFX, Vanquish и HackerDefenter. Обратите внимание, что RootkitRevealder не предназначена для определения вредоносных программ вроде программы Fu, которые не пытаются скрывать свои файлы и разделы реестра. Пожалуйста, сообщите нам, если вы используете эту программу для обнаружения присутствия rootkit-программ. Программа RootkitRevealer больше не является консольной, потому что авторы вредоносных программ начали определять наличие сканера RootkitRevealer по имени исполняемого файла. Теперь сканирование вызывается из копии программы RootkitRevealer со случайным именем файла, запущенной как служба Windows. Такой тип запуска делает процесс недоступным из командной строки. Тем не менее, можно использовать параметры командной строки для запуска автоматического сканирования с записью результатов сканирования в файл. Это эквивалентно поведению версии программы для командной строки.
К началу страницы
Что такое rootkit-программаТермин “rootkit” обозначает механизмы и приемы, с помощью которых вредоносные программы, такие как вирусы, программы-шпионы и трояны, пытаются скрыть свое присутствие от приложений, блокирующих программы-шпионы, антивирусов и средств управления системой. Rootkit-программы подразделяются на несколько классов в зависимости от способности сохранять работоспособность после перезагрузки компьютера и типа запуска (в пользовательском режиме или в режиме ядра). Постоянные rootkit-программы Rootkit-программы в оперативной памяти Rootkit-программы режима пользователя Собственный API-интерфейс Windows служит промежуточным звеном между клиентскими приложениями, работающими в пользовательском режиме, и службами, работающими в режиме ядра. Более сложные rootkit-программы, работающие в пользовательском режиме, перехватывают вызовы перечисления содержимого файловой системы, реестра и списка процессов собственного API-интерфейса Windows. Это препятствует обнаружению таких программ сканерами, которые сравнивают результаты перечисления содержимого с помощью обычного API-интерфейса Windows с результатами перечисления с помощью собственного API-интерфейса Windows. Rootkit-программы режима ядра
К началу страницы
Принцип работы программы RootkitRevealerТак как постоянные rootkit-программы изменяют результаты работы вызовов прикладных программных интерфейсов, результат работы этих вызовов не соответствует реальному содержимому хранилищ. Программа RootkitRevealer сравнивает результаты сканирования системы высокоуровневыми и низкоуровневыми средствами. Самым высоким уровнем является интерфейс Windows API, самым низким — реальное содержимое тома файловой системы или куста реестра (файла куста реестра, хранящегося на диске). Таким образом программа RootkitRevealer без проблем обнаружит rootkit-программы, работающие как в пользовательском режиме, так и в режиме ядра, и перехватывающие вызовы интерфейсов Windows API для удаления себя из результатов работы этих вызовов. Присутствие этих программ проявится виде несоответствий между информацией, полученной с помощью интерфейсов Windows API, и результатами прямого анализа структур данных файловых систем FAT и NTFS. Может ли rootkit-программа избежать обнаружения программой RootkitRevealer? Существуют ли гарантированные способы обнаружения rootkit-программ? Универсального средства для обнаружения rootkit-программ нет и не будет, но наибольшими возможностями обладают и будут обладать сканеры, интегрированные с антивирусными системами, сравнивающие данные сканирования работающей системы с данным сканирования выключенной.
К началу страницы
Использование программы RootkitRevealerДля работы программы RootkitRevelaer требуется, чтобы учетной записи, с правами которой выполняется программа, были назначены привилегии резервного копирования файлов и папок, загрузки драйверов и выполнения задач обслуживания томов (в ОС Windows XP и более поздних версиях). По умолчанию члены группы “Администраторы” обладают этими привилегиями. Для уменьшения количества ошибочных результатов запускайте программу RootkitRevealer на простаивающей системе. Для достижения наилучших результатов завершите работу всех приложений и сохраняйте систему в простаивающем состоянии во время выполнения сканирования. При возникновении вопросов или проблем посетите форум компании Sysinternals, посвященный программе RootkitRevealer.
К началу страницы
Ручное сканированиеДля выполнения сканирования запустите программу RootkitRevealer и нажмите кнопку “Начать сканирование”. Программа выполнит сканирование системы. Во время сканирования действия программы будут отображаться на панели состояния внизу окна программы, а обнаруженные несоответствия в списке результатов. Ниже приведен список доступных для настройки параметров:
К началу страницы
Запуск автоматического сканированияПрограмма RootkitRevealer позволяет настроить некоторые параметры автоматического сканирования. Синтаксис: rootkitrevealer [-a [-c] [-m] [-r] файл_результатов] -a Выполнить автоматическое сканирование и выйти после завершения сканирования. -c Вывести данные в формате CSV. -m Показать файлы метаданных NTFS. -r Не выполнять сканирование реестра. Примечание: файл с результатами сканирования должен располагаться на локальном томе. Если указать параметр -c, программа не будет отображать состояние выполнения сканирования, а найденные несоответствия будут выведены в CSV-файл для упрощения последующего импортирования результатов сканирования в базу данных. Для выполнения сканирования на удаленных системах можно воспользоваться служебной программой Sysinternals PsExec. Ниже приведен пример команды для осуществления такого сканирования: psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log
К началу страницы
Интерпретация выходных данныхНиже приведен снимок экрана, на котором программой RootkitRevealer обнаружена распространенная rootkit-программа HackerDefender. В списке несоответствий разделов реестра видно, что разделы реестра, в которых хранится драйвер устройства и параметры службы программы HackerDefender, скрыты от вызовов интерфейса Windows API, но присутствуют в результатах непосредственного сканирования данных куста реестра. Подобным же образом файлы программы HackerDefender невидны вызовам интерфейса Windows API, выводящим содержимое папок, но присутствуют в результатах непосредственного сканирования данных файловой системы. Необходимо изучить все несоответствия и определить вероятность того, что то или иное несоответствие является знаком присутствия rootkit-программы. К сожалению, не существует гарантированного способа указать на наличие или отсутствие таких программ, основываясь на данных результата сканирования. Поэтому все перечисленные несоответствия необходимо проанализировать, чтобы убедиться в объяснимости причин их наличия. Если вы определили, что у вас в системе присутствует rootkit-программа, необходимо осуществить поиск инструкций в Интернете по ее удалению. Если вы не знаете, как удалить эту программу, необходимо переформатировать жесткий диск и переустановить ОС Windows. Ниже приведена информация о возможных несоответствиях, которые обнаруживает программа RootkitRevealer. Обнаруженные rootkit-программы и отдельные ложные обнаружения обсуждаются на форуме Sysinternals, посвященном программе RootkitRevealer.
К началу страницы
Сокрытие от вызовов интерфейсов Windows APIЭто наиболее распространенный способ сокрытия присутствия, используемый большинством rootkit-программ. Тем не менее, если не установить флажок “скрывать файлы метаданных NTFS”, в результатах сканирования будет присутствовать несколько подобных записей для каждого раздела NTFS, поскольку NTFS скрывает от вызовов интерфейса Windows API свои файлы метаданных, например $MFT и $Secure. Перечень файлов метаданных разделов NTFS зависит от версии файловой системы и различных дополнительных возможностей, активных на конкретном разделе. Также ряд антивирусных систем, например Антивирус Касперского, используют rootkit-технологии сокрытия своих данных, храня их в дополнительных потоках данных NTFS. Если вы используете подобное антивирусное приложение, в списке несоответствий будут записи о сокрытии от интерфейса Windows API дополнительных потоков данных для каждого файла NTFS. Программа RootkitRevealer не поддерживает фильтрацию результатов, потому что скрытые вредоносные программы могут воспользоваться ею. Также в списке несоответствий можно увидеть файлы, удаленные во время сканирования. Ниже приведен перечень файлов метаданных NTFS, используемый ОС Windows Server 2003:
Отказ в доступе. Это несоответствие никогда не должно присутствовать в результатах работы программы RootkitRevealer, потому что в программе используются механизмы, позволяющие получить доступ к любому файлу, папке или разделу реестра в системе. Файл видим для интерфейса Windows API, присутствует в индексе папки, но отсутствует в таблице MFT. Сканирование файловой системы осуществляется с помощью трех модулей: модуль сканирования интерфейса Windows API, модуль сканирования таблицы NTFS MFT и модуль сканирования индексных структур папок NTFS. Перечисленные выше несоответствия показывают, что файл присутствует в результатах работы лишь одного или двух из трех перечисленных выше модулей. Наиболее распространенной причиной возникновения такого несоответствия является создание или удаление файла во время сканирования. Ниже приведен пример несоответствия, которое возникает при создании файла во время сканирования: C:\newfile.txt Размер значения реестра, видимый из интерфейса Windows API, не соответствует реальному размеру в файле данных куста реестра. Rootkit-программы могут попытаться скрыть свое присутствие, сообщая неверный размер значения реестра, благодаря чему содержимое этого значения недоступно с помощью интерфейса Windows API. Необходимо изучить каждое такое несоответствие, хотя оно может являться и результатом изменения содержимого значения реестра во время сканирования. Несоответствие типа значения, видимого из интерфейса Windows API, типу значения в файле данных куста реестра. У значений реестра есть тип, например DWORD или REG_SZ. Несоответствие типа означает, что тип значения, который определяется интерфейсом Windows API, отличается от реального типа значения в файле данных куста реестра. Rootkit-программа может замаскировать свои данные, которые реально хранятся в значении типа REG_BINARY, вернув для интерфейса Windows API тип REG_SZ. Если в начале этих данных будет храниться 0, интерфейс Windows API не сможет получить доступ к остальным данным этого значения. В названии раздела реестра содержатся нулевые символы. Интерфейс Windows API представляет все имена разделов реестра как строки, оканчивающиеся нулевым символом, в то время как ядро представляет их как строки с заданной длиной. Благодаря этому можно создать такие разделы реестра, которые будут видны операционной системе, но таким средствам управления реестром, как Regedit, они будут видны лишь частично. В исходном коде программы Reghide продемонстрировано использование этого приема, который также используется вредоносными и rootkit-программами для сокрытия данных в реестре. Для удаления разделов реестра, имена которых содержат нулевые символы, можно воспользоваться программой Sysinternals Regdellnull. Несоответствие содержимого значения реестра, видимого из интерфейса Windows API, содержимому значения в файле данных куста реестра. Это несоответствие возникает, если содержимое значения реестра изменяется в процессе выполнения сканирования реестра. К часто изменяющимся значениям относятся такие значения, как различные временные метки, например время работы сервера Microsoft SQL Server (см. пример ниже), или время последнего сканирования антивируса. Каждое перечисленное значение реестра необходимо проверить, чтобы убедится, что оно относится к реальному приложению или операционной системе. HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
К началу страницы
Дополнительные источникиНиже приведен перечень веб-узлов и книг, содержащих дополнительную информацию о rootkit-программах: Общие сведения о вредоносных программах: вирусах, программах-шпионах и rootkit-программах Компания Sony зашла слишком далеко со скрытыми программами и управлением цифровыми правами Разоблачение rootkit-программ Rootkit-программы: свержение ядра Windows www.phrack.org research.microsoft.com/rootkit/ Искусство исследования и защиты от компьютерных вирусов Питера Зора (Peter Szor). Вредоносные программы: борьба с кодом, написанным злоумышленниками, авторы Эд Скодис (Ed Skoudis) и Лени Зельцер (Lenny Zeltser). Windows Internals, 4-е издание, авторы Марк Руссинович и Дэйв Соломон (Dave Solomon). В этой книге не обсуждаются rootkit-программы, но понимание архитектуры Windows помогает понять работу таких программ.
|