危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览18788047

Rootkit一点都不神秘

也许你在和别人聊天,看一篇文章,或是一份技术分析报告中看到过这个字眼。也许你会觉得这是一个神秘、强大的某种事物,甚至在心中将它和高手隐隐画上等号。它的神秘和复杂令你望而却步,但它的强大又吸引着你的目光。现在危险漫步告诉你,它并不神秘,就是难度高了些,毕竟是高端技术,接下来这篇文章会引领你去了解它。

看到这里,你想到了什么?通过本文一夜之间炼成ROOTKIT大法,从此无敌于江湖,成为万人景仰的大虾?有这种想法的人还请先去洗把脸,注意你现在手里拿的是一篇关于ROOTKIT的文章,而不是一本辟邪剑谱。

一、Rootkit的来历

Rootkit这个词第一次出现是在1994年2月一篇名为“Ongoing Network Monitoring Attacks”的安全咨询报告。不过它正式走向大众的视野却是在2005年。

那时mp3格式已经相当成熟,越来越多的人开始从CD中抽取音乐转为mp3,然后在互联网上分享它们。音乐企业为了挽回在音乐盗版上所遭受到的损失而努力,其中一家企业,Sony BMG决定在他们的CD上使用XCP与Mediamax防拷技术。这两种技术我们不必去了解,我们只要知道,Sony BMG在其中加入了Rootkit按术。用户插入光盘后,防拷程序便在Rootkit的掩护下进了村……。一位技术作家MarkRussinovich发现了这件事,在他的博客中发表了一篇文章揭露此事,引起了公众的强烈反响,最终导致Song BMG从光盘中去掉这个程序并公开倒歉。自此,Rootkit进入了公众的视野。

二、Rootkit的基本概念

我们可以将一部个人电脑粗略的划分成三个部分,硬件、操作系统、软件(严格来说操作系统也是软件,这里的划分是为了便于理解)。硬件提供最原始的工作环境和资源,做为基础平台。操作系统盘踞在硬件平台上,对硬件提供的资源进行某种意义上的抽象化处理,并根据软件提出的申请进行分配。软件一般不能直接对硬件进行访问,只能藉由向顶头上司“操作系统”申请来获取资源.打个比方,硬件是自然环境,而操作系统是加工厂,软件则是电子工业。加工厂从自然环境获取资源进行初步加工后根据需要提供给一些电子工业使用。但如果你给某某电子工业一些矿石,让他们用这些矿石去生产一些电脑,恐怕他们会认为你来自“不正常人类研究中心”。不过这也并非绝对,仍然有一些程序可以直接访问硬件,比如驱动程序(其实操作系统就是通过形形色色的驱动程序来控制硬件的,就好比加工厂里的机器)。

提到Rootkit,应该先了解一下系统运行的权限,我们一般把操作系统称为系统层(Ring0),将软件称为应用层(Ring3)。系统层权限高于应用层,系统层的指令将优先于应用层执行,且二者冲突时以系统层为准。(Windows只使用其中的两个级别RINGO和RING3,RINGO只给操作系统用,RING3谁都能用)。另外有一些程序也是Ring0级的,比如杀毒软件。拥有Ring0权限几乎可以进行任何操作,rootkit是运行在系统层的。

Rootkit到底有什么用呢?打一个比方。我将它比作一件隐身衣和一把宝剑,或者更贴切一点,一把能让使用者隐身的利剑。那么,这柄剑有什么作用呢?首先,它可以让使用者隐身,可以随意穿梭在电脑中而不被发现,如果你高兴,完全可以拿上这柄剑在杀软面前跳上一整支disoc。不过你要先确定这位老大爷没有戴最新型的反Rootkit牌老花镜。

(不过戴这副老花镜的杀软并不多)。这柄利剑的另一个功能就是无视一切防护,持有这柄剑你就可以在电脑中为所欲为,不会被任何程序所阻拦。当然,这个比方有些夸张,不过基本上也差不多。

现在我们给Rootkit下一个定义:Rootkit是一个数字工具箱,可以加到恶意软件(木马病毒间谍软件)上来隐藏它,为它提供自由访问计算机的途径。恶意软件可以通过Rootkit加载到系统内核中,并通过修改内核达到隐蔽的目地(比如让系统认为恶意软件占用的空间为坏块,从而躲避杀软扫描)。Ro otkit可以提供自由访问计算机的途径,这个比较好理解,通过Rootkit注入系统内核的恶意程序运行在系统层,具有Ring0权限。

另外有些人认为Rootkit是用来获取系统root权限的工具,其实并不是这样,Rootkit的功能是可以将其它程序注入内核(有的Rootkit本身就是木马病毒)。如何获得将Rootki植入内核的root权限,则需要另外想办法。

三、怎样防护Rootkit病毒

下面谈谈怎么防护,最好的办法就是御敌于国门之外。如果不慎中招,危险漫步只能告诉你,目前唯一能确定可以彻底清除的方法是——重装系统。不过这技术中国还流传的不广,所以也不必过于忧心。另外就是找一些专业软件扫描一下,也许那些软件有些办法也说不定。

四、Rootkit初步应用

现在相信大家对Rootkit已经有了初步的认识,下面我们就制做一个小小的Rootkit试试。(如果您没有编程基础可以跳过本段不看。另外我为了使大家更了解Rootkit,在网上收集了几篇比较好的文章,大家可以结合本文进行理解。)

RK(ro otkit的简称)的出现催生了ARK(反rootkit)技术的发展,.也就是前面说的反rootkit牌老花镜。这些老花镜对系统中的RK的检测主要分成两种:一种是对文件系统的检测(比如大名鼎鼎的冰刃),和另一种直接对磁盘的低级检测(Disk Low-Level Scanning)。此外还有在应用层上通过调用ZwQueryDi_rectoUFile进行检测的,不过效果不是太好,用的也不多。

其实不管怎么检测,都是直接或间接发送IRP(I/O request packet的缩写,即I/O请求包)到底

层驱动的。第一种的发送到FSD中(File System Driver,文件系统驱动程序,也就是前面说的系统层),第二种被发送到磁盘驱动(也就是前面说的驱动层),而后IRP便会携带得到的文件信息返回,这时检测程序再根据返回信息进行处理和判断。但是由于低级磁盘的层比文件系统层低(更贴近硬件层),IRP返回给我们的磁盘扇区信息更加接近数据原始组织方式,所以在此上实施文件检测可以得到更令人信服的结果。但这并不等于说这类检测不能被击败。

我们编写这段程序RK与其说是躲过检测,不如说是修改了检测结果,时髦的说法(好像也不怎么,时髦了),可以叫做主动防御,嘿嘿。

具体就是挂钩某些函数的调用,然后过滤掉其中的一些信息。

相关推荐