实战计算机木马检测(上)

日期: 2009-11-11 作者:王荣禄 来源:TechTarget中国

    经济利益的驱使,使地下木马产业日趋成熟,形成了包括漏洞挖掘者、木马作者、包马人、流量商、包马人下家等角色在内的完整产业链。木马数量激增,给互联网安全带来了严峻的挑战。某大型国企日前对其2009年上半年的防病毒报告进行抽样分析,报告显示,在排名前十位的风险类型中,木马类型的风险有7种(占全部风险类型的64.8%),成为该企业网目前面临的最大威胁。

    当前针对终端计算机木马的检测方法主要有防病毒软件检测和手动检测两种。手动检测方法一般是借助辅助工具,从查看端口、进程、服务项、启动项和定位到文件处理等对木马进行全方位检测; 手动检测木马的一般流程如图1所示。常用的辅助工具有Netstat、TCPView、FPort、Wsyscheck、XueTr、IceSword、Process Explorer、Autoruns和天琊等。对计算机木马的手动检测可分为以下五大步骤。

  1. 检查异常端口

  木马入侵的目的通常是为了控制服务端、窃取用户信息,要达到这一目的,客户端和服务端之间必须建立网络连接,而网络连接通常要涉及进程端口,所以,检测木马可以从检查异常端口入手。为了便于分析,在查看端口前,先关闭任务栏中所有非必要的进程,然后用命令或者其他辅助工具来查看异常端口。

  (1) 用系统自带的netstat

  大多数系统都自带有网络状态检测工具netstat,在命令行提示符下输入“netstat -a-0”,可以查看所有打开的端口及激活该端口对应的程序的进程标识符(PID),如图2所示。

  按组合键Ctrl+Alt+Del,打开任务管理器,查找PID对应的进程,如图3所示,PID为920的进程,其映像名称为IEXPLORE.EXE,这是系统浏览器进程,可是这之前在任务栏里已经把浏览器关闭了,而此时IEXPLORE.EXE还在运行,可以初步断定这是一个可疑进程。

  (2)端口枚举工具

  虽然用系统自带的netstat工具可以查看所有打开的端口及激活该端口对应的程序的进程标识符(PID),但是,有些操作系统下的netstat没有“-a-0”选项,所以无法找到激活某端口对应的进程,而有些操作系统甚至没有netstat工具,此时,需要借助端口枚举工具。

  Winternals Software出品的TCPView和FoundStone出品的FPort都是优秀的端口枚举工具。TCPView的功能类似于“netstat -a-0”; FPort除了列出本地系统中所有打开的TCP和UDP端口外,还给出该端口对应的进程的PID、进程名称和完整路径等信息。

  此外,Wsyscheck、XueTr、IceSword和天琊等辅助工具都有查看端口状态的功能,而且这些工具都是图形用户界面,便于操作和分析。

  2. 检查进程

  狡猾的木马都有很强的隐藏功能,其进程一般不会出现在任务管理器里,而且有些木马的通信甚至不需要涉及端口,所以,通过端口查找相应木马进程的方法有很大的局限性。再者,木马一般都有进程守护功能,有时候即便找到了木马,也很难直接终止木马进程。查找木马进程一般要借助辅助工具,Wsyscheck、XueTr、IceSword、Process Explorer和天琊都是性能优异的木马查杀工具,在检测木马进程方面各有特点,结合起来使用效果会更好。

  (1)查看进程文件属性

  正常情况下,通过进程文件属性,除了可以查看文件的类型、位置、大小、创建时间等信息外,还可以查看到详细版本信息(包括产品版本、产品名称、公司等信息),而病毒木马的文件一般没有版本信息,或者只是一些简单、无规则的字符组合。进程文件属性是辨别木马的一个重要参考选项,Wsyscheck、XueTr和Process Explorer都有查看进程文件属性的功能。

  (2) 查看进程线程

  一个进程一般由若干个线程组成,有时木马会将自身的线程注入到其他合法的程序中,然后启动这些进程来达到运行自身的目的,从而安全地躲过了病毒木马查杀软件。Wsyscheck、XueTr、Process Explorer 、IceSword和天琊都有查看和结束进程线程的功能,其中前三款还有“挂起线程”和“恢复线程”功能选项,当结束、挂起/恢复某些线程时,可以通过观察比较终端的变化情况来判断进程是否被注入了木马线程。以用XueTr查看灰鸽子木马进程为例,如图4所示,它是由两个线程组成。经测试,只要挂起其中任何一个,然后再查看系统的端口状态,如图5所示,端口的连接状态由原来的ESTABLISHED变成了CLOSE_WAIT,客户端也失去了与服务端的连接,由此可以判定,这两个线程都是灰鸽子木马进程的线程。

  (3) 查看进程模块

  DLL文件是指扩展名为.DLL的文件即“动态链接库”,每个进程运行时都会调用几个到上百个不等的动态库,每个动态库都完成某一部分特定的功能,有时木马会通过DLL注入的方式来达到运行自身的目的。通过查看进程模块可以查看进程中调用的动态库, Wsyscheck、 XueTr和天琊都有查看进程模块的功能,其中Wsyscheck和XueTr在查看进程模块方面各具特色,查看进程模块时推荐使用Wsyscheck和XueTr。

  (4) 在线查询

  分析进程过程中,常会遇到很多陌生的可疑进程,当通过文件属性、线程信息、模块信息等都无法辨别是否为病毒木马进程时,可以借助一些免费的在线扫描网站,例如http://www.virscan.org。该网站通过多个不同厂家(目前37个)提供的最新版本的病毒检测引擎对上传的可疑文件进行在线扫描,扫描结束后可以立刻给出检测结果,告知用户有多少杀毒软件报告发现病毒,从而给出该文件的可疑度。

  文件扫描结果只能作为分析进程的一个参考依据,因为扫描引擎也有误报的可能,建议到网上搜索一下是否有该进程的相关信息,以便进一步分析。可以到Google或者百度等搜索引擎上输入关键字进行查询。此外,Process Explorer还提供了在线搜索这一特殊功能,可在线搜索相关进程信息。

  (5) 终止进程

  在手动检测木马过程中,通常需要通过终止进程来排查可疑进程,而木马软件一般都有很强的进程守护功能,在任务管理器里或者普通的木马检测工具一般无法直接终止进程。Wsyscheck、IceSword、XueTr和Process Explorer都有很强的终止进程的能力。经测试,当同时运行这五款软件时,前4款软件都无法终止天琊进程,而天琊却可以轻松终止其他进程。清除顽固木马时,建议使用天琊。

  3.检查服务和注册表项

检查服务

  木马潜入宿主计算机后,通常会将自身注册为系统服务从而躲过病毒木马防护软件的查杀,所以手动检测木马时,还需关注系统服务项。在Windows里,通过管理工具可以查看系统的所有服务项,但是,这种查看方式通常效果不佳:首先,它要求检测人员对所有服务项都比较了解; 其次,这种方法对隐藏的服务项无能为力。所以,借助辅助工具来排查系统服务项,效果会更好。

检查服务2

  Netstat -a-o命令界面图

  推荐首选辅助工具Wsyscheck。

  4. 检查木马启动项

  虽然通过终止木马进程和线程、删除服务和注册表项均可以结束木马进程,但是并没有达到根除木马病毒的目的。自启动技术是每一款优秀木马必不可少的功能,这样才可以保证木马不至于因为用户的一次关机操作而彻底失效,所以要根除木马,还需检查木马可能自动加载的地方。

  (1) 查看启动组

  有时候木马不在乎自己的行踪,它更注意的是能否被自动加载到系统中,因为一旦木马被加载到系统中,任你用什么方法都很难将它删除,因此,启动组是木马自动加载运行的好场所。要注意经常检查启动组,看是否有陌生的启动项,注册表中启动目录是否被修改。

  (2) 查看win.ini和system.ini等系统配置文件

  打开win.ini,在 [windows]字段中有启动命令“load=”和“run=”,在一般情况下“=”后面是空白的,如果有后跟程序,那么这个file.exe很可能是木马。

  打开system.in,在 [boot]字段中,正常情况下是“shell=Explorer.exe”,而如果是“shell=Explorer.exe file.exe”,那说明已经中木马了,file.exe就是木马服务端程序。另外,在System.ini中的[386enh]字段,要注意检查在此段内的“driver=路径程序名”,这里也有可能被木马所利用。再有,在System.ini中的[mic]、[drivers]、[drivers32]这三个字段,这些段也是起到加载驱动程序的作用,但也是增添木马程序的好场所。

  (3) 查看注册表

  木马还可能隐藏在注册表中用于系统启动时自动执行程序的键值中。如果逐个键值查找,不但麻烦而且还可能漏项,建议从系统配置实用程序里的“启动”项查找。在“开始”菜单里的“运行”对话框中输入“msconfig”,后点击“确定”按钮,进入系统配置实用程序,点击“启动”进入如图6所示的界面,图中列出了注册表中所有伴随系统启动的启动项,“位置”栏对应的就是启动项在注册表中的位置,“命令”栏对应的就是启动项在注册表中的键值,查看是否有异常的键值。

  (4) 文件关联

  修改文件关联是木马常用的手段。所以需要经常查看HKEY_CLASSES_ROOT…shellopencommand主键,查看其键值是否被修改。

  (5) 钩子函数和映像劫持

  钩子(Hook)函数和映像劫持等也是启动木马的常用手段,所以检测木马时,需关注这两项。

  查看钩子时,需特别留意SSDT (System Services Descriptor Table)、FSD (File System Driver)等项,推荐使用XueTr。用XueTr可以查看SSDT、Shadow SSDT、FSD、消息钩子、内核钩子、Object钩子和系统中断表等8种被挂钩的情况,被挂钩函数会以红色字体显示。对于被挂钩的位置,可以通过点击右键直接恢复被挂钩即可。

  查看映像劫持时,推荐使用Autoruns,可以直接将这些项删除,或者通过注册表的路径找到对应项,然后再手动删除,但是通常只有Administrator和System才有权限对这些项进行修改和读写。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • 如何手动杀新病毒

    上网最恐怖的事莫过于新病毒出来的时候,尽管电脑上我们都装有各种强大的杀毒软件,也配置了定时自动更新病毒库,但病毒总是要先于病毒库的更新的……

  • 网络端口安全防护技巧 网络安全从根抓起

    众所周知,计算机之间通信是通过端口进行的,默认状态下,Windows会在你的电脑上打开许多服务端口,黑客常常利用这些端口来实施入侵,那么怎样在注意端口安全呢?