收藏 分享(赏)

网络安全基础36725.doc

上传人:dzzj200808 文档编号:2747248 上传时间:2018-09-26 格式:DOC 页数:66 大小:8.03MB
下载 相关 举报
网络安全基础36725.doc_第1页
第1页 / 共66页
网络安全基础36725.doc_第2页
第2页 / 共66页
网络安全基础36725.doc_第3页
第3页 / 共66页
网络安全基础36725.doc_第4页
第4页 / 共66页
网络安全基础36725.doc_第5页
第5页 / 共66页
点击查看更多>>
资源描述

1、什么是木马呢?木马只是一类程序的名字,为实现特殊目的而制作并偷偷植入目的计算机中的程序的统称。其名字源于古希腊神话木马屠城记 ,全名为“特洛伊木马”有兴趣的可以翻看相关资料,很不错的一篇故事。那什么又是程序呢?呵,即然是扫盲篇,我们就不能回避这些让人头都大的问题,先从最基本的开始,熟悉计算机的朋友们可以直接跳到第三章去。我们先了解一些基本的概念:概念一:计算机。就是我们的电脑了,指的就是一堆硬件,显示器、主机、键盘、鼠标等等,当然了,拆开主机还有一堆零碎。我们只需要了解其中几个后面会提到的就行了。CPU:计算机的指令处理单元。所有的工作都是由它来做的,同一个 CPU 同一时间只能处理一条指令,

2、就是说一旦 CPU 被某一程序占用,那在同一时刻内其它程序就肯定是空闲等待状态(双核的可以同时执行两条,以此类推) 。内存:内部存储器。CPU 执行的指令都是由内存中读取的,所以,一个程序要运行首先要装入到内存中。磁盘:外部存储器。存放文件数据的地方。计算机中所有的数据平时都是存在这里的,只有在需要执行或查看时,才读取到内存中。但只有硬件,是不能使用的,还需要软件的配合,我们买电脑时电脑中大都安装了某一操作系统,主流的就是 MSWindows 系统了(还有其它的操作系统如 Linux 等,这里不做讨论) 。这就是我们需要了解的也是以后要频繁出现的第二个概念了“系统” 。概念二:系统。系统其实在

3、大多数情况下都指的是操作系统,也就是帮我们使用与管理硬件的软件系统,当我们按下机箱电源后,即由主板上的 BIOS 检测硬件、再交由硬盘中的引导程序启动操作系统,然后就出现了我们所熟悉的 Windows 主窗口(计算机在启动时做了些什么,我们会在后面详细的讲解) ,而以后我们的所有工作,看电影、听歌曲、玩游戏、上网浏览等等都是在这个窗口中进行。操作系统维持这个窗口的显示及一些常用功能的完成,而这些功能是由一系列的程序来实现的,这又引出了我们的第三个概念“程序”概念三:程序。程序是什么呢?程序就是一组指令执行序列。呵,有点专业了是不?什么又叫指令执行序列呢?举例来说:我管理着一个工厂,正常情况下我

4、让工人们按这样来工作“先去原料仓库取原料-进行初步加工- 进行精细加工 -进行零配件组装- 验收-合格则送入成品库-不合格则销毁” 。这就是一个指令执行序列,当情况为正常时,工人们执行的是这个序列也就是这个“程序” 。而在旺销的季节呢,我还有第二个程序“取原料-进行初步加工- 组装-进成品库” 。当情况为供不应求时,我就执行第二个程序。还有第三个、第四个等等,在不同的情况下,我让工人们执行不同的程序。计算机程序也是一样的,跟据用户要求的不同,执行不同的指令序列,比如您要画图,你可能会这么操作“点击开始菜单-选择所有程序-在所有的程序中选择附件-再在附件中选择画图” ,这就是你向操作系统下达的指

5、令。操作系统得到您的指令后,则会执行画图程序,也就是实现画图目的的一系列指令,而这些画图的指令储存在“mspaint.exe”文件中。操作系统会将 mspaint.exe 中的指令装入到内存中交由 CPU 开始一条条的执行。总结一下:程序是什么呢?说白了就是一个计划书,里面记载了先做什么后做什么。好的程序是好的计划,坏的程序就是坏的计划,比如:“收集炸药- 买雷管- 制成炸弹- 放到张三的床下面- 引爆” ,这就是一个坏计划,相对于计算机来说就是一个坏程序。坏程序有破坏作用吗?也就是说你写了个爆了张三的计划书就可以炸了张三吗?当然不可以,只有计划是不行的,还要去执行才能真正起到作用。所以,一个

6、木马程序仅仅是存在于您的计算机中时并不可怕,可怕的是它执行起来。程序执行起来是什么呢?那就是我们要说的第四个概念“进程-执行中的程序。概念四:进程。程序一旦进入内存中开始执行,就叫做进程(进程其实就是容纳指令与资源的容器) 。也就是说,他已经开始工作了,开始买炸药、制炸弹了,等执行到引爆那一条指令时,张三也就完蛋了。所以,检查可疑进程,就是查杀木马的关键环节,也是重要的手段与方法。找到木马的进程,并结束它,在它执行到引爆这条指令之前,就停止它的执行,并将它的程序自计算机中删除掉,就是我们所要达到的目的。说到这里,细心的读者们可能想到了一个问题,画图程序的执行,是因为我们向操作系统下达了画图的指

7、令,所以操作系统才调入画图程序开始执行画图的指令序列。但是木马程序又是谁给操作系统下达的指令让木马的工作计划得到执行的呢?这就是我们下面要说的第五个概念“自启动程序”概念五:自启动程序。顾名思义,自启动程序,也就是不用您自己动手它自己就可以启动起来开始执行的程序。这是些什么程序呢?为什么要允许程序这样做呢?难道是专为木马准备的?呵,当然不是。自启动程序有二大类,一是系统需要的;二是用户需要的。系统需要的,是因为有些工作是无须经过用户同意,必须去做的。比如,鼠标驱动。为了能让用户使用鼠标,系统要自动加载鼠标驱动程序并执行。用户需要的,一些重复性工作可能用户想让系统自动去做,而不是每天每时的重复这

8、份工作。比如:用户可以设定多长时间无操作,就自动运行屏幕保护程序以便保护屏幕不被烧坏。这显然必须要屏幕保护程序能自动的运行,用户是不可能每次手动去执行这个程序的。而木马就是利用了这些本来是为系统或用户提供方便的手段,来实现自动运行它们自己的目的。如:木马用自己来取代屏幕保护程序,这样,长时间无操作时,运行的就不再是屏幕保护程序而是木马了。在系统中有很多地方或方法是可以让程序自动运行起来的,这个我们在后面将一一讲述。而清掉自启动项,让木马程序得不到执行,显然也就成为了我们查杀木马的重要手段之一。而系统又是如何知道,哪一个程序应该在开机后就自动运行,无须等用户来操作呢?朋友们应该能猜到,系统肯定是

9、把这些需要自动运行的程序都记录到了某一个地方,记录到哪里了呢?这就是我们要讲的第六个概念“注册表”概念六:注册表。注册表是什么呢?是系统记录信息用的一个数据库,举例来说它就像公司档案柜一样,发工资时,财务人员要查阅档案,以确定哪个员工应该发多少钱。就像系统启动时查阅注册表,确定哪个程序应该自动启动起来一样。这是一个非常宠大的数据中心,系统的关键信息都记录到那里,与现实中我们的档案柜一样,都很重要,一旦损坏将造成无可挽回的后果,所以微软公司不建议直接对注册表进行操作。当然了,木马的作者通常是不会理会微软的建议的。所以,木马通常都会将自己写入到注册表的某个自启动项中,以便开机时自动运行,而无须经过

10、用户的同意。讲到这里,又有一个不容回避的问题出现了,上面我们说了,木马程序其实就是一个计划书,而为了执行这份计划书,木马需要把自己写到注册表中的自启动程序序列中去。而问题就是,这份计划书是如何来的呢?如果得不到执行,它又如何将自己写到注册表的自启动程序中去呢?不放到自启动程序中它就得不到执行,而得不到执行,它也就无法起到作用也包括无法将自己写到注册表中去晕了,这成了先有鸡还是先有蛋的问题了。那么木马是如何进入我们的计算机并获得首次执行的呢?这就是我们要讲的第七个概念了“侵入”概念七:侵入。侵入是什么呢?也就是侵略进入喽,侵略需要被侵略者同意吗?当然不需要。将木马程序放入您的计算机,并让它得到首

11、次执行的过程就是侵入。侵入的方法有很多种,我们将在后面主动防御一章中详细讲解。因为,相信现在朋友们最关心的并不是如何不让他进来,而是我的电脑中现在是不是正在执行着木马程序呢?已经执行到了哪一步呢?是否马上就要引爆了呢?我关机后下次还能打开不?好,接下来,就让我们进入下一章,一起来看看,电脑中正在执行的木马程序“木马进程”、进程的查看进程,我们上面说过了,狭义上讲就是正在执行中的程序。那如何来查看系统中都有哪些程序正在执行呢?(先看下图 03-1:)系统自带了一个“任务管理器”可以使我们看到系统中当前的进程,在桌面下方的任务栏按右键,选择“任务管理器”或同时按下“Ctrl Alt Del”三个键

12、、或同时按下“CtrlShift ESC”三个键,都可以打开任务管理器程序,看到上面的窗口。看到上面的图时,会不会有点发昏?20 个进程,哪个是好的哪个是坏的呢?上面的信息又都是些什么意思呢?不要着急,让我来教教你怎么来看这些信息。首先,显示哪些信息,是可以自由选择的,看到最上面的菜单没?就是“文件、选项、查看、关机、帮助”。依次选择“查看”-“选择列”并勾选里面的相应项就可以显示相应的信息。举报帖子我们关心的是前五个,即:映像名称、PID、CPU、CPU 时间、内存使用,下面依次进行介绍。l 映像名称:即进程所对应的同名程序名字。其中有两个是例外,“System”代表的是系统,并没有对应的同

13、名程序;“System Idle Process”代表的是空闲进程,同样没有对应的同名程序,它占据了 CPU 的空闲时间。我们可以依据此栏,来找到进程对应的程序文件。lPID:英文件缩写,即进程的 ID,是一个唯一的数字,唯一的代表一个进程。我们可以依据此栏来区分进程,尤其是同名的进程,比如:SVCHOST.EXE 进程。lCPU:即该进程当前消耗 CPU 的百分比,如果某个进程正在工作,那么 CPU 一列的数值就会是非零,工作量越大,其数值越高。例外的是“System Idle Process”进程,它的数值越高,说明当前的系统越是空闲,所有进程的 CPU 一栏的数值相加等于CPU 占用。我

14、们可以依据此栏来查看,哪些进程正在工作,哪些进程是空闲的。上面我们说过,同一 CPU 在同一时间只能处理一个工作,所以如果某一进程长时间大量占用 CPU,那么将会导致其它进程得不到或得到很少的 CPU 时间来处理,使系统反应速度严重迟缓。这种情况的出现,通常是程序出现了问题,我们就要考虑结束掉霸占 CPU 不放的进程,并尽量查明原因。lCPU 时间:自运行以来,该进程占用的全部 CPU 时间,此数值越大,代表该进程工作时间越长,注意,不是运行时间而是工作时间,如果运行后,进程只是等待,并没有工作,那么此时间也会很小。例外的仍然是“System Idle Process”进程,它占据了 CPU

15、全部的空闲时间。我们可以据此来判断,哪些进程在一直的工作,而这一直工作的进程是不是应该工作的正常进程。比如我们一直在画图,那画图程序 mspaint.exe 的进程CPU 时间很长,那就是很正常的;而如果我们在听音乐,从来没画过图,但这里却显示画图程序用了大量的 CPU 时间,那很可能就是某个黑客或木马或其它进程正在偷偷的使用画图程序呢。l 内存使用:标明了该进程使用的内存数量,要知道,系统中的内存数量是有限的,当某一个进程大量占用内存时,就会导至系统或其它进程可用内存量减少,而至使系统运行速度减慢。在某些情况下,可以依此来找出系统变慢的原因,并尽量使用占用内存小的程序来提高系统的性能。虽然现

16、在机器的配置都高了,内存也都大了,但在同等条件下,优先考虑使用占用资源少的程序也是有必要的。要在这些进程中区分哪些是系统进程,哪些不是,用任务管理器显然很难做到,最好的办法是借助专业工具。(看下图:03-2)上图是用反黑工具狙剑查看进程时的样子,启动狙剑,并选择“进程管理”就可以打开进程管理页面,与任务管理器相比,首先映像文件带了路径,使您可以直接定位到程序文件。其次,多了父 ID 一栏,这个标明了该进程是由谁启动的,比如:smss.exe 的进程 ID 是 540,父 ID 是 那么,我们就可以知道,smss.exe 是由进程 ID 为的 system 进程启动的,而smss.exe 又启动

17、了 csrss.exe 与 winlogon.exe,接着由 winlogon.exe 启动了 lsass.exe 与 services.exe。注意,有的进程并没有看到父进程,比如:Explorer.exe 它的父 ID 是:1216 但进程中并没有进程 ID 为 1216 的进程,这是因为系统在初始化时还有一个程序会自动运行,那就是 Userinit.exe 这个程序负责用户初始化工作,并负责启动 Explorer.exe,而工作完成后,它就退出运行了,所以进程中并没有它。最近有个木马是通过感染 Userinit.exe 来启动的,由于 Userinit.exe 启动后就退出了,所以通过查

18、看进程很难发现问题,这问题我们将在“自启动项”一篇中详细讲解。以上就是系统启动的顺序,从 System 开始,依次启动了几个进程,正常情况下,上面这几个进程都是系统关键进程,结束它们的运行将导至系统出现问题。有很多朋友对开机以后系统都做了些什么比较感兴趣,而这对系统不能启动时的故障查明也有帮助,可以通过判断系统停在了哪个环节来断定是哪个部分出了问题,在这里,我就对系统的启动过程进行一下简单的说明:系统的启动过程:1、当你按下开机键时,最早是由主板 BIOS 蕊片中的 BIOS 程序来执行硬件检测任务的,如果检查过程中发现关键硬件的故障,就会发出特定的响声通知用户,并停止启动。而 BIOS 程序

19、是哪里来的呢?这是在主板出厂时固化在芯片中的一段程序。2、当硬件没有问题时,BIOS 程序就会读入硬盘的主引导记录,将下面的任务交给主引导记录代码去完成。而主引导记录又是哪里来的呢?这是在安装操作系统时对磁盘进行分区格式化操作时,写到硬盘中的。如果找不到主引导记录,会出错停止,告诉你这是非法的系统启动盘。3、主引导记录代码的工作是读入磁盘主分区的根目录,在里面读出 Ntldr 文件,并装入内存,然后将控制权交给它。注意看一下,你的硬盘根目录下是不是有个 Ntldr 文件?这个文件的属性是隐藏、系统,所以查看时要选择查看所有,且不隐藏被保护的系统文件才可看到。这个文件是哪里来的?呵,当然是安装操

20、作系统时拷贝到硬盘上的,下面提到的文件都是在安装操作系统时拷上去的。如果没能找到 Ntldr 文件,则会停止启动,显示 Ntldr 没找到的错误信息。4、Ntldr 又做了些什么呢?它会将系统由原来的 16 位实模式切换到 32 位保护模式或 64 位长模式。它的工作是读取根目录下的 Boot.ini 文件,显然引导菜单,在多操作系统的计算机中,可以看到这个菜单。接着它会清屏,并在Win2000 下显示一个黑白的进度条,在 XP 下显示 XP 的标志图同时显示下面不断滚动的蓝色进度条,提示你它正在加载一些重要的文件。它在加载什么呢?它首先会加载 Ntoskrnl.exe、Hal.dll,如果这

21、两个文件找不到会出错停机,并显示找不到相应文件的信息。接着它读入注册表的 SYSTEM 键文件,从中找出自动启动的各类驱动程序,这是很关键的,因为有些内核级的木马就是在这时启动的。每加载一个屏幕上的进度条就滚动一下子。中间如果某个驱动出问题,也可能会导至系统蓝屏崩溃。5、接下来的工作由 Ntoskrnl.exe(或 Ntkrnlpa.exe)来进行,这是内核程序,它做的工作实在是太多了,这里就不再细说了。它的最后一步工作就是创建会话管理子系统,也就是我们上面说过的,由 System 进程创建的 Smss.exe 进程。6、Smss.exe 进程负责创建用户模式环境,由用户模式环境向 Windo

22、ws 提供可视的窗口界面。它会运行 BootExecute 中定义的程序,正常情况下是 Autochk,一个检查磁盘的程序。但有些杀毒软件会把自己的程序加到这里,来实现引导时杀毒,如果您的系统安装了江民类的杀毒软件,那么此时就会执行它的引导期杀毒程序,就是进入系统前出现的蓝底蓝字的病毒扫描窗口。Smss.exe 还会执行 SessionManager 中的文件删除、移动操作,也就是调用API:MoveFileEx 并选择重启后移除文件的,就是在这个环节执行了。当前有很多号称可以删除一切文件的安全工具都使用了 MoveFileEx 来实现文件的删除,但是现在我们可以知道了,它的文件删除是在这个阶

23、段执行的,而这时驱动程序已经加载了,所以用它们来清除驱动级的木马显然是不胜任的。创建附加的页面文件。加载 Win32k.sys,这个东西又是做什么的呢?这是一个内核模式的系统驱动程序,它负责了窗口的显示、屏幕的输入、鼠标键盘和其它设备的输入及消息的传递等。所以也是由 Win32k.sys 将显示器的分辩率设置为默认值的,也就是这个时候,咱们的计算机屏幕才真正的细致起来,在此以前都是 VGA 模式,当然了视频驱动是上面装载驱动程序时就已经加载了的,现在只是起到作用而已。再然后呢,就是启动我们上面说过的那两个进程了。就是 Csrss.exe 与Winlogon.exe 进程。启动完这两个进程后,S

24、mss.exe 就进入了无限的等待,它在等什么呢?它在等它创建的 Csrss.exe 与 Winlogon.exe,等着看这两个进程什么时候死掉,一旦他们中有死掉的,Smss.exe 马上罢工,让系统彻底崩溃。(在 XP 以后 Csrss的死亡是由内核使系统崩溃的,而不是 Smss.exe),所以千万不要结束系统进程。Csrss.exe 是做什么的呢?它负责的工作是创建或删除进程、线程,控制台与虚拟 DOS 机的支持等。它到此就开始工作了,不再参于后面的启动过程。但是Winlogon.exe 还有很多工作要做呢,我们接下来看看后面的启动过程。7、Winlogon.exe 是做什么的呢?看它的名

25、字应该看出个大概了吧。是的,它是与登录相关的,但现在还不到显示登录窗口的时候,它还要先启动Services.exe 及 Lsass.exe 进程,然后读取注册表 GinaDLL 中标明的 DLL,由这个 DLL 来显示一个登录对话话,也就是我们在进入系统时输入用户名与口令的窗口。为什么要先启动 Lsass.exe 呢?因为,这是本地安全认证子系统,负责的就是本机系统的安全,用户名与口令的验证工作是由它来进行的。还有一个我们上面提到过的进程也是这个时候由 Winlogon.exe 来启动的,是哪一个呢?就是那个 Userinit.exe,这是在用户登录进系统后,Winlogon.exe 启动此进

26、程来进行用户初始化。你也可以自己加一个程序与 Userinit.exe 放在一起,那么,在这个时候 Winlogon.exe 会将那一位置的所有程序都启动起来。当然了,相信你也想到了,这个还有那个 GinaDLL 也就成了木马启动的一个可选位置。8、最后,由 Winlogon.exe 启动的 Services.exe 开始加载标明为自启动的各个服务,及标明为手动的却是有必要加载的服务(它所做的工作我们在后面细讲)。9、而 Userinit.exe 呢,它在完成用户初始化后,就启动了 Explorer.exe,并功成身退。10、最后,Explorer.exe 就成了我们的服务员,等待在那里静候我

27、们的指令,听从我们的吩咐,进行相关程序的启动与功能的处理。接着上面的一篇来讲:看完系统的启动过程后,我们再回过头去看那个进程图,是不是明白了很多呢?除掉系统启动环节中启动的进程外,我们再看其它的进程,注意看一下儿,剩余的进程是不是都是由 Services.exe 或 Explorer.exe 中的一个启动的。Explorer.exe 是系统的 Shell 程序,响应用户的请求,并执行对应的程序的工作就是由它来完成的,比如上面我们说过的,您想画图时,将画图程序启动起来的就是这个程序。你想上网时,将浏览器启动起来的也是它。当然了,一些用户的自动任务也是由它来完成启动过程的。(这些我们将在下面的自启

28、动程序一章中详细讲解)Services.exe 是系统的服务控制管理器,由它启动的进程称为“服务”,是一组特殊的进程。此类进程是开机自动运行的,不依赖于用户的交互,说白了就是不用您管,它自己就会运行并且开始自己的工作,工作过程也无须您的干预。说到这里,您可能会想,这不就是木马所需要的么?不错,有很多木马是以服务进程的形式存在的。那我们可以管理这些服务吗?答案是肯定的,我们的计算机,我们当然有权力管理了。看下面的图 03-3:在桌面上“我的电脑”上面按右键,选择“管理”就可以打开如上图所示的窗口。依次选择:服务与应用程序- 服务 就可以看到上图右侧的服务列表。最左侧的一列是服务的名称,需要注意的

29、是这里列出的并非是对应的程序文件的名称,而仅仅是服务本身的名称。那我们又怎么知道这个服务对应的是哪个程序文件呢?如果我们想停止这个服务,并删除对应的程序文件,我们应该怎么做呢?再看下图 03-4:在某一个服务上面按鼠标右键,选择“属性”,就可以打开此服务对应的属性页面,如上图所示。在这里,我们可以看到一些有用的信息,并对此服务进行启动、停止、禁用等操作。最上面的是服务名称,第二列是显示名称,第三列是关于服务的描述,也就是这个服务是做什么用的。当然了,我们不能迷信这里的描述,因为木马可以自行设定这个描述。再下面就是可执行文件的路径,也就是对应的进程与程序文件。这时我们再返回头去看 03-2 那个

30、图,看一看进程 PID 为 968 的进程是不是就是这个“svchost.exeknetsvcs” 进程呢?这时再注意一下,又会发现问题,首先,在 03-2 图中,Services.exe 启动的服务一共是个,而在图 03-03 中,已经启动的服务却有很多,远不止个,再挨个儿的查看每个服务的属性,又会发现,有很多服务名称虽然不同,但对应的可执行文件路径(进程)都是一样的,都是“svchost.exeknetsvcs”进程,这又是咋回事呢?这里我们要解释一下 Svchost.exe 这个进程了,这是一个特殊的进程。从图 03-1 中我们可以看到名字为“SVCHOST.EXE”进程一共是五个,我们

31、没办法区分它们有什么不同。而在图 03-2 中,我们再查看这五个 Svchost.exe 进程,却可以从参数上来区分它们了,虽然进程名字相同,但它们的参数却各不相同。对了,这就是区分他们的方法了,Svchost.exe 是一个服务的宿主程序或者叫容器程序,它的里面是一组服务,而参数就标明了这一组服务的类型。如果英文不是太差,那么从它的参数上就可以看明白这一组服务是做什么用的了。当然了,我们是来查杀木马的,当然不会满足于仅仅知道这是一组服务,这一组中是不是会藏着一个木马呢?所以,我们还要知道这一组服务都分别是哪一个,怎么来查看呢?再来看下图:03-5上面的是什么呢?上面的就是我们在第一章中所提到

32、的“注册表”。依次选择- 开始- 运行- 输入“Regedit.exe”- 确定。就可以调用系统自带的注册表编辑器来打开注册表,再依次展开:HKEY_LOCAL_MACHINE-SYSTEM-CurrentControlSet-Services,还记得上面 03-4 图中的服务名称么?对了就是那个“wuauserv”,在 Services 键下打开如上图所示的“wuauserv”再展开,选中其下面的“Parmeters”,看右边的窗口中,是不是找到了此服务所对应的程序文件了?就是那个C:WINDOWSsystem32wuauserv.dll 喽。每一个 Svchost.exe 中的服务都可以通

33、过这种方式找到其对应的程序文件。看到这里,朋友们是不是头都大了?这么麻烦啊?查个进程居然这么麻烦,而且就算找到了,又怎么能知道 C:WINDOWSsystem32wuauserv.dll 是正常的程序还是木马呢?呵,不要着急,也不要怕。上面不是在教给你知识么,而且在当年,没有专业工具之前,我们可都是这么一个个来找的。当然了,现在有了各种专业工具,的确是没必要非手动去找了在狙剑的进程管理列表中(图 03-2),选中 Svchost.exe,然后按鼠标右键- 选择“查看模块”,就可以得到上图中的列表,注意被蓝条选中的那个是不是就是费半天劲所找到的那个:C:WINDOWSsystem32wuause

34、rv.dll 呢?找是找到了,可如何判断这是不是系统的服务模块呢?这一点微软为我们想的很周到,他将大多数的系统文件都进行了数字签名,我们只需要检查一下这个文件有没有系统文件的数字签名,就可以准确的判断,这是不是一个系统文件。如何检查呢?在列表中按右键,选择“隐蒇微软签名项”就可以将所有系统文件隐藏起来,剩下的就是非系统的文件啦,简单不?数字签名验证还可以应用在对进程的判断中,在图 03-2 中,列表中共有 19 个进程,这些个进程中哪些是系统的哪些又不是呢?我们仍然可以利用数字签名来判断,在列表中按右键,选择“隐蒇微软签名项”就可以将所有系统进程藏起来,剩下的就是非系统的进程。上面也说过了,一

35、共有个 SVCHOST.exe 进程,那我们是不是需要在每个SVCHOST.exe 进程上都重复一遍,查看模块- 隐藏微软签名项的过程呢?答案是不需要,在图 03-2 的进程列表中,按右键,里面的一个“扫描无微软签名模块”的选项,点击它一下,就可以列出所有进程中所有没有签名的模块了。还有一个问题是,如果手头没有工具怎么办呢?就没有办法查看这些进程中的模块了吗?有的,仍然有办法,看下图 03-7:依次选择“开始”-“所有程序”-“附件”-系统工具”-“系统信息”就可以打开上面的窗口。在窗口中选择“加载的模块”就可以看到左边窗口中的信息,看到没?我们找的那个 wuauserv 就在里面。这里面列出

36、了所有进程加载的所有模块,可以参考,但也仅仅是参考,更多的情况仍然尽量的使用专业工具来检查,会更方便更准确一些。另外,有很多木马是可以隐藏的,对于这一类木马,用系统自带的工具是检查不出的。注意看上面的几张图,发现没有,图 03-2 比图 03-1 中的进程多出来了一个 Hide.exe 这就是下面我们要讲的“进程的隐藏了”。2、进程的隐藏与自我保护我们通过上面的讲解已经知道,进程是一个程序运行所必须的,因此检查进程也就成了查杀木马的关键环节,我们知道这一点,木马的作者们当然更知道,所以,如何隐藏自己的进程,就成了养马人处心积虑要实现的。说到这里,有懂的朋友们可能要笑了,心里更可能在说“连无进程

37、木马都不知道,还好意思在这里显摆呢”。一个程序可以无进程么?可以吗?真的可以吗?我可以很负责任的告诉您,在Windows 系统下一个程序一定、确定以及肯定的会有一个进程,没有进程是不可能的。那所谓的“无进程木马”又是怎么回事儿呢?第一种无进程木马是 DLL 注入型木马:什么是 DLL 呢?DLL 是动态链接库,当某一进程需要实现某一功能时,此功能可能是放在某一动态链接库文件中的,所以,当进程需要使用时就要将动态库文件加载到自己的进程中。举例来说,如果进程就是一个工厂,那么,调用DLL 就是将工厂的某一部分工作外包给了 DLL 去做,而工作地点就在自己的工厂内。明白了吗?进程就是工作的厂地,即使

38、外包出去了,也是需要地方干活的。“加载到自己的进程中”这一句是关键啊,并不是没有进程,而是用了其它程序的进程。像我们上面找了半天的那个服务:C:WINDOWSsystem32wuauserv.dll,注意一下文件的扩展名,不就是 DLL 么,这就是一个典型的 DLL 文件,如果这是一个木马文件,那么,这就是一个典型的无进程木马,因为他没有自己的进程,我们在进程列表中看到的是Svchost.exe 的进程。这个 DLL 是利用服务来加载的,在注册表中还有很多位置可以让一个 DLL 加载到其它进程中,这在后面自启动程序一节中我们要讲解。但是,通过注册表来加载是可以的,但却不是唯一的,还可以通过另一

39、个进程,来打开现有的进程,来将 DLL 注入到被打开的正常进程中,然后,执行注入的进程退出,这样,在进程列表中仍然看不到木马的进程。第二种无进程木马是线程注入型的木马。什么是线程呢?上面说了程序就像一个工厂工人工作的流程表,而进程就是将流程真正的运行起来,正式的开始动手取原料- 加工- 组装- 验收等等工作。但是,我们需要明白的一点是,工人们是可以分成小组后同时进行几个环节的,第一组工人负责取原料、第二组工厂人负责加工、而第三组工人负责组装、第四组这样,可以分工合作同时进行形成流水线。而这工厂里的一组一组工人,相对于进程与线程而言,就是一个进程中的一个个线程。线程注入又是咋回事呢?线程注入,就

40、是木马程序将一个恶意线程放到了正常进程的线程序列中去执行,就像在工厂中多增加了一组自己的工人负责制造炸弹,这一组工人与其它的正常的几组工人没有什么关系,但却借用了人家的工厂去从事着非法的勾档。线程注入与 DLL 注入的区别是,线程注入只是增加了一组工人,这组工人是在以工厂的名义在工作,对外的名义也是工厂的名字,出了问题是由工厂负责的。而 DLL 注入呢,是外包,可能会增加一组工人也可能会增加多组,是以 DLL 自己的名义在工厂内工作的,出了问题是由 DLL 来负责的。当然了,如果问题大了,工厂也会受牵连的。看下面的图 03-8:在狙剑的进程列表中,选中一个进程按鼠标右键,选择“查看线程”就可以

41、查看此进程中的每一个线程,也就是查看每组工人的情况,还可以对某个线程执行暂停运行、结束运行等操作。我们注意看上面的线程列表,最后一列,显示了一些 DLL 的名字,还有一个是EXPLORER.EXE,EXPLORER.EXE 就是进程名字,我查看的就是 EXPLORER.EXE 进程的线程列表。明白我上面说的区别了么?ntdll 有三组线程在工作,那是 ntdll 在完成外包业务所需要的自己的三组工人;EXPLORER.EXE 有一组,那是工厂自己的工人,如果存在线程注入,那么就会多出一个 EXPLORER.EXE 线程。但是需要注意的是,有多个 EXPLORER.EXE 并不代表就一定有线程注

42、入,因为一个工厂也可以同时存在多条流水线。但只有一个 EXPLORER.EXE 那么通常情况下就是没有线程注入,因为一个进程肯定会有至少一个线程的存在,也就是说,一个工厂必定至少要有一组工人,皮包公司在 Windows 世界是不允许的。了解了什么是 DLL 注入型木马、什么是线程注入型木马后,查杀他们显然就很容易了。DLL 注入型的,查起来很简单,用上面说的方法“查看某一进程的模块列表- 再隐藏无微软签名的项”,就可以查出单个进程中被注入的模块;如果在全系统范围内查找,则使用“搜索无微软签名的模块”就可以将注入到其它进程中的模块找出来,而大多数工具都提供了“卸载模块”的功能,卸载后就可以删除了

43、,或直接用“卸载后删除”的功能,但有一点是需要注意的,如果该木马使用了防卸载的技术,那么卸载此模块时就会发生异常,对此也不必担心,我们还有其它方法清掉它,比如:清除其自启动项,不让他有注入的机会;或直接删除其磁盘文件等。相比较起来,查杀线程注入型的木马,就比较困难了,我们上面说了,线程注入的没有自己的文件,只是一段注入的代码。也就是说他只是混入工厂内的一组工人,并没有自己的工厂也没有自己招牌,想把他与正常的工人区分开,是很困难的。这里提供了一个线程注入的测试程序:http:/ Explorer.exe 中的线程创建的。这时你再查看 Explorer.exe 的线程列表,会发现多出来了一个线程,

44、而线程的“模块”那一列(图 03-8)标的名字就是 Explorer.exe,这时线程列表中已经有两个名字为 Explorer.exe 的线程了,但哪一个是好的,哪一个是后来注入的呢?通常情况下看“基址”那一列(图 03-8),基址数值较大的那一个一般是起动起来较晚的,就是后来加入的了,选中那一个线程选择“结束线程”,发生了什么?是不是那个窗口被关闭了?(注意:如果是用狙剑查看的,那么在线程注入后,查看新线程时,要重新刷新进程列表,不然会发现不了新注入的线程)当然了,上面只是做个试验,让朋友们亲身体会一下线程注入是怎么一回事儿。真正查杀起线程注入型的木马来,用上面的方法显然是不行的,首先,我们

45、不知道他注入到了哪一个进程中。其次,即使一个进程中有多个以进程名为名字的线程我们也无法确定那多出来的线程就是木马线程。所以,我们仍然要从自启动项入手来禁止线程注入。第三种无进程木马是纯驱动型木马什么是驱动型木马呢?就是全部功能放到了驱动程序中去完成(当然了,纯驱动型的并不多见,大多驱动型木马都是配了一个程序。)什么又叫驱动程序呢?驱动程序顾名思义就是驱使设备动起来的程序。-呵,可能不准确,但却很容易理解。其作用是让特殊的硬件和 Windows 操作系统可以交换数据,比如我们按下了键盘的 A 键,那键盘驱动就要告诉 Windows 系统“这家伙按下了 A 键,你看咋办吧”,它只是告诉一声,后面的

46、工作就由系统来处理了,系统会根据不同的情况进行不同的处理,如果你是在打字,那就把A 这个字符显示在你的输入页面中,如果你用的是五笔,显然直接显示个 A 是不行的,Windows 系统就会把你输入 A 的这个信息转给了输入法程序最终实现你按 A 的目的。但驱动又怎么会与木马有了关系呢?这就要从头说起了,话说当年木马与驱动本来是分处于两个天地,互不相干的。但随着杀毒软件、安全工具等木马杀手对木马的围追堵截越来越是凶狠,木马终于感到有点穷途未路了,在最后关头,它盯上了驱动程序!为什么盯上了驱动呢?因为驱动程序由于其特殊性,使得它在系统中有着超越一切的权力,而且有着优先加载执行的优势,它是做为操作系统

47、的一部分来运行的。详细情况涉及到系统权限的划分与优先级设定,有兴趣的可以查阅相关资料,这里只要明白一点就行“系统的权限分为两种 R0与 R3,一般的程序全部为 R3 权限,其行为受到了很多限制;而操作系统与驱动则为 R0 权限,拥有对整个计算机的全部权力,可以为所欲为”。举例来说,杀毒软件就像一个公司的人力部,对员工的行为进行考核,发现不好的就给予惩罚或辞退。如果木马总是隐藏在员工群里,那么就会受到严格的检查与监管,一旦被查出有问题就会被立即辞退。而操作系统就是公司的董事会或股东大会,驱动程序是董事或股东,有着超出人力部门监管的权力。为了逃脱追杀,开始有木马以驱动程序的身份出现,当然了,木马这

48、个驱动是没有硬件设备的,呵,如果中一个木马它就附带一个设备,那么,哪怕它只是给一支鼠标,我也会冲天大喊“木马们,都到我这里来吧”。所以它们有一个好听且很容易听明白的名字“虚拟设备驱动程序”。当木马成为公司的董事的时候,身为人力部门的安防程序开始感到郁闷,明明发现那家伙就有问题,但偏偏没权力辞退它。于是,杀毒软件开始谋求同样的身份,于是杀毒软件也开始挂驱动,使其有了董事的身份来兼人力监管,于是,新一轮的斗争开始了。而这一轮的斗争更是残酷,本来在员工层的斗争转到了高层,本来斗争的结果也就是员工被辞退,还不至于伤筋动骨涉及公司根本,但现在却是一不小心就让公司整个解体了。对应于我们这些可怜的用户来说,

49、杀软与木马的斗争,一个不好惹来的就是蓝屏死机、系统崩溃。OK,了解了驱动程序后,我们就要回到正题来了,我们如何知道系统加载了哪些驱动呢?又如何知道哪些驱动是正常的系统驱动,哪些是木马的驱动呢?看下图 03-9:在桌面我的电脑图标上按右键,依次选择“属性- 硬件- 设备管理器”就可以打开上面的窗口了,再勾选上“查看- 显示隐藏的设备”就可以看到“非即插即用驱动程序”。除了非即插即用外,其它的同级项目都是您机器上的硬件及它们的信息、资源、驱动等,他们是根正苗红的正经设备。由于这些都与硬件有关,所以,木马动它们的可能性很小,必竟木马也不想你的机器崩溃啊。因此,大多数木马驱动都隐藏在“非即插即用驱动程序”下面,而这里面的则是那些虚拟设备了(注:非即插即用驱动程序并非就是虚拟设备驱动程

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报