当前位置: 秋叶网络博客 网络技术 ◊ 跟踪追击,清除病毒

跟踪追击,清除病毒

作者:秋了秋 发表时间:2014年12月09日

导读:如今,部分杀毒软件对计算机病毒的查杀率只有20%,而漏杀率却高达80%。那么是什么原因造成这种状况的?到底是如今的病毒过于厉害,还是杀毒软件的能力有限?今天我们就通过实例来分析一下狡猾病毒的藏身伎俩以及如何将他们彻底铲除。

河南-刘景云:笔者为了保护系统安全,不仅安装了杀毒软件,还安装了System Safety Monitor这款功能强大的监控软件,可以对各种不法程序进行全面监视,使其与杀毒软件配置工作,可以大大提高安全性。当笔者在网上查找资料时,监控软件突然弹出提醒窗口,提示拦截到一个名为“tsklist. exe”的可疑程序试图运行。根据SystemSafetyMonitor提供的信息,该程序藏身于“C:Program FilesInternet Explorer”文件夹中,但杀毒软件却并没有及时报警。

检测病毒基本信息

将“tsklist.exe”提取到单独的文件夹中,使用PeiD这款小工具先对其进行简单的分析,看其是否经过了加壳处理。在PeiD主界面中点击浏览按钮,如图1所示,导入该文件,经过分析,可以了解其入口点、PE区段、文件偏移等信息,在底部显示“MicrosoftVisual C++7.0”字样,表示其是使用VC开发的,没有进行加壳处理。

分析病毒需要使用到OllyDbg这款强悍的工具。在OllyDbg主界面中点击菜单“File”-“Open”项,打开“tsklist.exe”可以看到复杂的反编译代码信息。在OllyDbg反编译界面的右键菜单中点击“Search for”-“All refere nced text strings”项,在弹出窗口中显示地址信息、反汇编信息和文本信息。在“Textstring”栏中显示该程序内部所有可用的字符串信息,从字面上分析,“wfwnet.drv”比较可疑,很可能是病毒的“同伙分子”。但是,在系统目录中的“system32”文件夹中其实存在名为“wfwnet.drv”的驱动文件,这是系统自带的合法文件。看来,病毒是冒充系统正常文件来伺机破坏。查看内部字符串,初探病毒动向双击“wfwnet.drv”行,进入与其关联的代码区域。从“00531271”到“00531294”等行中,连续显示“Buffer”、“Get WindowsDirectory”等信息,可以看到,这段程序用来检测Windows系统路径信息,“Get Windows Directory”函数的作用就是用来寻找系统路径,病毒可能想将“wfwnet.drv”保存到系统路径中。接着阅读下面的程序,从“005312AC”到“00531305”等行中,连续显示“ProcessSecurity”、“explorer”等信息,综合起来分析,该病毒是要创建一个虚拟桌面,然后在其中启动“explorer.exe”进程。因为代码很多,为了更快地寻找病毒的行动方向,最好的方法是对病毒文件调用的所有函数进行分析,从中找到可疑的项目,据此进行跟踪追击,问题就可迎刃而解了。

分析函数调用,探寻病毒渗透伎俩

在反编译窗口中点击“Ctrl+N”键,在打开的窗口中显示该程序使用到的所有模块信息。经过查找分析,笔者觉得其中的“FindResourceA”这款函数疑点较大,该函数的作用是查找资源,根据病毒使用的资源,就可以了解其行踪了。在“FindResourceA”函数名的右键菜单上点击“Set breakpoint on every reference”项,表示在所有使用到该函数的位置上设置断点,之后点击F9键运行该程序,很快程序就被拦截到了“00531342”地址处,从该地址到“00531397”地址这一段代码区域,可以很明显地看到病毒其实就是在查找和释放资源,这个资源就是“wfwnet.drv”文件,病毒将其存放到了系统路径中,然后点击F7键执行但不追踪操作,观察病毒释放文件后的动作。从“0053138E”到“00531395”地址段,可以看到“pBytesWriteten”、“Buffer”等字符串,说明病毒已经向“wfwnet.drv”文件中写入相关数据了。连续点击F7键,退出相关代码段返回主程序段。

使用自删除,病毒悄然失踪

再次打开函数调用窗口,发现其中的“WinExec”函数比较特别,该函数的作用是执行预设的程序。按照同样的方法,对使用到该函数的所有位置设置断点,点击F9键执行程序,很快程序就被拦截到了“005311BA”地址处。从该地址到“0053122A”地址栏的信息中显示了“BufSize”、“PathBuffer”等内容,可以看到该病毒似乎以隐蔽运行的方式执行命令,然后退出程序。在OllyDbg主界面中选择“005311ED”地址项,在窗口底部的信息栏中显示“/cdel/f”字样。“GetEnvironmentVariableA”函数的作用是获得环境变量参数,选中“00531212”地址项,在窗口底部的信息栏中显示“C:Windowssystem32 cmd.exe”字样。综上分析,得出病毒实际上是取得CMD. exe程序路径,然后利用“/c del/f”文件删除命令,将病毒文件删除。病毒很可能在执行完任务后,将自身文件删除,然后让其同伙继续执行更凶狠的破坏操作。

追踪病毒同伙,彻底将其清除

既然病毒已经自删除,那么只能对其释放出来的“wfwnet.drv”进行追踪了。进入“C:Windows”文件夹,找到并提取了该文件,经过对其进行研究,发现实际上是DLL文件,只是后缀被修改成了“.DRV”,看起来好像是驱动程序。使用OllyDbg打开该文件,连续点击F7键执行单步运行,遇到跳转指令就点击F4键避开,很快就会进入模块入口点,之后就可以在反编译窗口中点击“Ctrl+N”键,在查看该文件使用到的所有模块信息了,其中包括CreateThread、DriverProc等。双击其中的Free函数,进入相关代码段,在其中的信息栏中显示“GetSystemDirectoryA”等信息,可以看到病毒释放出来的“wfwnet.drv”其实是冒充系统原来的同名文件,通过“GetProcAddress”函数获得之前创建的虚拟桌面中的“explorer.exe”程序的地址信息,并利用“LoadLibrary”函数强制加载“wfwnet.drv”,完成对“Explorer.exe”进程的注入操作。因为“wfwnet.drv”嵌入到“Explorer.exe”进程中,属于DLL型木马,所以使用一般的工具无法检测到。了解了病毒的大致获得情况,接下来清除工作就容易多了,使用IceSword冰刃查看“explorer.exe”中的所有模块信息,果然发现了“wfwnet. drv”的踪迹,将其强制卸载,并进入“C:Windows”文件夹将其删除,并在注册表中搜索与其相关的项目一并删除,这就完成了对该病毒的清理操作。

——来源:网络运维与管理(2014年10月第19期)

0
除非注明,文章均由 秋叶网络博客 发布,欢迎转载。
转载请注明本文地址:http://www.mizuiren.com/197.html
目录: 网络技术 | 标签: 清除病毒 | 7697次阅读