查看: 2247|回复: 1
收起左侧

疱丁解马-木马查杀深度剖析之进程篇(三)

[复制链接]
於陵闲云
发表于 2007-12-17 19:11:08 | 显示全部楼层 |阅读模式
本文转自狙剑安全论坛 作者MuseHero


2、进程的隐藏与自我保护

       我们通过上面的讲解已经知道,进程是一个程序运行所必须的,因此检查进程也就成了查杀木马的关键环节,我们知道这一点,木马的作者们当然更知道,所以,如何隐藏自己的进程,就成了养马人处心积虑要实现的。
       说到这里,有懂的朋友们可能要笑了,心里更可能在说“连无进程木马都不知道,还好意思在这里显摆呢”。
       一个程序可以无进程么?可以吗?真的可以吗?我可以很负责任的告诉您,在Windows系统下一个程序一定、确定以及肯定的会有一个进程,没有进程是不可能的。
       那所谓的“无进程木马”又是怎么回事儿呢?
       第一种无进程木马是DLL注入型木马
       什么是DLL呢?DLL是动态链接库,当某一进程需要实现某一功能时,此功能可能是放在某一动态链接库文件中的,所以,当进程需要使用时就要将动态库文件加载到自己的进程中。举例来说,如果进程就是一个工厂,那么,调用DLL就是将工厂的某一部分工作外包给了DLL去做,而工作地点就在自己的工厂内。明白了吗?进程就是工作的厂地,即使外包出去了,也是需要地方干活的。“加载到自己的进程中”这一句是关键啊,并不是没有进程,而是用了其它程序的进程。像我们上面找了半天的那个服务:C:\WINDOWS\system32\wuauserv.dll,注意一下文件的扩展名,不就是DLL么,这就是一个典型的DLL文件,如果这是一个木马文件,那么,这就是一个典型的无进程木马,因为他没有自己的进程,我们在进程列表中看到的是Svchost.exe的进程。这个DLL是利用服务来加载的,在注册表中还有很多位置可以让一个DLL加载到其它进程中,这在后面自启动程序一节中我们要讲解。
       但是,通过注册表来加载是可以的,但却不是唯一的,还可以通过另一个进程,来打开现有的进程,来将DLL注入到被打开的正常进程中,然后,执行注入的进程退出,这样,在进程列表中仍然看不到木马的进程。
第二种无进程木马是线程注入型的木马
       什么是线程呢?上面说了程序就像一个工厂工人工作的流程表,而进程就是将流程真正的运行起来,正式的开始动手取原料--à加工---à组装---à验收等等工作。但是,我们需要明白的一点是,工人们是可以分成小组后同时进行几个环节的,第一组工人负责取原料、第二组工厂人负责加工、而第三组工人负责组装、第四组……这样,可以分工合作同时进行形成流水线。而这工厂里的一组一组工人,相对于进程与线程而言,就是一个进程中的一个个线程。线程注入又是咋回事呢?线程注入,就是木马程序将一个恶意线程放到了正常进程的线程序列中去执行,就像在工厂中多增加了一组自己的工人负责制造炸弹,这一组工人与其它的正常的几组工人没有什么关系,但却借用了人家的工厂去从事着非法的勾档。
       线程注入与DLL注入的区别是,线程注入只是增加了一组工人,这组工人是在以工厂的名义在工作,对外的名义也是工厂的名字,出了问题是由工厂负责的。而DLL注入呢,是外包,可能会增加一组工人也可能会增加多组,是以DLL自己的名义在工厂内工作的,出了问题是由DLL来负责的。当然了,如果问题大了,工厂也会受牵连的。看下面的图03-8





    在狙剑的进程列表中,选中一个进程按鼠标右键,选择“查看线程”就可以查看此进程中的每一个线程,也就是查看每组工人的情况,还可以对某个线程执行暂停运行、结束运行等操作。
    我们注意看上面的线程列表,最后一列,显示了一些DLL的名字,还有一个是EXPLORER.EXEEXPLORER.EXE就是进程名字,我查看的就是EXPLORER.EXE进程的线程列表。
    明白我上面说的区别了么?ntdll有三组线程在工作,那是ntdll在完成外包业务所需要的自己的三组工人;   EXPLORER.EXE有一组,那是工厂自己的工人,如果存在线程注入,那么就会多出一个EXPLORER.EXE线程。但是需要注意的是,有多个EXPLORER.EXE并不代表就一定有线程注入,因为一个工厂也可以同时存在多条流水线。但只有一个EXPLORER.EXE那么通常情况下就是没有线程注入,因为一个进程肯定会有至少一个线程的存在,也就是说,一个工厂必定至少要有一组工人,皮包公司在Windows世界是不允许的。
    了解了什么是DLL注入型木马、什么是线程注入型木马后,查杀他们显然就很容易了。
        DLL注入型的,查起来很简单,用上面说的方法“查看某一进程的模块列表---à再隐藏无微软签名的项”,就可以查出单个进程中被注入的模块;如果在全系统范围内查找,则使用“搜索无微软签名的模块”就可以将注入到其它进程中的模块找出来,而大多数工具都提供了“卸载模块”的功能,卸载后就可以删除了,或直接用“卸载后删除”的功能,但有一点是需要注意的,如果该木马使用了防卸载的技术,那么卸载此模块时就会发生异常,对此也不必担心,我们还有其它方法清掉它,比如:清除其自启动项,不让他有注入的机会;或直接删除其磁盘文件等。
     相比较起来,查杀线程注入型的木马,就比较困难了,我们上面说了,线程注入的没有自己的文件,只是一段注入的代码。也就是说他只是混入工厂内的一组工人,并没有自己的工厂也没有自己招牌,想把他与正常的工人区分开,是很困难的。这里提供了一个线程注入的测试程序:http://www.zhulinfeng.com/bbs/dispbbs.asp?BoardID=3&ID=78&replyID=&skin=1
    先试一试看看效果,运行后,会打开一个窗口,但你却在进程列表中找不到有新增加的进程,那窗口是如何来的呢?这就是由注入到Explorer.exe中的线程创建的。这时你再查看Explorer.exe的线程列表,会发现多出来了一个线程,而线程的“模块”那一列(图03-8)标的名字就是Explorer.exe,这时线程列表中已经有两个名字为Explorer.exe的线程了,但哪一个是好的,哪一个是后来注入的呢?通常情况下看“基址”那一列(图03-8),基址数值较大的那一个一般是起动起来较晚的,就是后来加入的了,选中那一个线程选择“结束线程”,发生了什么?是不是那个窗口被关闭了?(注意:如果是用狙剑查看的,那么在线程注入后,查看新线程时,要重新刷新进程列表,不然会发现不了新注入的线程)
    当然了,上面只是做个试验,让朋友们亲身体会一下线程注入是怎么一回事儿。真正查杀起线程注入型的木马来,用上面的方法显然是不行的,首先,我们不知道他注入到了哪一个进程中。其次,即使一个进程中有多个以进程名为名字的线程我们也无法确定那多出来的线程就是木马线程。所以,我们仍然要从自启动项入手来禁止线程注入。
第三种无进程木马是纯驱动型木马

    什么是驱动型木马呢?就是全部功能放到了驱动程序中去完成(当然了,纯驱动型的并不多见,大多驱动型木马都是配了一个程序。)
    什么又叫驱动程序呢?驱动程序顾名思义就是驱使设备动起来的程序。^-^ 呵,可能不准确,但却很容易理解。其作用是让特殊的硬件和Windows操作系统可以交换数据,比如我们按下了键盘的A键,那键盘驱动就要告诉Windows系统“这家伙按下了A键,你看咋办吧”,它只是告诉一声,后面的工作就由系统来处理了,系统会根据不同的情况进行不同的处理,如果你是在打字,那就把A这个字符显示在你的输入页面中,如果你用的是五笔,显然直接显示个A是不行的,Windows系统就会把你输入A的这个信息转给了输入法程序……最终实现你按A的目的。
    但驱动又怎么会与木马有了关系呢?这就要从头说起了,话说当年木马与驱动本来是分处于两个天地,互不相干的。但随着杀毒软件、安全工具等木马杀手对木马的围追堵截越来越是凶狠,木马终于感到有点穷途未路了,在最后关头,它盯上了驱动程序!为什么盯上了驱动呢?因为驱动程序由于其特殊性,使得它在系统中有着超越一切的权力,而且有着优先加载执行的优势,它是做为操作系统的一部分来运行的。详细情况涉及到系统权限的划分与优先级设定,有兴趣的可以查阅相关资料,这里只要明白一点就行“系统的权限分为两种R0R3,一般的程序全部为R3权限,其行为受到了很多限制;而操作系统与驱动则为R0权限,拥有对整个计算机的全部权力,可以为所欲为”。
    举例来说,杀毒软件就像一个公司的人力部,对员工的行为进行考核,发现不好的就给予惩罚或辞退。如果木马总是隐藏在员工群里,那么就会受到严格的检查与监管,一旦被查出有问题就会被立即辞退。而操作系统就是公司的董事会或股东大会,驱动程序是董事或股东,有着超出人力部门监管的权力。
    为了逃脱追杀,开始有木马以驱动程序的身份出现,当然了,木马这个驱动是没有硬件设备的,呵,如果中一个木马它就附带一个设备,那么,哪怕它只是给一支鼠标,我也会冲天大喊“木马们,都到我这里来吧”。所以它们有一个好听且很容易听明白的名字“虚拟设备驱动程序”。
    当木马成为公司的董事的时候,身为人力部门的安防程序开始感到郁闷,明明发现那家伙就有问题,但偏偏没权力辞退它。于是,杀毒软件开始谋求同样的身份,于是杀毒软件也开始挂驱动,使其有了董事的身份来兼人力监管,于是,新一轮的斗争开始了。而这一轮的斗争更是残酷,本来在员工层的斗争转到了高层,本来斗争的结果也就是员工被辞退,还不至于伤筋动骨涉及公司根本,但现在却是一不小心就让公司整个解体了。对应于我们这些可怜的用户来说,杀软与木马的斗争,一个不好惹来的就是蓝屏死机、系统崩溃。
       OK,了解了驱动程序后,我们就要回到正题来了,我们如何知道系统加载了哪些驱动呢?又如何知道哪些驱动是正常的系统驱动,哪些是木马的驱动呢?看下图03-9






    在桌面我的电脑图标上按右键,依次选择“属性---à硬件---à设备管理器”就可以打开上面的窗口了,再勾选上“查看----à显示隐藏的设备”就可以看到“非即插即用驱动程序”。
    除了非即插即用外,其它的同级项目都是您机器上的硬件及它们的信息、资源、驱动等,他们是根正苗红的正经设备。由于这些都与硬件有关,所以,木马动它们的可能性很小,必竟木马也不想你的机器崩溃啊。因此,大多数木马驱动都隐藏在“非即插即用驱动程序”下面,而这里面的则是那些虚拟设备了(注:非即插即用驱动程序并非就是虚拟设备驱动程序,这涉及到以前老版系统中的一些个问题,这里不再细说,您只需要明白,在当前的情况下,这里面大多都是虚拟设备驱动程序就可以了。)
       选中某一个项点鼠标右键,再选属性,得到下图03-10





    一看到这张图,你最感兴趣的一定是“停止”这个按钮,但我不得不很遗憾的告诉您“是否能停止驱动程序的运行,还要看这个驱动程序是否愿意停止运行”,是不是失望了?呵,应该是意料中的,如果木马可以这么轻易的停掉,它们还混什么呐?从这里不要奢望得到额外收获,我们只需要了解一点就够了,这个驱动的状态是“已经启动”。
接下来要看的是“驱动程序详细信息”这一栏。点一下,得到下面的这张图03-11





    看到没?这里面的就是驱动程序对应的文件了,至于下面的提供商、版权什么的,参考一下也就得了,如果木马愿意,它可以说它是“天宫”出品,版权属于“玉皇大帝”,那这里会丝毫不打折扣的给它显示出来,你说能信吗?
按上面说的方法,你可以查看所有系统中加载的驱动程序,但很显然,这么做的确是很麻烦,那有没有省事点的方法呢?有,我们看下图03-12



    看到上面这张图是不是有点眼熟?对了,就是上面我们查找模块时用到的图,打开方式同上,向上翻就可以看到了。蓝条选中的那个,不就是与图03-11中显示的是一个么。这里面列出了所有的驱动程序,不用一个一个找了。
到这里是不是有朋友有点火大了?明明有简单的法子,却带着我们绕了这么大一个圈子。呵,上图中的系统信息,其实也就是系统自带的一个工具,属于专业工具范围内的,且并不是太好使,木马想在这里隐藏信息很容易,而且禁止这个的运行也很简单。我们需要多了解几个法了,以备不时之需,另外,我们需要的是尽量多的学一些知识,这才是根本,了解了原理、懂得了知识,才能真正的成为高手,高手绝非只会使用工具。
    说到工具,那我们再看看专业工具对驱动程序的显示:



    打开狙剑--à选择基本功能中的“内核模块”,看到没?dmload.sys不就在这里么。这么多,又如何来区分哪个是正常的哪个是可疑的呢?很简单,方法与我们筛选进程是一样的,按右键---à选择“隐藏微软签名项”,剩下的,就是非系统的驱动了。
    这里同样提供了“停止运行”、“卸载模块”等功能,但我还得遗憾的告诉大家,卸载它也得它自己愿意才行,但想来木马是不会愿意被卸载吧,那我们就没办法了么?有,方法仍然与上面的相同,从自启动程序入手,禁止它的加载;或强制删除它的文件。
    那驱动级木马是不是就是真正的无进程呢?进程列表中找不到任何一个驱动程序的进程,而它也不像模块与线程一样,在其它进程内能够找到,是不是真的可以无进程运行呢?当然不是,我前面已经说了,一个程序的运行,一定、确定以及肯定的会依托一个进程,那这些驱动在哪个进程里呢?那就是System进程,它们是做为系统的一部分来运行的。



疱丁解马-木马查杀深度剖析之进程篇(四)


http://bbs.kafan.cn/viewthread.php?tid=172653&extra=page%3D2





[ 本帖最后由 於陵闲云 于 2007-12-18 18:11 编辑 ]

评分

参与人数 1经验 +2 收起 理由
huxiqiuzhen + 2 您的付出是论坛发展的长久动力!

查看全部评分

xrw
发表于 2007-12-17 20:38:37 | 显示全部楼层
谢谢,学习中
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-11 11:18 , Processed in 0.126545 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表