Поделиться через


RootkitRevealer версии 1.71

Марк Руссинович

Опубликовано: 1 ноября 2006 г.

ЗагрузкаСкачать RootkitRevealer (231 КБ)
Запустите сейчас из Sysinternals Live.

Введение

RootkitRevealer — это расширенная программа обнаружения rootkit. Он работает в Windows XP (32-разрядная версия) и Windows Server 2003 (32-разрядная версия), а также выводит список несоответствий API реестра и файловой системы, которые могут указывать на наличие корневогоkit в пользовательском режиме или в режиме ядра. RootkitRevealer успешно обнаруживает множество постоянных корневых ключей, включая AFX, Vanquish и HackerDefender (примечание: RootkitRevealer не предназначен для обнаружения корневых китов, таких как Fu, которые не пытаются скрыть свои файлы или разделы реестра). Если вы используете его для идентификации присутствия rootkit, сообщите нам об этом!

Причина, по которой больше нет версии командной строки, заключается в том, что авторы вредоносных программ начали проверку RootkitRevealer с помощью его исполняемого имени. Поэтому мы обновили RootkitRevealer, чтобы выполнить проверку из случайно именованной копии себя, которая выполняется как служба Windows. Этот тип выполнения не способствует интерфейсу командной строки. Обратите внимание, что можно использовать параметры командной строки для выполнения автоматической проверки с результатами, записанными в файл, что эквивалентно поведению версии командной строки.

Что такое Rootkit?

Термин rootkit используется для описания механизмов и методов, в которых вредоносные программы, включая вирусы, шпионские программы и трояны, пытаются скрыть свое присутствие от блокировщиков шпионских программ, антивирусной программы и системного управления. Существует несколько классификаций rootkit в зависимости от того, выживает ли вредоносная программа перезагрузки и выполняется ли она в пользовательском режиме или в режиме ядра.

Постоянные корневые наборы
Постоянный коркит связан с вредоносными программами, которые активируются при каждой загрузке системы. Так как такие вредоносные программы содержат код, который должен выполняться автоматически каждый системный запуск или когда пользователь входит в систему, он должен хранить код в постоянном хранилище, например в реестре или файловой системе, и настроить метод, с помощью которого код выполняется без вмешательства пользователя.

Корневые наборы на основе памяти
Коркиты на основе памяти — это вредоносные программы, которые не имеют постоянного кода и поэтому не выживают перезагрузку.

Rootkits в пользовательском режиме
Существует множество методов, с помощью которых коркиты пытаются избежать обнаружения. Например, rootkit в пользовательском режиме может перехватывать все вызовы API-интерфейсов Windows FindFirstFile/FindNextFile, которые используются служебными программами просмотра файловой системы, включая проводник и командную строку, для перечисления содержимого каталогов файловой системы. Когда приложение выполняет перечисление каталога, которое в противном случае возвращает результаты, содержащие записи, определяющие файлы, связанные с rootkit, rootkit перехватывает и изменяет выходные данные для удаления записей.

Собственный API Windows служит интерфейсом между клиентами в пользовательском режиме и службами в режиме ядра и более сложными коркитами пользовательского режима перехватывать файловую систему, реестр и функции перечисления процессов собственного API. Это предотвращает обнаружение сканерами, которые сравнивают результаты перечисления API Windows с данными, возвращаемыми собственным перечислением API.

Rootkits в режиме ядра
Коркиты в режиме ядра могут быть еще более мощными, так как не только они могут перехватывать собственный API в режиме ядра, но и напрямую управлять структурами данных в режиме ядра. Распространенный способ скрытия наличия вредоносного процесса заключается в удалении процесса из списка активных процессов ядра. Так как API управления процессами зависят от содержимого списка, вредоносный процесс не будет отображаться в средствах управления процессами, таких как диспетчер задач или обозреватель процессов.

Как работает RootkitRevealer

Так как постоянные коркиты работают путем изменения результатов API, чтобы системное представление с помощью API отличалось от фактического представления в хранилище, RootkitRevealer сравнивает результаты проверки системы на самом высоком уровне с тем, что на самом низком уровне. Самый высокий уровень — ЭТО API Windows, а самый низкий — это необработанное содержимое тома файловой системы или куста реестра (файл hive — это формат хранилища на диске реестра). Таким образом, rootkits, независимо от режима пользователя или режима ядра, которые управляют API Windows или собственным API для удаления их присутствия из списка каталогов, например, будут рассматриваться RootkitRevealer как несоответствие между сведениями, возвращаемыми API Windows и которые видели в необработанной проверке структур файловой системы тома FAT или NTFS.

Может ли rootkit скрыться от RootkitRevealer
Теоретически можно скрыть коркит от RootkitRevealer. Для этого потребуется перехват чтения данных или файловых систем реестра RootkitRevealer, а также изменение содержимого данных реестра, чтобы данные реестра или файлы rootkit не присутствовали. Однако для этого потребуется уровень сложности, не замеченный в rootkits на сегодняшний день. Для изменений данных потребуется как интимное знание форматов NTFS, FAT и Реестра hive, а также возможность изменять структуры данных, так что они скрывают коркит, но не вызывают несогласованных или недопустимых структур или несоответствий побочных эффектов, которые будут помечены RootkitRevealer.

Есть ли уверенный способ узнать о присутствии коркита
Как правило, не из работающей системы. Rootkit в режиме ядра может контролировать любой аспект поведения системы, чтобы информация, возвращаемая любым API, включая необработанные считывания данных hive реестра и файловой системы, выполняемых RootkitRevealer, можно скомпрометировать. При сравнении встроенной проверки системы и внестроочного сканирования из безопасной среды, такой как загрузка в установку операционной системы на основе компакт-дисков, более надежна, rootkits может нацеливаться на такие средства, чтобы избежать обнаружения даже их.

В нижней части заключается в том, что никогда не будет универсального сканера rootkit, но самые мощные сканеры будут встроенными или внестрочный сканеры сравнения, которые интегрируются с антивирусной программой.

Использование RootkitRevealer

RootkitRevealer требует, чтобы учетная запись, из которой ее запуск назначила ему файлы резервного копирования и каталоги, загрузить драйверы и выполнить задачи обслуживания томов (в Windows XP и более поздних версиях). По умолчанию группа администраторов назначает эти привилегии. Чтобы свести к минимуму ложные срабатывания, выполните RootkitRevealer в системе простоя.

Для получения наилучших результатов выйдите из всех приложений и сохраните систему в противном случае бездействие во время процесса сканирования RootkitRevealer.

Если у вас возникли вопросы или проблемы, посетите форум Sysinternals RootkitRevealer.

Сканирование вручную

Чтобы проверить систему, запустите ее в системе и нажмите кнопку "Сканировать". RootkitRevealer сканирует систему, сообщая о действиях в области состояния в нижней части окна и отмечая несоответствия в списке выходных данных. Параметры, которые можно настроить:

  • Скрыть файлы метаданных NTFS: этот параметр включен по умолчанию и имеет RootkitRevealer не показывать стандартные файлы метаданных NTFS, скрытые из API Windows.
  • Сканировать реестр: этот параметр включен по умолчанию. Отмена выбора в rootkitRevealer не выполняет проверку реестра.

Запуск автоматической проверки

RootkitRevealer поддерживает несколько вариантов автоматического сканирования систем:

Использование: rootkitrevealer [-a [-c] [-m] [-r] outputfile]

Параметр Описание
-a Автоматическое сканирование и выход после завершения.
-c Формат выходных данных в формате CSV.
-m Отображение файлов метаданных NTFS.
-r Не сканируйте реестр.

Обратите внимание, что расположение выходных данных файла должно находиться на локальном томе.

Если указать параметр -c, он не сообщает о ходе выполнения и несоответствиях печатаются в формате CSV для простого импорта в базу данных. Вы можете выполнять сканирование удаленных систем, выполнив его с помощью служебной программы Sysinternals PsExec, используя следующую командную строку:

psexec \\remote -c rootkitrevealer.exe -a:\windows\system32\rootkit.log

Интерпретация выходных данных

Это снимок экрана rootkitRevealer, который обнаруживает наличие популярного rootkit HackerDefender. Несоответствия разделов реестра показывают, что разделы реестра, в которых хранятся драйверы устройств HackerDefender и параметры службы, не отображаются в API Windows, но присутствуют в необработанной проверке данных hive реестра. Аналогичным образом файлы, связанные с HackerDefender, не видны для сканирования каталогов API Windows, но присутствуют в сканировании необработанных данных файловой системы.

Средство выявления rootkit

Необходимо проверить все несоответствия и определить вероятность того, что они указывают на наличие коркита. К сожалению, нет окончательного способа определить, основываясь на выходных данных, если коркит присутствует, но вы должны проверить все сообщаемые несоответствия, чтобы убедиться, что они объясняются. Если вы определили, что у вас установлен rootkit, выполните поиск в Интернете по инструкциям по удалению. Если вы не уверены, как удалить rootkit, необходимо переформатировать жесткий диск системы и переустановить Windows.

Помимо приведенных ниже сведений о возможных несоответствиях RootkitRevealer, форум RootkitRevealer в Sysinternals обсуждает обнаруженные коркиты и конкретные ложные срабатывания.

Скрытая от API Windows

Эти несоответствия являются теми, которые представлены большинством rootkits; Однако если вы не проверили файлы метаданных NTFS, то вы должны увидеть ряд таких записей на любом томе NTFS, так как NTFS скрывает свои файлы метаданных, такие как $MFT и $Secure, из API Windows. Файлы метаданных, присутствующих в томах NTFS, зависят от версии NTFS и функций NTFS, которые были включены в томе. Существуют также антивирусные продукты, такие как Антивирусная программа Kaspersky, которые используют методы rootkit для скрытия данных, которые хранятся в альтернативных потоках данных NTFS. Если вы используете такой сканер вирусов, вы увидите несоответствие API Windows для альтернативного потока данных в каждом файле NTFS. RootkitRevealer не поддерживает выходные фильтры, так как rootkits может воспользоваться любым фильтром. Наконец, если файл удаляется во время проверки, вы также можете увидеть это несоответствие.

Это список файлов метаданных NTFS, определенных как Windows Server 2003:

  • $AttrDef
  • $BadClus
  • $BadClus:$Bad
  • $BitMap
  • $Boot
  • $LogFile
  • $Mft
  • $MftMirr
  • $Secure
  • $UpCase
  • $Volume
  • $Extend
  • $Extend\$Reparse
  • $Extend\$ObjId
  • $Extend\$UsnJrnl
  • $Extend\$UsnJrnl:$Max
  • $Extend\$Quota

Доступ запрещен.
RootkitRevealer никогда не должен сообщать об этом несоответствии, так как он использует механизмы, позволяющие ему получить доступ к любому файлу, каталогу или разделу реестра в системе.

Видимый в API Windows, индекс каталога, но не в MFT.
Отображается в API Windows, но не в индексе MFT или каталога.
Отображается в API Windows, MFT, но не в индексе каталога.
Видимый в индексе каталога, но не API Windows или MFT.

Проверка файловой системы состоит из трех компонентов: API Windows, главной таблицы файлов NTFS (MFT) и структур индексов каталогов NTFS на диске. Эти несоответствия указывают на то, что файл отображается только в одном или двух сканированиях. Распространенная причина заключается в том, что файл создается или удаляется во время сканирования. Это пример отчета о несоответствии RootkitRevealer для файла, созданного во время сканирования:

C:\newfile.txt
3.1.2005 5:26
8 байт
Отображается в API Windows, но не в индексе MFT или каталога.

Длина API Windows не согласуется с необработанными данными hive.
Rootkits может попытаться скрыть себя, неправильно указав размер значения реестра, чтобы его содержимое не отображалось в API Windows. Вы должны изучить такое несоответствие, хотя оно также может появиться в результате изменения значений реестра, которые изменяются во время проверки.

Несоответствие типов между API Windows и необработанными данными hive.
Значения реестра имеют тип, например DWORD и REG_SZ, и это несоответствие отмечает, что тип значения, сообщаемого через API Windows, отличается от типа необработанных данных hive. Rootkit может маскировать свои данные, сохраняя его как значение REG_BINARY, например, и сделать API Windows считает, что это REG_SZ значение; Если он сохраняет значение 0 в начале данных, API Windows не сможет получить доступ к последующим данным.

Имя ключа содержит внедренные значения NULL.
API Windows обрабатывает имена ключей как строки, завершаемые значением NULL, в то время как ядро обрабатывает их как подсчитаемые строки. Таким образом, можно создать разделы реестра, видимые операционной системе, но только частично видимые средства реестра, такие как Regedit. Пример кода Reghide в Sysinternals демонстрирует этот метод, который используется как вредоносными программами, так и rootkits для скрытия данных реестра. Используйте служебную программу Sysinternals RegDelNull для удаления ключей со встроенными значениями NULL.

Несоответствие данных между API Windows и необработанными данными hive.
Это несоответствие будет происходить, если значение реестра обновляется во время проверки реестра. Значения, которые часто изменяются, включают метки времени, такие как значение времени простоя Microsoft SQL Server, показанное ниже, и значения сканера вирусов "последняя проверка". Необходимо изучить любое указанное значение, чтобы убедиться, что это допустимое значение приложения или системного реестра.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
3.1.2005 4:33
8 байт

Ресурсы Rootkit

Следующие веб-сайты и книги являются источниками дополнительных сведений о rootkits:

Sony, Rootkits и Digital Rights Management Прошли слишком далеко
Прочитайте запись блога Марка о его обнаружении и анализе sony rootkit на одном из его компьютеров.

Раскопка корневых наборов
Статья о технологиях rootkit и принципе работы RootkitRevealer в июне в Windows IT Pro Magazine содержит общие сведения о технологиях rootkit.

Rootkits: подчинение ядра Windows
Эта книга Грег Хоглунд и Джейми Батлер является самым комплексным лечением коркитов доступны.

www.phrack.org
На этом сайте хранится архив Phrack, ориентированный на трещины журнал, где разработчики обсуждают недостатки в продуктах, связанных с безопасностью, методах rootkit и других вредоносных трюках.

Искусство компьютерного исследования вирусов и обороны, Питер Сзор

Вредоносные программы: борьба с вредоносным кодом, Эд Скудис и Ленни Зелтсер

Windows Internals, 4th Edition, Марк Руссинович и Дэйв Соломон (книга не говорит о rootkits, но понимание архитектуры Windows полезно для понимания коркитов).

ЗагрузкаСкачать RootkitRevealer (231 КБ)

Запустите сейчас из Sysinternals Live.