RootKitRevealer使用说明

来源:互联网 发布:3维建模软件 编辑:程序博客网 时间:2024/04/29 09:38

RooktKitRevealer是一款rootkit检测工具,包括在微软sysinternals工具集里面。可以从网站

“www.sysinternals.com”下载。下面对其使用方法进行英文解释一下,希望对英文不好的朋友能有点帮助。

 

RooktKitRevealer原理:

因为固留型rootkits通过改变API对explorer文件查询结果来隐藏自己,所以RooktKitRevealer通过对上层windows API的调用结果与通过对底层文件系统信息和注册表单元(Register hive,一个hive文件是注册表在硬盘上实际存储的格式)查询的结果进行对照来发现差异,正是通过这种差异来找到rootkits。

理论上,只要某一个rootkit可以截获RooktKitRevealer对文件系统和注册表等信息的读取,就可以让RooktKitRevealer无法发现。所以没有一个万能的rootkits扫描器。

 

RooktKitRevealer会进行三方面的扫描:the Windows API, NTFS主文件表(the NTFS Master File Table (MFT)), NTFS硬盘目录索引( the NTFS on-disk directory index structures)。在Description栏里面对该差异进行了描述。

下面是选择Option选项里面"Hide NTFS metadata files"扫描后的结果:只是显示了注册表的差异。

image

下面是不选择Option选项里面"Hide NTFS metadata files"扫描后的结果:可以清醒的看出来比上一张图片多出了很多和NTFS磁盘分区有关的隐藏的文件被显示出来。因为NTFS文件系统会隐藏元数据文件(metdata files,比如$MFT/$Secure等)而不让windows api发现(FindTheFile()/FindNextFile()).有些rootkit就采用了这一特点来隐藏自己,比如Kaspersky Antivirus把自己放置在NTFS数据交互流(NTFS alternate data streams)。

下面是windows server 2003里面的NTFS元数据文件列表:
$AttrDef
$BadClus
$BadClus:$Bad
$BitMap
$Boot
$LogFile
$Mft
$MftMirr
$Secure
$UpCase
$Volume
$Extend
$Extend/$Reparse
$Extend/$ObjId
$Extend/$UsnJrnl
$Extend/$UsnJrnl:$Max
$Extend/$Quota

 

image

接下里对Description栏的注释进行解释:

1、Hidden from Windows API.

很多rootkit木马文件都会出现该提示,所以要看看这个文件有没有可疑之处。当然如果你没有选择"Hide NTFS metadata files",对于NTFS元文件也会出现该注释。要注意分辨。

2、Access is Denied

RootKitRevealer应该永远不会出现该提示,应为RootKitRevealer的进程可以访问任何文件、目录或者注册表键值。所以出现这条注释的话可以肯定是rootkit。

3、

Visible in Windows API, directory index, but not in MFT.
Visible in Windows API, but not in MFT or directory index.
Visible in Windows API, MFT, but not in directory index.
Visible in directory index, but not Windows API or MFT.

正如上面已经提到的进行一次扫描会扫描三个组件:the Windows API, NTFS主文件表(the NTFS Master File Table (MFT)), NTFS硬盘目录索引( the NTFS on-disk directory index structures)。以上注释说明该文件只在一个或两个扫描过程中被发现。一个比较常见的原因是一个文件在扫描的过程中被创建或删除。

4、Windows API length not consistent with raw hive data.(API的长度和原始单元数据记录的不一致)

rootkits能够尝试通过错报注册表键值的大小来实现对windows API的隐藏。应该仔细检查。

5、Type mismatch between Windows API and raw hive data

(API类型不匹配)

注册表的值是有类型的,如DWORD/REG_SZ,这个差异说明通过windows API报告的键值类型和原始单元数据(raw hive data)不一致。一个rootkit可以通过存储为REG_BINARY类型来掩饰自己的数据,并且让windows API相信它是一个REG_SZ类型的。

6、Key name contains embedded nulls.

(键名包含嵌入的空字符)

windowsAPI把键名看成空终止字符串(以‘/0’结尾),但是系统内核却把键名看做已计数字符串。所以可以创建一些对操作系统可见,但对部分注册表工具如Regedit不可见的键值。这种方式常常被一些恶意软件和rootkit采用来实现隐藏自己。你可以用Sysinternals RegDelNull tool来删除包含嵌入空字符的键。

7、Data mismatch between Windows API and raw hive data.

该差异会在注册表正在被扫描的时候键值被更改而产生。应该仔细检查以确保是一个正当的程序进行的更改。

另外,如果大家还有什么疑惑的地方可以交流一下。

原创粉丝点击