科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道另辟蹊径,给病毒致命一击

另辟蹊径,给病毒致命一击

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

前几天帮朋友杀毒,杀完毒也顺便把这个病毒抓了回来。今天就对它进行一个逆向分析,看看它到底是如何运行的。

来源:比特网 2009年6月11日

关键字: U盘病毒 病毒防范 病毒查杀

  • 评论
  • 分享微博
  • 分享邮件

  前几天帮朋友杀毒,杀完毒也顺便把这个病毒抓了回来。今天就对它进行一个逆向分析,看看它到底是如何运行的。

  环境说明:一安装有Windows XP的虚拟机。

  对象:一U盘病毒

  工具:

  PEID(查壳工具)

  Ollydbg(动态反汇编工具)

  一、诱敌深入,初识病毒

  1.这是一个U盘病毒,首先在虚拟机上运行它让自己中毒。中毒后通过任务栏上“安全删除硬件”图标删除U盘,提示“现在无法停止‘通用卷’设备,请稍候再停止该设备”。这是必然的,因为病毒在运行,U盘设备被病毒调用。

  

  2.下面看看病毒到底在硬盘上创建了哪些文件,因为病毒文件大部分都是隐藏属性,所有先要让系统显示隐藏文件。方法是:打开“我的电脑”,选择“工具”菜单中的“文件夹选项”,在“查看”选项卡的“高级设置”下依次勾选“显示系统文件夹的内容”、“显示所有文件和文件夹”,取消对“隐藏已知文件类型的扩展名”的勾选,这样设置后一般的隐藏文件都现形了。

  

  3.打开“我的电脑”,进入根目录看看。经验告诉我们这是不要直接双击打开,用鼠标右键点击盘符看到第一项变成了“Auto”(一般正常情况下是“打开”),选择“资源管理器”进入磁盘根目录。

  

  非常明显在根目录下多了一个文件,一个目录,文件是autorun.inf,目录为RECYCLER,它的图标就是回收站图标,并且都是隐藏属性。进入RECYCLER目录可以看到两个文件,一个为info.exe,另一个为desktop.ini,也是隐藏属性。

  

  双击打开autorun.inf文件,可以看到如下内容:

  [autorun]

  auto=

  open=

  shell\auto\Command=RECYCLER\INFO.exe

  shell\open\Command=RECYCLER\INFO.exe

  shell\open\Default=1

  shell\explore\Command=RECYCLER\INFO.exe

  评析:这个U盘病毒很狡猾,首先它把自己隐藏在一个类似“回收站”的图标下,另外,通过autorun.inf达到双击盘符自动运行。

  双击打开desktop.ini文件,可以看到如下内容:

  [.ShellClassInfo]

  CLSID={645ff040-5081-101b-9f08-00aa002f954e}

  评析:把自己的图标改变成“回收站”的图标,更加隐蔽。

  二、左右开弓,解剖病毒

  1.查壳

  通过以上的检查,很明显info.exe应该就是病毒文件了。要想知道病毒的工作机理及其找到清理病毒的方法,进行反汇编是个不错的注意。先使用PEID检查病毒是否加壳,结果发现病毒并没有加壳。

  

  2.反汇编

  既然没有加壳,那就直接用Ollydbg加载info.exe病毒文件进行反汇编,当然也可以使用其它静态反汇编工具。完全加载后可以可以通过查看程序调用的api函数和查看字符串来了解病毒的功能特性,查看字符串的方法是最基础的了,也是比较简单和常用的。方法如图所示,利用插件来查看字符串。在弹出的窗口中可以看到程序中出现的字符信息,一般来讲会发现一些文件名和注册表的信息。

  

  根据经验可知software\microsoft\windows\currentversion\winlogon应该是注册表中的地址,它下面的“Userinit”和“svchost.exe1”可能就是病毒伪装的文件名或是要写到上面注册表地址里的项和键值。至于下面的“:\recycler\info.exe”、“\recycler\u.exe”应该是释放到U盘里的文件。那剩下的“_sv_cmd_\_u_.exe”和“_sv_cmd_\u.exe”是释放到什么地方呢?先不管这个,继续往下看,看看还有什么字符串,可以告诉我们什么信息。

  

  “recycler\desktop.ini”文件大家都不陌生吧,它就是将文件夹伪装成回收站图标的方法。下面的“[.ShellClassInfo]\n\CLSID={645ff040-5081-101b-9f08-00aa002f954e}u.exe”就应该是desktop.ini里面的内容了。再下面的“[autorun]\n\n\auto=\n\n\open=\n\nshell\auto\Command=RECYCLER\INFO.exe\n\n

  shell\open\Command=RECYCLER\INFO.exe\n\nshell\open\Default=1n\n\shell\explore\Command=RECYCLER\INFO.exe”就是U盘里的autorun.inf文件的内容。autorun.inf的作用就是打开U盘时自动运行recycler里的info.exe程序。而字符串里出现的svchost.exe,这是系统文件的名字,显示是病毒用来迷惑人的。

  

  在命令行下敲入如下命令查看系统中svchost.exe:

  cd \

  dir /a /s svchost.exe

  注:上面的命令是搜索系统盘下所有文件名为svchost.exe文件。

  

  正常的svchost.exe文件的大小应该是14K,那么C:\Windows\system\文件夹下的svchost.exe就应该是病毒了,来到C:\windows\system目录下还意外发现了_sv_cmd_文件夹,里面的_u_.exe和u.exe也都是病毒文件,前面字符串中出现的_sv_cmd_原来是备份病毒文件的。

  剩下的应该就是注册表里的键值了,根据反汇编字符串里的信息来到注册表地址“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon”下,发现Userinit项的值由“userinit.exe,”改成了“userinit.exe,C:\windows\system\svchost.exe”,那后面的C:\windows\system\svchost.exe不就是病毒地址吗,原来它是这样在开机后自己运行的。

  

  三、心中有数,清除病毒

  1.结束进程

  在“任务管理器”中有6个svchost.exe进程,这其中必有一个是病毒的进程,哪一个是呢?如果结束了系统的svchost.exe进程的话,系统会关机。

  方法一:在命令行下敲入如下命令:

  tasklist /svc

  

  从显示结果中很明显可以看出PID为2620的SVCHOST是与系统无关的,敲入如下命令结束病毒进程:

  ntsd -c q -p 2620

  方法二:用冰刃查看进程对应的文件,如果对应的是C:\windows\system\svchost.exe,那么直接结束进程。

  2.删除文件

  通过分析我们知道了病毒文件的位置,并且病毒的进程已经结束就可以手工删除了,不过要特别提醒,在进入分区更目录的时候千万不能双击进入,应该右键选择“资源管理器”进入删除,不然又会把病毒激活。

  我建议大家用批处理来删除文件,把一下代码保存为del.bat文件,双击即可:

  @echo off

  cd \

  attrib -a -s -h autorun.inf

  attrib -a -s -h recycler

  attrib -a -s -h recycler\info.exe

  attrib -a -s -h recycler\desktop.ini

  attrib -a -s -h windows\system\svchost.exe

  attrib -a -s -h windows\system\_sv_cmd_

  del autorun.inf

  rd /S /Q recycler

  del windows\system\svchost.exe

  rd /S /Q windows\system\_sv_cmd_

  d:

  attrib -a -s -h autorun.inf

  attrib -a -s -h recycler

  attrib -a -s -h recycler\info.exe

  attrib -a -s -h recycler\desktop.ini

  del autorun.inf

  rd /S /Q recycler

  ...................省略其它分区,和d:类似。

  exit

  3.修复注册表

  用手工或者REG脚本修复,把如下的代码保存为u.reg文件,然后双击导入即可:

  Windows Registry Editor Version 5.00

  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

  "Userinit"="userinit.exe,"

  提示:第二行是空行,一定要有。

  总结:本文演示的逆向分析及其手工杀毒方法,希望给大家提供一个思路,以后大家在遇到同样问题的时候多一个选择。同时,希望大家在清理病毒的时候,能够利用逆向分析的方法,搞清病毒的运行机制,这样不但对于我们清除病毒非常重要,我觉得更为重要的是可以提高我们的分析能力,杀毒能力,从而使得安全水平更上一个台阶。毕竟我们仅仅会杀一种病毒是远远不够的,要学会举一反三,知其然,还要知其所以然。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章