打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
手工查杀木马病毒3
第三种无进程木马是纯驱动型木马
 
  什么是驱动型木马呢?就是全部功能放到了驱动程序中去完成(当然了,纯驱动型的并不多见,大多驱动型木马都是配了一个程序。)

  什么又叫驱动程序呢?驱动程序顾名思义就是驱使设备动起来的程序。^-^ 呵,可能不准确,但却很容易理解。其作用是让特殊的硬件和Windows操作系统可以交换数据,比如我们按下了键盘的A键,那键盘驱动就要告诉Windows系统“这家伙按下了A键,你看咋办吧”,它只是告诉一声,后面的工作就由系统来处理了,系统会根据不同的情况进行不同的处理,如果你是在打字,那就把A这个字符显示在你的输入页面中,如果你用的是五笔,显然直接显示个A是不行的,Windows系统就会把你输入A的这个信息转给了输入法程序……最终实现你按A的目的。

  但驱动又怎么会与木马有了关系呢?这就要从头说起了,话说当年木马与驱动本来是分处于两个天地,互不相干的。但随着杀毒软件、安全工具等木马杀手对木马的围追堵截越来越是凶狠,木马终于感到有点穷途未路了,在最后关头,它盯上了驱动程序!为什么盯上了驱动呢?因为驱动程序由于其特殊性,使得它在系统中有着超越一切的权力,而且有着优先加载执行的优势,它是做为操作系统的一部分来运行的。详细情况涉及到系统权限的划分与优先级设定,有兴趣的可以查阅相关资料,这里只要明白一点就行“系统的权限分为两种R0与R3,一般的程序全部为R3权限,其行为受到了很多限制;而操作系统与驱动则为R0权限,拥有对整个计算机的全部权力,可以为所欲为”。

  举例来说,杀毒软件就像一个公司的人力部,对员工的行为进行考核,发现不好的就给予惩罚或辞退。如果木马总是隐藏在员工群里,那么就会受到严格的检查与监管,一旦被查出有问题就会被立即辞退。而操作系统就是公司的董事会或股东大会,驱动程序是董事或股东,有着超出人力部门监管的权力。

  为了逃脱追杀,开始有木马以驱动程序的身份出现,当然了,木马这个驱动是没有硬件设备的,呵,如果中一个木马它就附带一个设备,那么,哪怕它只是给一支鼠标,我也会冲天大喊“木马们,都到我这里来吧”。所以它们有一个好听且很容易听明白的名字“虚拟设备驱动程序”。

  当木马成为公司的董事的时候,身为人力部门的安防程序开始感到郁闷,明明发现那家伙就有问题,但偏偏没权力辞退它。于是,杀毒软件开始谋求同样的身份,于是杀毒软件也开始挂驱动,使其有了董事的身份来兼人力监管,于是,新一轮的斗争开始了。而这一轮的斗争更是残酷,本来在员工层的斗争转到了高层,本来斗争的结果也就是员工被辞退,还不至于伤筋动骨涉及公司根本,但现在却是一不小心就让公司整个解体了。对应于我们这些可怜的用户来说,杀软与木马的斗争,一个不好惹来的就是蓝屏死机、系统崩溃。

  OK,了解了驱动程序后,我们就要回到正题来了,我们如何知道系统加载了哪些驱动呢?又如何知道哪些驱动是正常的系统驱动,哪些是木马的驱动呢?
 
  在桌面我的电脑图标上按右键,依次选择“属性---à硬件---à设备管理器”就可以打开上面的窗口了,再勾选上“查看----à显示隐藏的设备”就可以看到“非即插即用驱动程序”。

  除了非即插即用外,其它的同级项目都是您机器上的硬件及它们的信息、资源、驱动等,他们是根正苗红的正经设备。由于这些都与硬件有关,所以,木马动它们的可能性很小,必竟木马也不想你的机器崩溃啊。因此,大多数木马驱动都隐藏在“非即插即用驱动程序”下面,而这里面的则是那些虚拟设备了(注:非即插即用驱动程序并非就是虚拟设备驱动程序,这涉及到以前老版系统中的一些个问题,这里不再细说,您只需要明白,在当前的情况下,这里面大多都是虚拟设备驱动程序就可以了。)

       选中某一个项点鼠标右键,再选属性。在出现的这个界面里,恐怕你最感兴趣的一定是“停止”这个按钮,但我不得不很遗憾的告诉您“是否能停止驱动程序的运行,还要看这个驱动程序是否愿意停止运行”,是不是失望了?呵,应该是意料中的,如果木马可以这么轻易的停掉,它们还混什么呐?从这里不要奢望得到额外收获,我们只需要了解一点就够了,这个驱动的状态是“已经启动”。
 
  接下来要看的是“驱动程序详细信息”这一栏。点一下。
 
  看到没?这里面的就是驱动程序对应的文件了,至于下面的提供商、版权什么的,参考一下也就得了,如果木马愿意,它可以说它是“天宫”出品,版权属于“玉皇大帝”,那这里会丝毫不打折扣的给它显示出来,你说能信吗?

  按上面说的方法,你可以查看所有系统中加载的驱动程序,但很显然,这么做的确是很麻烦,那有没有省事点的方法呢?有,运行"C:\Program Files\Common Files\Microsoft Shared\MSInfo\msinfo32.exe"或直接运行msinfo32。
 
  是不是有点眼熟?对了,就是上面我们查找模块时用到的东东,打开方式同上,向上翻就可以看到了。蓝条选中的那个,不就是与刚才显示的是一个么。这里面列出了所有的驱动程序,不用一个一个找了。

  到这里是不是有朋友有点火大了?明明有简单的法子,却带着我们绕了这么大一个圈子。呵,这里的系统信息,其实也就是系统自带的一个工具,属于专业工具范围内的,且并不是太好使,木马想在这里隐藏信息很容易,而且禁止这个的运行也很简单。我们需要多了解几个法了,以备不时之需,另外,我们需要的是尽量多的学一些知识,这才是根本,了解了原理、懂得了知识,才能真正的成为高手,高手绝非只会使用工具。
 
  说到工具,那我们再看看专业工具对驱动程序的显示:
 
  运行Wsyscheck,在“软件设置”里把“模块、服务简洁显示”的勾去了,然后点服务管理。看到没?dmload.sys不就在这里么。这么多,又如何来区分哪个是正常的哪个是可疑的呢?很简单,方法与我们筛选进程是一样的,按“模块、服务简洁显示”勾上,剩下的,就是非系统的了。

  这里同样提供了“停止运行”、“卸载模块”等功能,但我还得遗憾的告诉大家,卸载它也得它自己愿意才行,但想来木马是不会愿意被卸载吧,那我们就没办法了么?有,方法仍然与上面的相同,从自启动程序入手,禁止它的加载;或强制删除它的文件。

  那驱动级木马是不是就是真正的无进程呢?进程列表中找不到任何一个驱动程序的进程,而它也不像模块与线程一样,在其它进程内能够找到,是不是真的可以无进程运行呢?当然不是,我前面已经说了,一个程序的运行,一定、确定以及肯定的会依托一个进程,那这些驱动在哪个进程里呢?那就是System进程,它们是做为系统的一部分来运行的。

 
  第四种无进程木马就是利用技术手段隐藏进程的木马
 
  这显然就不属于无进程了,上面说的三种,的确是没有自己的进程,只是利用了其它的进程。而利用技术手段隐藏进程的木马,则是有自己的进程,但是如果你破解不了他的隐藏技术,那你就看不到它的进程。

  进程是如何隐藏的呢?这无可避免的会涉及到一些技术问题,下面我们尽量简单明了的说一说,详细的实现细节,请参阅相关资料。在这里,我所想达到的目的,并非是让您也同样写出一个能隐藏自身的木马,而是让您明白,什么样的手段可以隐藏木马的进程,木马又为什么会隐藏,而想破解这种解藏将它揪出来,又需要什么样的技术,好有针对性的选择一些专业工具。

  同时,需要注意的是,隐藏进程的技术同样适用于隐藏DLL模块程序、隐藏驱动程序,下面为了描述方便,统一说为进程。

  Windows系统给我们的开发人员提供了几种列出系统中所有的进程、模块、与驱动程序的方法,最常见的也是最常用的方法就是调用系统API:CreateToolHelp32Snapshot、EnumProcess、EnumProcessModules等,如果您不是开发人员,您不用关心这几个是什么东西,只需要明白,他们是获取进程列表的第一层手段,我们调用这几个其实就是在告诉系统,我们需要进程列表,然后系统就会将列表返回给我们。

  而这几个API在接到请求后又做了什么呢?他们会调用ZwQuerySystemInformation,ZwQuerySystemInformation会调用KiSystemService切入内核进入R0权限,然后自SSDT表中查取得NtQuerySystemInformation的地址,并调用其指向的实际代码,而NtQuerySystemInformation的作用则是自系统的数据结构中取相应的数据,再顺原路返回去。

  在中间任何一个环节进行拦截都可以实现隐藏进程的目的,这种拦截有一个名字叫做“HOOK”,在切入内核进入R0权限前进行HOOK,称为应用层HOOK,而在之后进行HOOK则是内核HOOK,后者需要用驱动才能实现了。

  什么是HOOK?什么是SSDT?我们来举例说明:

  Windows操作系统就像一个为我们管理电脑的服务公司,而他的工作机制是逐级上报,各负其责的,他派了一个服务人员时刻的跟着我们,看我们都有什么要求。

  当我们想查看系统中都有什么进程时,我们会告诉服务员,我们想了解当前都有哪些进程,那么服务员就会把我们的要求报上去,报给谁呢?他要先知道哪个部门负责哪个工作才行,SSDT表就是做这个的,SSDT表就像是一个路标,指明了什么样的工作应该由哪一个部门负责处理。通过查表得知负责的部门后,工作就被移交到了那个部门,工作完成后,部门会把工作结果交回给服务员,服务员再交给我们,而我们也就得到我们想要的结果了。

  应用层HOOK呢,就像是服务员被木马偷偷的替换了,当我们提出要求时呢,他会检查是否对他有害,或将对他有害的信息去掉,比如我们想查看进程,那他在将结果交给我们时,却把木马的进程自结果中抹去了,这样,我们自然是看不到木马进程了。

  而最常见的内核HOOK,则是HOOK-SSDT,上面说了SSDT就是一张表,标明了什么工作应该由什么部门负责。而SSDT HOOK也就是木马将表上的内容给改了,本来交给A部门负责的工作被改成了交给由木马负责,这样,服务员在上报我们的请求时,一查表发现查看进程的工作是由木马负责的,他就把这请求交给木马了,而木马呢?他可是知道表中原来的内容是什么的呀,他只是对请求进行一下过滤,发现没有对自己有害的,就直接转交给原部门了,对自己有害的,自然也就视情况滤掉或涂改了。
  我们先看看SSDT到底是什么样子的。
 
  依次选择狙剑(在第十一章中讲解他的使用)---à扩展功能---àSSDT检查---à筛选可疑项,就可以看到上图,那就是一个SSDT表,从左到右依次是序号、当前地址、所在模块、HOOK类型、原地址、函数名。
 
  上面都是狙剑自己对SSDTHOOK,当前安全软件很多也用到了SSDT-HOOK技术来实现对系统的安全防护。

  例如上面的第11号函数,所在模块是“D:\workspace\狙剑\SnipeSword.sys”,HOOK类型是“HOOK”,函数是“NtAdjustPrivilegesToken”。这是狙剑本身对SSDT的一个HOOK,用的技术就是HOOKHOOK的函数是用于增加进程权限的。HOOK这个的目的是“在木马进程为自己增加权限的时候进行拦截,提醒用户注意”这在主动防御一章中会详细讲解。

  每一个函数都实现了某一种功能,比如:结束进程是由NtTerminateProcess来完成的,如果HOOK了这个,那么在进程结束前,就有机会更改结果了,可以拒绝被结束。
 
  当你试图在任务管理器中结束狙剑的进程时,系统会拒绝你的操作,其实这并不是系统拒绝的,而是狙剑自己,由于狙剑HOOKSSDT,所以,结束进程的工作服务员都交给他去做了,他一旦发现结束的就是他自己,那他直接告诉服务员这个进程不能结束,然后服务员就把这个结果给我们了,其实我们的这个请求并没有真的到达应该送交的部门。

  而上面提到的查看进程用的NtQuerySystemInformation也在这里面,注意找一找就会发现了,如果想隐藏进程就可以把这个给HOOK了。

  需要特别注意一下子“HOOK类型”,上面的显示是“HOOK”,还有一种是“Inline-HOOK”,什么是Inline-HOOK呢?

  上面说过了,SSDT就像是一个标明了什么工作由哪个部门来做的表,SSDT-HOOK就是更改了这个表的指向。而Inline-HOOK呢?他并没有更改表的指向,查找进程的工作在表中仍然指向了负责查找进程的部门。但是呢,木马却把那个部门中的人员替换了,这样仍然能达到它的目的。

  Inline-HOOK更加的复杂、更加的邪恶、也更加的不稳定,而应用范围却是更加的广泛,查找起来更加的困难。要知道,对比SSDT表中的指向是否正确,是否指向了正确的部门,要简单一些,不就是一张表么,拿原来的表对比一下就知道了。但Inine-HOOK却是替换的公司人员,Windows就像一个大公司,有成千上百的人,天知道他替换了哪一个。
 
  当试图结束IceSword.exe时,会提示“无法完成操作。内存分配访问无效”,IceSword.exe是另一款知名的安全程序“冰刃”的主程序,当您试图在任务管理器中结束IceSword.exe的进程时,就会出来“无法中止进程”的对话框。

  但是,当你检查SSDT表时,却发现,它并没有对SSDT进行HOOK,那它是如何实现进程不被结束的呢?
 
  选择狙剑---à扩展功能---à内核代码扫描

       当然了,正常情况下,列表应该是空的,但当我运行起IceSword.exe(冰刃)后,再检查,就会出来7Inline-HOOK项了。

  内核代码扫描,是对内核代码中的Inline-HOOK进行检查,并列出被InlineHOOK的项。IceSword.exe的驱动IsDrv122.sysHOOK7个函数,前六个的功能分别是“结束线程、结束进程、创建进程、创建线程、打开线程、打开进程”后面的那个与进程无关我们不去理它。但从上面6Inline-HOOK来看,你应该知道为什么他不会被结束了吧?

       还不能确定吗?那么,选中这些Inline-HOOK项,然后再在Inilne-HOOK的列表中按右键,选则“恢复选中的Inline-HOOK”,然后,你再打开任务管理器,试试结束IceSword.exe的进程,是不是可以结束了?
 
  讲到这里,不知朋友是否发现了一问题?我上面说了,NtQuerySystemInformation是负责查询进程的,但是有些木马运行起来后,无论在“SSDT检查”中还是在“内核代码扫描”中,都没有任何有关这个函数的任何HOOKInline-HOOK的痕迹,这又是怎么回事呢?
 
  不要着急,我们接着讲更深层次的进程隐藏技术。

简单的总结一下:

程序就像是为了实现某一目的而定的计划书;进程呢?就是组织工人分配资源开始执行这份计划;而Windows操作系统呢?就是一个为我们管理电脑也是管理这些执行计划的工人的服务管理公司;我们有什么要求呢?就交给服务员将我们的要求提要给Windows,由Windows来组织工人执行我们的要求,并将结果返回给我们。如果木马替换了服务员、更改了SSDT表、或替换了Windows服务公司某职能部门的人员,我们得到的可能就是一个错的结果,或我们的要求得不到执行,就像结束进程一样。


  如果不替换任何人员,也不更改SSDT表,还有没有办法隐藏进程呢?有的,那就是更改系统的数据结构。

  举例来说,我们查询进程其实就是向Windows发出“查询当前正在有哪几组工人正在工作”的请求,而Windows在内部又是如何查询的呢?他当然会去人力部,因为人力部有工人的档案啊,在职的离职的都有,只要将档案一翻,就明白当前有多少工人了,再把结果给我们,它的工作就完成了。

  更改数据结构,也就是更改档案了,虽然人员都没问题,但档案已经被修改了,木马会偷偷的潜入人力部把它自己的档案从人力部的档案柜中偷偷的销毁,这样,当系统去查询的时候,就查不到他的档案了,系统会认为没有这组工人,虽然查询过程与查询的人员都没有问题,但结果仍然是错误的。
 
  而有些木马病毒之所以可以隐藏,就是因为它把系统活动进程链中(即人力部)的进程数据更改了。

  那为什么Windows查不到它,专业工具却可以查到呢?这个道理很简单,因为Windows是正规公司,它的工作流程是固定的,查询工人的事情,他就是去人力部,人力部没有相关工人的信息,他就认为没有这工人,他并不会偿试去其它地方看一看。

  其实,工人们是不可能只在一个地方登记的,进入公司要在人力部登记、领工具却还要在仓库登记、发工资要在财务部登记、吃饭要在食堂登记……

  如果木马只是抹去了活动进程链中的数据,那么还可以从窗口、线程、句柄、对像、Csrss.exe中等许多地方找到它的信息。

  当然了,木马也会尽力的把自己的痕迹全部抹去,并且已经有马儿这么做了。

  于是,基于线程调度链的进程枚举技术就出现了,什么叫线程调度链呢?在系统中CPU的时间分配是以线程为单位的,一个程序要想得到执行,必须要有线程存在于这个线程调度链中,不然,他得不到时间的分配,也就得不到执行的机会。

  还以我们上面的例子来说明,木马可以抹去人力部的资料,反正已经进来了,那里有没有也无所谓了;也可以抹去仓库中的资料,工具已经到手了,抹就抹去吧;也可以抹掉财务的资料,豁出去了,为了完成木马大业就不要钱了;但是他不能抹去食堂的资料,不是么?食堂可是按人员档案备饭的,抹掉了,没他的资料也就意味着没他们的饭吃,还不得给饿死啊?而这关键的他无法抹去的资料也就是系统中的“线程调度链”,抹去了,他自己活不下去。

  但不要小瞧了木马的智慧,它们也有自己的法子,什么办法呢?他们准备了一份假资料,在有人查询时呢,就用假资料替换掉真资料,而在食堂做饭时呢,再用真资料替换掉假资料,也就是自己构造了一个进程调度链。

  开始时还真是没人发现,不过,没有不透风的墙,出来混总是要还的,这技术最后还是让人知道了,即然知道了他们会随时替换,那查询时当然也就知道注意了,于是它又开始想其它办法,斗争就这么持继了下去。

  总之,安全与木马的斗争还远远没有结束,胜负还仍然没有分出(好像也很难分出),剿杀木马的工作仍然任重而道远,还我清净河山的愿景,还需我们大家齐心合力的来实现。

  上面对“进程”从外到里由浅到深的都讲了讲,当然了,讲的绝不对不全,因为实在太多了,就以隐藏来说,各路高人的各种奇思妙想多不胜数,多到根本无法尽述,比如欺骗眼睛的技术,就是你查时不管你,但你看时却自列表中抹掉,让你看不到,就像明明真实的资料放到了你面前,但偏偏有一个阴影档住了某处。

  但不管如何,邪恶永不能战胜正义,只要我们都关注,总有它们无处藏身的一天。

  另外,不得不说的是,查看进程只是检查手段的一种,结束进程也绝不意味着就清除了木马。所以,我们还要继续下去。看看还有什么地方可以抓到它,清除它。

  而下一章,就是另一个关键点,自启动项的检查、隐藏与清除。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
高级木马的自我保护技术与查杀之策(图文详解)
浅析钩子技术
内核编程之SSDTHook(1)原理
window HOOK技术NowCode
应急响应常用工具
木马各种隐藏技术披露
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服