RootkitRevealer v1.71 Info
RootkitRevealer v1.71 Info
71
TechNet Home | TechCenters | Downloads | TechNet Program | Subscriptions | Security Bulletins | Archive
Search for
TechNet Home > Sysinternals Home > Utilities Index
Go
Sysinternals Home
RootkitRevealer v1.71
Utilities
By Bryce Cogswell and Mark Russinovich
File and Disk Utilities
Published: November 1, 2006
Networking Utilities
Process Utilities
Mark's Webcasts
Top of page
Mark's Events
Persistent Rootkits
A persistent rootkit is one associated with malware that activates each time the system boots. Because such malware contain code that
must be executed automatically each system start or when a user logs in, they must store code in a persistent store, such as the
Registry or file system, and configure a method by which the code executes without user intervention.
Memory-Based Rootkits
Memory-based rootkits are malware that has no persistent code and therefore does not survive a reboot.
User-mode Rootkits
There are many methods by which rootkits attempt to evade detection. For example, a user-mode rootkit might intercept all calls to
the Windows FindFirstFile/FindNextFile APIs, which are used by file system exploration utilities, including Explorer and the command
prompt, to enumerate the contents of file system directories. When an application performs a directory listing that would otherwise
return results that contain entries identifying the files associated with the rootkit, the rootkit intercepts and modifies the output to
The Windows native API serves as the interface between user-mode clients and kernel-mode services and more sophisticated user-
mode rootkits intercept file system, Registry, and process enumeration functions of the Native API. This prevents their detection by
scanners that compare the results of a Windows API enumeration with that returned by a native API enumeration.
Kernel-mode Rootkits
Kernel-mode rootkits can be even more powerful since, not only can they intercept the native API in kernel-mode, but they can also
directly manipulate kernel-mode data structures. A common technique for hiding the presence of a malware process is to remove the
process from the kernel's list of active processes. Since process management APIs rely on the contents of the list, the malware process
will not display in process management tools like Task Manager or Process Explorer.
Top of page
The bottom line is that there will never be a universal rootkit scanner, but the most powerful scanners will be on-line/off-line
comparison scanners that integrate with antivirus.
Top of page
Using RootkitRevealer
RootkitRevealer requires that the account from which its run has assigned to it the Backup files and directories, Load drivers and
Perform volume maintenance tasks (on Windows XP and higher) privileges. The Administrators group is assigned these privileges by
default. In order to minimize false positives run RootkitRevealer on an idle system.
For best results exit all applications and keep the system otherwise idle during the RootkitRevealer scanning process.
If you have questions or problems please visit the Sysinternals RootkitRevealer Forum.
Top of page
Manual Scanning
To scan a system launch it on the system and press the Scan button. RootkitRevealer scans the system reporting its actions in a status
area at the bottom of its window and noting discrepancies in the output list. The options you can configure:
•Hide NTFS Metadata Files: this option is on by default and has RootkitRevealer not show standard NTFS metadata files, which are
hidden from the Windows API.
•Scan Registry: this option is on by default. Deselecting it has RootkitRevealer not perform a Registry scan.
Top of page
-a
-c
-m
-r
If you specify the -c option it does not report progress and discrepancies are printed in CSV format for easy import into a database.
You can perform scans of remote systems by executing it with the Sysinternals PsExec utility using a command-line like the following:
You should examine all discrepancies and determine the likelihood that they indicate the presence of a rootkit. Unfortunately, there is
no definitive way to determine, based on the output, if a rootkit is present, but you should examine all reported discrepancies to
ensure that they are explainable. If you determine that you have a rootkit installed, search the web for removal instructions. If you are
unsure as to how to remove a rootkit you should reformat the system's hard disk and reinstall Windows.
In addition to the information below on possible RootkitRevealer discrepancies, the RootkitRevealer Forum at Sysinternals discusses
detected rootkits and specific false-positives.
Top of page
if a file is deleted during a scan you may also see this discrepancy.
•$AttrDef
•$BadClus
•$BadClus:$Bad
•$BitMap
•$Boot
•$LogFile
•$Mft
•$MftMirr
•$Secure
•$UpCase
•$Volume
•$Extend
•$Extend\$Reparse
•$Extend\$ObjId
•$Extend\$UsnJrnl
•$Extend\$UsnJrnl:$Max
•$Extend\$Quota
Access is Denied.
RootkitRevealer should never report this discrepancy since it uses mechanisms that allow it to access any file, directory, or registry key
on a system.
A file system scan consists of three components: the Windows API, the NTFS Master File Table (MFT), and the NTFS on-disk directory
index structures. These discrepancies indicate that a file appears in only one or two of the scans. A common reason is that a file is
either created or deleted during the scans. This is an example of RootkitRevealer's discrepancy report for a file created during the
scanning:
C:\newfile.txt
3/1/2005 5:26 PM
8 bytes
Visible in Windows API, but not in MFT or directory index.
Rootkits can attempt to hide themselves by misrepresenting the size of a Registry value so that its contents aren't visible to the
Windows API. You should examine any such discrepancy, though it may also appear as a result of Registry values that change during a
scan.
Registry values have a type, such as DWORD and REG_SZ, and this discrepancy notes that the type of a value as reported through the
Windows API differs from that of the raw hive data. A rootkit can mask its data by storing it as a REG_BINARY value, for example, and
making the Windows API believe it to be a REG_SZ value; if it stores a 0 at the start of the data the Windows API will not be able to
access subsequent data.
The Windows API treats key names as null-terminated strings whereas the kernel treats them as counted strings. Thus, it is possible to
create Registry keys that are visible to the operating system, yet only partially visible to Registry tools like Regedit. The Reghide
sample code at Sysinternals demonstrates this technique, which is used by both malware and rootkits to hide Registry data. Use the
Sysinternals Regdellnull utility to delete keys with embedded nulls.
This discrepancy will occur if a Registry value is updated while the Registry scan is in progress. Values that change frequently include
timestamps such as the Microsoft SQL Server uptime value, shown below, and virus scanner "last scan" values. You should investigate
any reported value to ensure that its a valid application or system Registry value.
Top of page
Rootkit Resources
http://www.microsoft.com/technet/sysinternals/utilities/RootkitRevealer.mspx (6 of 8)5/18/2007 2:41:40 AM
RootkitRevealer v1.71
The following Web sites and books are sources of more information on rootkits:
Unearthing Rootkits
Mark's June Windows IT Pro Magazine article provides an overview of rootkit technologies and how RootkitRevealer works.
www.rootkit.com
This site contains sample code for a number of user-mode and kernel-mode rootkits as well as ongoing discussions on how to develop
rootkits.
www.phrack.org
This site stores the archive of Phrack, a cracker-oriented magazine where developers discuss flaws in security-related products, rootkit
techniques, and other malware tricks.
research.microsoft.com/rootkit/
This is the Microsoft Research rootkit home page where Microsoft publishes papers and information on its efforts to combat rootkits.
Windows Internals, 4th Edition, by Mark Russinovich and Dave Solomon (the book doesn't talk about rootkits, but understanding the
Windows architecture is helpful to understanding rootkits).
Top of page
© 2007 Microsoft Corporation. All rights reserved. Terms of Use |Trademarks |Privacy Statement