您的位置:首页 > 其它

木马的隐藏与自我保护技术

2007-03-26 09:16 411 查看
   大家可能用一些工具时会用到SSDT检查图,可能会显示的结果是某个驱动(CdnProt.sys)HOOK了一堆的服务函数。你是不是感觉到很高深,莫怕,今天看到一位前辈通过实例给我们很贴切的解释了一下各个名词.
  下面我用一个比喻来形容一下儿这些电脑名词与木马技术的实现机制。
  Windows(操作系统)就像一个为我们服务的管理公司,这个公司呢帮我们管理着我们的电脑。一个公司当然不会是一个人,他们有很多人来完成不同的工作。
  他们的工作流程是这样的,有一个服务员是跟在我们身边,当我们有什么事情要办的时候呢,就把事情告诉这个服务员,服务员就把我们的要求报上去,交给负责此事的部门去处理。再把结果告诉我们。
  
  SSDT是什么呢?就是一个指示路标,告诉服务员什么事情应该交给哪个部门去做。我们想结束进程,然后会把这个任务交给服务员,服务员查看SSDT这个路标,上面写着,“结束进程是由NtTerminateProcess这个部门负责的”,然后服务员就会把工作交给这个NtTerminateProcess来处理。再把结果带回给我们。(注:这个比喻太精彩了)
  
  HOOK是什么呢?HOOK是一种技术,这种技术就是改变SSDT的路标内容,改为“结束进程是由木马负责的”,这时,服务员就会把我们的结束进程的工作交给木马去处理了,木马会查看我们要结束的是谁,如果与它无关,它就接着行使服务员的工作,再把工作传给NtTerminateProcess,然后把结果告诉服务员,由服务员再告诉我们。如果是结束它自己呢?它就不把工作向上报了,直接告诉服务员,这个工作是无法完成的。然后服务员再把结果告诉我们,我们就看到最上面的那个错误提示了“无法完成操作”。(更是比喻的好啊)
  
  对付HOOK-SSDT的技术呢,我们只需要把SSDT给恢复了就行了,恢复的操作就是用原始的SSDT来重新把正确的路标写回去。一般这一层次的木马这样做完之后,就可以删除结束木马了。
  然而我们有时候还会看到INLINE-HOOK,这又是什么东东呢,和HOOK有什么亲密关系呢.再来看我们大师的解答:
  INLINE-HOOK是比HOOK更高一层的技术,那么什么又是INLINE-HOOK呢?       我们仍然以上面的例子来解释:
  
  服务员查过路标后,将把工作交给特定的部门去做,一个部门也不会是一个人,流程会是这样:交给部门的接待员,再由接待人员报上去、报给部门经理的秘书、部门经理的秘书再报给部门经理,再由部门经理实际分派人手去做。
  而INLINE-HOOK技术呢?就是木马打份成了接待人员并把真的接待人员给替换了。
  木马如果是替换的接待人员,那是最初级的INLINE-HOOK,如果它更高级还可以替换秘书、副经理等,但它必竟不是接待人员也不是秘书不是副经理,但它在那个位置上则必须要做那个位置的工作,所以,一些跟杀它无关的工作,本来它也想做好的工作,却可能由于业务能力不足(INLINE-HOOK的技术不足),而做坏,导致正常工作总是出错,无法也正常人员在位时相比。(表现为机器总是莫名奇妙的出问题、死机或蓝屏)
  
  是否理解什么是HOOK、什么又是INLINE-HOOK、为什么机器总是出问题了?通过上面的讲解,我们知道了为什么无法结束进程、无法删除启动项了。我们只要再把INLINE-HOOK恢复了,就可以顺利的结束进程并删除启动项了。
  当我们把进程结束了,把启动项删除了后,想删除文件时,是不是发现文件无法删除呢?这就是一些木马如(CNNIC)用到的另一种文件保护技术了,FSD-HOOK、FSD-INLINE-HOOK,这两个又是什么东西呢?

  FSD是英文单词的开头字母缩写,即:文件系统驱动(File System Driver)再用上面的例子举例:
  一般性的工作呢~我们会交给Windows的一般部门去完成。但文件相对于电脑就像是我们的资产,是有形的东西、贵重的东西。所以,Windows就专门成立了一个更深层次的部门来负责对文件的管理,其它部门接到与文件有关的工作时,都会转交给文件部来负责处理。
  FSD-HOOK呢,就是把文件部的门牌换到了木马门前,其它部门就把工作交给了木马,木马会进行过滤,发现没有删除自己的操作时,再把工作转交给文件部。如果有,当然就不转交了。
  FSD-INLINE-HOOK呢,不用我说,大家也都知道吧,就是把文件部的工作人员直接替换了,部门还是那里,但人变了。效果一样,但隐蔽性更强,同样,也更不稳定了。
  
  这里再插上一句讲一讲为什么不稳定了,上面说过,当在装有CNNIC的机器上运行IceSword(冰刃)时,会导至蓝屏死机,其原因,就是因为CNNIC为了保护自己的进程不被结束,INLINE-HOOK了两个与进程有关的服务。而Ice也为了自己的进程不被结束,INLINE-HOOK了同样的服务。如果他们采用的INLINE-HOOK是一样的,那只是前面的被后面的取代,也不会崩溃。但遗憾的是,他们虽然用的同一技术,HOOK的同一地方,但却并不完全一样。CNNIC HOOK了7个字节,而Ice HOOK了5个字节,想一想如果两个都存在这成什么了,系统不崩溃才怪呢。所以,机器的崩溃是随机的,只要你用到了某一有冲突的软件,随机将变为必然。(哦,有时候道理就这么简单)
  
  好了,我们恢复FSD的HOOK及INLINE-HOOK,然后再删除文件试试,结果如何?是不是,有的可以删除了,但有的DLL文件却仍然无法删除?进程被结束了,HOOK被恢复了,为什么仍然无法删除呢?
  

  曾经流行一时的无进程木马采用的主要手段“DLL进程注入”!(如CNNIC就采用了这种技术)
  汗~~CNNIC用到的技术还真多啊~~现在知道为什么我会拿它作例子来讲高级木马的隐藏保护技术了吧?
 这些就是CNNIC注入到其它进程中的模块,虽然在进程列表中你看不到它们,但它们的的确确的正在工作,正在使用中的文件,当然你删除不了啦~
  DLL文件是指扩展名为.DLL的文件即“动态链接库”,(注:扩展名只是外在形式,只要格式对,起什么名字都可以的,不能作准)
  每个进程都用到了几个到上百个不等的动态库,每个动态库都完成了某一部分特定的功能。
  一台电脑中的动态加载的模块至少几百多则上千,从中找出哪些是木马的是有点困难。当然了,我们的困难也是木马钟情于这种技术的原因。用“搜索可疑模块”可以把可疑的全部列出来,找到了就简单了,“卸载”+“删除”就搞定了!
  
  通过上面的讲解。至此,你已经知道了CNNIC的大部分保护技术了。之所以说大部分,是因为还有一些小技术的存在。比如说:每次启动电脑都随机改名的影子驱动,影子驱动嘛当然是做为主驱动的保护者备份者而存在啦,当你只删除了主驱动而遗漏了影子驱动时工作就等于没做。还有电源关闭通知技术:就是关机时,WINDOWS会通知CNNIC,偶要关机啦~~你还有什么事情要做不?CNNIC会说,稍等一等,等我检查一下子我的启动项是不是还在~~呵,也就是说,即使你删除了,但一重启它就又出来了。因为关机时它又重新写回去了。
  
  呵,这些就不多讲了,必竟,这些都没啥子太高深的技术含量~含金量偏低,不值的研究~考验的是清除的人是否心细而已.(对我这个菜鸟还是不知道哦.看来学习路好远啊!)
  

  希望对大家的学习能有帮助!
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息