无奈之下,公司暂时切断了内部网络,老宏在一台被独立出来的基于Linux系统的网络服务器旁看着显示器发呆。屏幕上进程监视程序里都是熟悉的进程,也没有任何数据传输,因为连接内部的网线已经拔掉了,网络服务也已经停止了。老宏点了支烟,望着不远处的交换机出神,在烟雾缭绕中,他仿佛看到交换机面板上代表这台网络服务器的数据指示灯在闪烁,公司网络没出问题的时候,这里有多么繁忙的数据传输啊,它代表着公司业务的……老宏突然吓得差点把烟甩掉,因为他突然清醒过来了:交换机的数据指示灯真的一直在闪烁!他转头看看显示器上的流量统计,它们却一直没变化!显示器表达的信息与交换机表达的信息不能同步,老宏只觉得整个机房变得诡异起来……
这样的事情并不一定会发生在所有个人PC用户的身上,因为它们并非主流的群体,然而一旦不幸发生,却会给你带来远比以前遭受的一切病毒袭击更恐惧的感受,你会惊恐的发现系统有点异常行为、敏感数据遭遇盗窃、甚至有明显的木马感染的表现,但是杀毒软件报告你的系统完好,你用流行的进程查看工具也没有发现可疑程序,但是你的机器却一直表现异常……
正如自然界的规则一样,最流行的病毒,对生物的伤害却是最小的,例如一般的感冒,但是最不流行的病毒,却是最夺命的。Rootkit木马就是信息世界里的AIDS,一旦感染,就难以用一般手段消灭了,因为它和自然界里的同类做的事情一样,破坏了系统自身检测的完整性——抛开术语的描述也许难以理解,但是可以配合AIDS的图片想象一下,由于AIDS破坏了人体免疫系统,导致白细胞对它无能为力,只能眼睁睁看着人体机能被慢慢破坏。PC系统没有免疫功能,但是它提供了对自身环境的相关检测功能——枚举进程、文件列表、级别权限保护等,大部分杀毒软件和进程工具都依赖于系统自带的检测功能才得以运作,而Rootkit木马要破坏的,正是这些功能。
要了解Rootkit木马的原理,就必须从系统原理说起,我们知道,操作系统是由内核(Kernel)和外壳(Shell)两部分组成的,内核负责一切实际的工作,包括CPU任务调度、内存分配管理、设备管理、文件操作等,外壳是基于内核提供的交互功能而存在的界面,它负责指令传递和解释。由于内核和外壳负责的任务不同,它们的处理环境也不同,因此处理器提供了多个不同的处理环境,把它们称为运行级别(Ring),Ring让程序指令能访问的PC资源依次逐级递减,目的在于保护PC遭受意外损害——内核运行于Ring 0级别,拥有最完全最底层的管理功能,而到了外壳部分,它只能拥有Ring 3级别,这个级别能操作的功能极少,几乎所有指令都需要传递给内核来决定能否执行,一旦发现有可能对系统造成破坏的指令传递(例如超越指定范围的内存读写),内核便返回一个“非法越权”标志,发送这个指令的程序就有可能被终止运行,这就是大部分常见的“非法操作”的由来,这样做的目的是为了保护PC免遭破坏,如果外壳和内核的运行级别一样,用户一个不经意的点击都有可能破坏整个系统。
由于Ring的存在,除了由系统内核加载的程序以外,由外壳调用执行的一般程序都只能运行在Ring 3级别,也就是说,它们的操作指令全部依赖于内核授权的功能,一般的进程查看工具和杀毒软件也不例外,由于这层机制的存在,我们能看到的进程其实是内核“看到”并通过相关接口指令(还记得API吗?)反馈到应用程序的,这样就不可避免的存在一条数据通道,虽然在一般情况下它是难以被篡改的,但是不能避免意外的发生,Rootkit正是“制造”这种意外的程序。简单的说,Rootkit实质是一种“越权执行”的应用程序,它设法让自己达到和内核一样的运行级别,甚至进入内核空间,这样它就拥有了和内核一样的访问权限,因而可以对内核指令进行修改,最常见的是修改内核枚举进程的API,让它们返回的数据始终“遗漏”Rootkit自身进程的信息,一般的进程工具自然就“看”不到Rootkit了。更高级的Rootkit还篡改更多API,这样,用户就看不到进程(进程API被拦截),看不到文件(文件读写API被拦截),看不到被打开的端口(网络组件Sock API被拦截),更拦截不到相关的网络数据包(网络组件NDIS API被拦截)了,幸好网络设备的数据指示不受内核控制,否则恐怕Rootkit要让它也不会亮了才好!我们使用的系统是在内核功能支持下运作的,如果内核变得不可信任了,依赖它运行的程序还能信任吗?(图6.普通应用级别的木马后门和Rootkit木马的对比)
但即使是Rootkit这一类恐怖的寄生虫,它们也并非所向无敌的,要知道,既然Rootkit是利用内核和Ring 0配合的欺骗,那么我们同样也能使用可以“越权”的检查程序,绕过API提供的数据,直接从内核领域里读取进程列表,因为所有进程在这里都不可能把自己隐藏,除非它已经不想运行了。也就是说,内核始终拥有最真实的进程列表和主宰权,只要能读取这个原始的进程列表,再和进程API枚举的进程列表对比,便能发现Rootkit进程,由于这类工具也“越权”了,因而对Rootkit进行查杀也就不再是难事,而Rootkit进程一旦被清除,它隐藏自身的措施也就不复存在,内核就能把它“供”出来了,用户会突然发现那个一直“找不到”的Rootkit程序文件已经老实的呆在文件管理器的视图里了。这类工具现在已经很多,例如IceSword、Patchfinder、gdb等。(图7.IceSword界面)
五、PC不是家用电器
通过上面的探讨,你现在可能清楚的知道:PC,不是家用电器——那么简单易用,也许你已经作好了把自己的PC武装起来的思想准备,开始思考用什么样的防火墙,什么样的杀毒软件好了。
转截请注明:文章来自 pc捍卫者 http://www.pchwz.com
本站发布此文为传递更多信息之目的,不表明pc捍卫者赞同其观点