实战计算机木马检测
经济利益的驱使,使地下木马产业日趋成熟,形成了包括漏洞挖掘者、木马作者、包马人、流量商、包马人下家等角色在内的完整产业链。木马数量激增,给互联网安全带来了严峻的挑战。某大型国企日前对其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里,通过管理工具可以查看系统的所有服务项,但是,这种查看方式通常效果不佳:首先,它要求检测人员对所有服务项都比较了解; 其次,这种方法对隐藏的服务项无能为力。所以,借助辅助工具来排查系统服务项,效果会更好。
Netstat -a-o命令界面图
推荐首选辅助工具Wsyscheck。
4. 检查木马启动项
虽然通过终止木马进程和线程、删除服务和注册表项均可以结束木马进程,但是并没有达到根除木马病毒的目的。自启动技术是每一款优秀木马必不可少的功能,这样才可以保证木马不至于因为用户的一次关机操作而彻底失效,所以要根除木马,还需检查木马可能自动加载的地方。
(1) 查看启动组
有时候木马不在乎自己的行踪,它更注意的是能否被自动加载到系统中,因为一旦木马被加载到系统中,任你用什么方法都很难将它删除,因此,启动组是木马自动加载运行的好场所。要注意经常检查启动组,看是否有陌生的启动项,注册表中启动目录是否被修改。
(2) 查看win.ini和system.ini等系统配置文件
打开win.ini,在 字段中有启动命令“load=”和“run=”,在一般情况下“=”后面是空白的,如果有后跟程序,那么这个file.exe很可能是木马。
打开system.in,在 字段中,正常情况下是“shell=Explorer.exe”,而如果是“shell=Explorer.exe file.exe”,那说明已经中木马了,file.exe就是木马服务端程序。另外,在System.ini中的字段,要注意检查在此段内的“driver=路径程序名”,这里也有可能被木马所利用。再有,在System.ini中的、、这三个字段,这些段也是起到加载驱动程序的作用,但也是增添木马程序的好场所。
(3) 查看注册表
木马还可能隐藏在注册表中用于系统启动时自动执行程序的键值中。如果逐个键值查找,不但麻烦而且还可能漏项,建议从系统配置实用程序里的“启动”项查找。在“开始”菜单里的“运行”对话框中输入“msconfig”,后点击“确定”按钮,进入系统配置实用程序,点击“启动”进入如图6所示的界面,图中列出了注册表中所有伴随系统启动的启动项,“位置”栏对应的就是启动项在注册表中的位置,“命令”栏对应的就是启动项在注册表中的键值,查看是否有异常的键值。
(4) 文件关联
修改文件关联是木马常用的手段。所以需要经常查看HKEY_CLASSES_ROOT\…\shell\open\command\主键,查看其键值是否被修改。
(5) 钩子函数和映像劫持
钩子(Hook)函数和映像劫持等也是启动木马的常用手段,所以检测木马时,需关注这两项。
查看钩子时,需特别留意SSDT (System Services Descriptor Table)、FSD (File System Driver)等项,推荐使用XueTr。用XueTr可以查看SSDT、Shadow SSDT、FSD、消息钩子、内核钩子、Object钩子和系统中断表等8种被挂钩的情况,被挂钩函数会以红色字体显示。对于被挂钩的位置,可以通过点击右键直接恢复被挂钩即可。
查看映像劫持时,推荐使用Autoruns,可以直接将这些项删除,或者通过注册表的路径找到对应项,然后再手动删除,但是通常只有Administrator和System才有权限对这些项进行修改和读写。
(6) 其他方式
通常木马还可能通过替换Windows系统本身的一些可执行的文件,如屏幕保护启动和任务计划启动等,或者捆绑到其他应用软件中来实现启动。如果启动某个应用程序后察觉到有中木马的迹象,而重新启动系统后不运行该应用程序时没有发现有中木马的迹象,那么该应用程序很可能已经被木马程序绑定了。通过卸载和重新安装该应用程序可以达到清除木马的目的。
5. 定位到文件处理
当通过以上四步掌握了木马的确凿证据之后,接下来就是定位到木马文件,并做相应的处理。木马文件通常包括木马进程文件、进程模块文件、木马服务文件、注册表项等,有时候还可能包括木马服务端安装文件。由于顽固的木马一般都有进程守护和自备份功能,当木马进程和木马文件被终止或者删除时,它会通过进程守护启动另一个进程,并从备份文件中恢复被删除的文件,如果在对木马文件操作处理过程中,可以禁止系统创建进程、创建文件,那对清理木马文件的工作就轻松多了。
清理木马文件分两类,一类是纯木马文件,另一类是被修改的系统文件。对于纯木马文件,结合上文的分析,用工具直接删除即可,但是,为了防止误操作带来不必要的麻烦和今后继续研究该木马的需要,在删除木马文件前先做备份。对于被修改的系统文件,如被修改的注册表和启动项等,需要做相应的修复。以灰鸽子木马为例,清理木马文件时,需删除服务文件C:\Program Files\thunder.exe和注册表项HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/thunder。
经过上述的操作之后,可能还存在一些残余文件,需借助软件做全面的清理。打开Wsyscheck的文件搜索界面,如图7所示,选中“排除微软文件”和“限制文件大小”选项,设置文件大小为200KB, 再选定设置时间,然后开始搜索,对搜索的结果做进一步的处理。
防病毒软件检测木马程序
防病毒软件检测方法就是使用防病毒软件,对计算机进行扫描检测。此外,还可以利用一些免费的绿色软件,如360安全卫士、Windows清理助手和木马清道夫等。
防病毒软件的操作使用一般比较简单,安装完防病毒软件后,只需经过简单设置,定期升级病毒库版本并定期对系统进行扫描即可。现在很多防病毒软件都有自动升级功能和实时监控功能,用户只需在首次安装时做个全盘扫描,剩下的都交给防病毒软件自行完成。
但是,防病毒软件采用的是特征码扫描原理,这种扫描方式有其先天的不足,主要表现在时间上存在滞后性。特别是在地下木马产业链日趋成熟的今天,木马发展的速度越来越快,出现了零日攻击,甚至是零时攻击。很多防病毒厂商都在宣传主动防御、启发式扫描等技术,但是这些技术目前还不太成熟,会出现很多误判和漏判。有些防病毒软件只是提示用户检测到某一动作,而把具体操作交给用户来判断决定,对于刚接触计算机或者计算机知识水平一般的用户,这种方法显然是在难为他们了。
所以,当发现计算机有中木马的迹象时,用防病毒软件进行扫描检测,通常可以检测出大部分的木马。对于一些新发行的木马或者顽固的变种木马,普通的防病毒软件一般检测不到,所以需要借助手动检测方法。
我们做网站的一个重要目的,就是让用户获得帮助,同时也能够通过用户获得利润 学习了,好帖 很好的帖子,学习分享了 感觉很深奥的啊 好帖,有才!
页:
[1]