三. 捕获不请自来的“客人”
“600型机器人包裹的是橡胶外皮,很容易被认出来,但现在的101型机器人是生化技术制造的,有真实皮肤,会呼吸、流血、甚至口臭,一切都和人类一样,直到它开始攻击,你才能知道它不是人类。”
“那你们怎么办?”
“我们用狗识别终结者。”
——《终结者》
在《终结者》里,狗是唯一可以区分敌我的工具,因为它判断对方的方式并不仅仅靠眼睛——眼睛是可以被欺骗的,但是气息不能,一个机器人无论伪装得再怎么逼真,都不能具备生命体的气息,但是它能欺骗人类的视觉和听觉,这就足够了。
后门技术从诞生到现在,已经发展了好几代,对自身的伪装技术也越来越成熟了,从最初的启动项结合隐藏进程方式,到最新的Ring0驱动方式,我们越来越难发现这些“客人”的痕迹,当它开始破坏的时候,已经来不及做补救措施了,所以,我们需要一种可以嗅出后门气息的“狗”。
1.准备工作
在进行一切工作之前,用户需要对系统有点了解,例如注册表、启动项、服务、常见的程序和进程名等,这是学习手工查毒最基本的要求,在初期可以多参考一些介绍系统概念的文章如到处都流传的“系统进程详解”、“WinXP系统服务简介及优化措施”等,并做一点笔记,力求日积月累尽快记住一些最常见的系统程序和相关工具的使用方法,如果过不了这个门槛,后面的工作也就无从谈起。
首先,我们必须了解Windows系统的三大知识点:注册表(Registry)、进程(Process)和权限(Privilege)。
“注册表”是出现在Windows 95及以后版本的一种数据库。在这之前,用户要对软硬件工作环境进行配置,就要修改一种被称为“配置设置”(INI)的文件来完成,但是由于每种设备或应用程序都得有自己的INI文件,无形中增加了管理难度,为了解决这个问题,微软开始统一标准并将各种信息资源集中起来存储,最终形成了将应用程序和计算机系统配置信息容纳在一起的“注册表”,用来管理应用程序和文件的关联、硬件设备说明、状态属性以及各种状态信息和数据等,注册表维持着整个系统的正常运作。
注册表采用一种类似文件目录的结构树来描述配置信息,最顶端的5个项目称为“根键”(ROOT_KEY),系统能识别的所有的数据都是从它们这里展开的,这5个根键分别是:
HKEY_CLASSES_ROOT(负责各种组件注册类别和文件并联信息)
HKEY_CURRENT_USER(当前登录用户的环境信息)
HKEY_LOCAL_MACHINE(整个系统的公共环境信息)
HKEY_USERS(所有用户的环境配置信息)
HKEY_CURRENT_CONFIG(当前的配置信息)
其中,我们主要关注的是前面三个根键里的数据,它们是后门最爱篡改的地方,分别是三个启动项目“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run”、“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”和“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices”,一般的后门都要通过修改这里加入自己的配置信息以达到跟随系统启动的目的;除此之外就是文件并联信息“HKEY_CLASSES_ROOT”,并联型后门最爱更改这里的.exe、.bat、.scr、.com等可执行文件的注册信息,让自己抢先一步运行。更多涉及到的注册表内容以后会提到,现在让我们来看看进程是什么。
“进程”,是指一个可执行文件在运行期间请求系统在内存里开辟给它的数据信息块,系统通过控制这个数据块为运行中的程序提供数据交换和决定程序生存期限,任何程序都必须拥有至少一个进程,否则它不被系统承认。进程从某一方面而言就是可执行文件把自身从存储介质复制在内存中的映像,它通常和某个在磁盘上的文件保持着对应关系,一个完整的进程信息包括很多方面的数据,我们使用进程查看工具看到的“应用程序”选项卡包含的是进程的标题,而“进程”选项卡包含的是进程文件名、进程标识符、占用内存等,其中“进程文件名”和“进程标识符”是必须掌握的关键,“进程标识符”是系统分配给进程内存空间时指定的唯一数字,进程从载入内存到结束运行的期间里这个数字都是保持不变的,而“进程文件名”则是对应着的介质存储文件名称,根据“进程文件名”我们就可以找到最初的可执行文件位置。
最后是“权限”,这里涉及的权限是指80386模式的Ring权限。操作系统是由内核(Kernel)和外壳(Shell)两部分组成的,内核负责一切实际的工作,包括CPU任务调度、内存分配管理、设备管理、文件操作等,外壳是基于内核提供的交互功能而存在的界面,它负责指令传递和解释。由于内核和外壳负责的任务不同,它们的处理环境也不同,因此处理器提供了多个不同的处理环境,把它们称为运行级别(Ring),Ring让程序指令能访问的计算机资源依次逐级递减,目的在于保护计算机遭受意外损害——内核运行于Ring 0级别,拥有最完全最底层的管理功能,而到了外壳部分,它只能拥有Ring 3级别,这个级别能操作的功能极少,几乎所有指令都需要传递给内核来决定能否执行,一旦发现有可能对系统造成破坏的指令传递(例如超越指定范围的内存读写),内核便返回一个“非法越权”标志,发送这个指令的程序就有可能被终止运行,这就是大部分常见的“非法操作”的由来,这样做的目的是为了保护计算机免遭破坏,如果外壳和内核的运行级别一样,用户一个不经意的点击都有可能破坏整个系统。但是现在,Ring已经屡屡被后门木马利用成为一个令人头痛的凶器。
|