知识屋:更实用的电脑技术知识网站
所在位置:首页 > 网络安全 > 病毒学院

木马查杀深度剖析之进程篇(七)

发布时间:2011-06-21 14:50:04作者:知识屋

第四种无进程木马就是利用技术手段隐藏进程的木马

  

这显然就不属于无进程了,上面说的三种,的确是没有自己的进程,只是利用了其它的进程。而利用技术手段隐藏进程的木马,则是有自己的进程,但是如果你破解不了他的隐藏技术,那你就看不到它的进程。就像上面我们拿出来的那个HIDE.exe一样,在任务管理器中看不到它的进程,而在狙剑中却能看到,这就是隐藏与破解隐藏后的结果了。

  

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

  

同时,需要注意的是,隐藏进程的技术同样适用于隐藏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到底是什么样子的,看下图(04-14):

 

依次选择狙剑—à扩展功能—àSSDT检查—à筛选可疑项,就可以看到上图,那就是一个SSDT表,从左到右依次是序号、当前地址、所在模块、HOOK类型、原地址、函数名。


 

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜