WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 2149查看
  • 0回复

主题

好友

209

积分

中级会员

发表于 2009-6-20 23:40:52 |显示全部楼层
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zhangyu.blog.51cto.com/197148/141977
[按此下载文章原文、脚本及病毒样本] [按此加我为友情链接,谢谢]
  作者:张宇,北亚硬盘数据恢复中心,转载请联系作者,如果实在不想联系作者,至少请保留版权,谢谢。
  引言:这是我以前写的一篇文章,算是解决问题的一个总结,一直没有发表,虽然到现在,文中提到的病毒已经是小菜一碟了,但这个解决方法实际就是一个完整的杀毒软件最普通的杀毒算法,也算是抛砖引玉吧,不当之处请多指正。
  文中涉及到的文件(除了用到的那几个软件)以及文章的DOC版已上传到附件中。
  注意:压缩包里含病毒样本,测试里请断开网络在虚拟机下测试。

手动杀灭 “刘德华病毒” 顽固变种
前些日子,与一起培训的学生照过合影后回到机房,我在我的电脑中开了一个完全共享,希望他们通过网络将照片传过来。过了一会,查看共享目录时,我发现有一个名称为“我的照片”的.EXE文件,当时还纳闷,怎么快就把电子相册做好了?加上我的电脑里安装有及时更新的“卡巴斯基”,所以没多想便双击了那个“我的照片.exe”,随后电脑中出现一幅天王刘德华的照片,单击后退出了。看到并不是想要的合影时,我心想这下可能坏了。
电脑正常运行,并没有特别的异常情况,但我心想,一定不会这么简单,先上网查查吧。不查不知道,一查吓一跳,原来这是一个叫做“诡秘变种S”的病毒,大家也把它称为“刘德华病毒”,这种病毒主要通过局域网进行传播,它试图把自己复制到局域网其他用户的共享文件夹里。感染病毒之后,会将自己拷贝到系统目录下,文件名为“svchost.exe”。病毒会修改exe文件的关联方式,这样用户每次运行exe文件的时候都会先运行病毒。通过病毒的接应,黑客可以远程对用户电脑进行控制,任意删除用户电脑上的文件,获取用户存储在电脑上的信息。
  看到发作结果这么可怕,于是赶紧着手杀毒。卡巴斯基没有报警,看来只好用其他杀毒软件了,于是我试了试瑞星、金山等杀毒厂商提供的免费查毒功能,结果发现,没有一个可以查到。看来我所感染的这个是老式“诡秘变种S”的变种,目前还未被各杀毒厂商发现,看到其可能会获取用户资料,心里又万分焦急。无耐之下,尝试手动杀毒。经过一番努力,病毒基本处理干净,作为对大家解决病毒、木马问题的参考,写下我的处理过程。
  首先作为验证,我到C盘WINDOWS目录查找是否有svchost.exe文件,没有,可能是隐藏文件,于是想显示所有文件再查。点击资源管理器中的文件夹选项后,出现如下情况:

  竟然不可以修改显示“隐藏文件和系统文件”属性,看来病毒已经在注册表作了手脚。试着运行REGEDIT.EXE,可以进入,进入后查看HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden,发现其下没有SHOWALL项,看来是病毒删除了。先按照下面注册表文件还原:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL]
"RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"
"Text"="显示所有文件和文件夹"
"Type"="radio"
"CheckedValue"=dword:00000001
"ValueName"="Hidden"
"DefaultValue"=dword:00000002
"HKeyRoot"=dword:80000001
"HelpID"="shell.hlp#51105"
  更改注册表后退出,再进入文件夹选项时已经出现了“显示所有文件和文件夹”的选项,选中后,立刻进入windows目录下,果然发现了病毒体svchost.exe(操作系统的svchost.exe并没有放在windows目录下),但过了一会再查看,发现又无法显示隐藏和系统文件了,删除svchost.exe文件时提示文件保护,无法删除。综合推断,病毒驻留程序会隔一段时间监视注册表的改动(其实是不管三七二十一重写特定键值)。按下“ctrl+alt+del”键进入任务管理器后查看,有多个svchost(有几个是系统核心进程),试着逐个结束,未果,看来病毒有自我保护技术(双线程或其他吧,没有具体分析)
  再次进入注册表编辑器,发现启动项中已加入了键名为”microsoft”,键值为”c:\windows\svchost.exe”的运行键。同时发现果然所有的.exe文件的关联方式都被改为了“C:\WINDOWS\svchost.exe "%1" %*”
  运行注册表监视程序Regmon,发现病毒会隔一段时间强行改动以下几个重要键值:自动运行、.EXE关联、是否显示隐藏文件、是否显示文件扩展名,以及添加“HKLM\SOFTWARE\mysoft”项。
  驻留程序无法结束,注册表不能改动,文件又无法删除,这可该怎么办?好办,请出WINHEX->著名磁盘编辑软件,主要的解决思路是利用WINHEX对磁盘进行编辑,从而对病毒体进行破坏,导致病毒体无法正常工作。首先打开REGEDIT.EXE,导出.exe的关联项,并修改为正常(自己后期编辑也可以),以防破坏病毒体后所有EXE文件打不开。下边是必改键值的REG文件的内容:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\exefile\shell\open\command]
@="\"%1\" %*"

  带毒状态下打开WINHEX,单击”TOOLS”下的”open disk”菜单,选择”logical drives”下的”Fixed drive (c)” 打开目录浏览器(access菜单旁边,如下图)

  在winhex的目录浏览器中进入WINDOWS目录,找到” svchost.exe” ,在其目录条目上双击定位到SVCHOST.EXE文件在磁盘上的开始位置。接着在开始位置单击鼠标右键,选择”beginning of block” ,再向后翻3-8个左右的扇区,找个位置单击鼠标右键,选择” end of block”。紧跟着在BLOCK区的任意一处位置单击鼠标右键,选择”fill block”,填充全0值。这时候”svchost.exe”已经被破坏。
  接着重启计算机,发现弹出很多错误对话框,这是正常的,因为.exe的关联已经损坏,所以正常开机执行的启动程序都不能正常工作了。无所谓,操作系统还可以正常工作。随后直接双击我们备份好的关联.EXE的REG文件,即可运行所有.EXE文件。
  运行REGEDIT,删除自动运行里病毒的启动项。
  删除”C:\WINDOWS\SVCHOST.EXE”
  在系统中打开隐藏文件,查找大小为759,296个字节的.EXE文件,确定其同样为病毒体时,删除。
  至此病毒应该已经手动杀掉了,我在后来的几次虚拟机的试验中也确实发现已经干净了,但我真实的感染案例中却远没这么简单。
  正常运行了几天吧。我要安装一个软件,其安装程序在我的E盘,转到E盘执行SETUP后,发现怎么也装不上,老提示参数错误。反复重试后,猛然发现,在双击SETUP的同时,目录下自动生成了一个半透明的隐藏文件”setup .exe”(之前杀毒后已打开显示隐藏文件开关,此”SETUP .EXE”文件名中有一空格), 对比真正的文件,发现我E盘绝大部分EXE文件都被病毒修改,我又查了一下其他分区,发现除了C盘(系统分区)以外,别的分区均有被病毒修改的.EXE文件。仔细研究后发现,病毒对.EXE的修改方法是:病毒文件+好的.EXE文件+可能的12个字节,时间等属性不变,但大小会增加。
  当运行任一感染的.EXE文件后,其中的病毒体会首先执行,而后释放出正常的.EXE,执行正常的.EXE文件,执行后再将其删除,所以事实上病毒已再次发作。不得已,重复前面过程,将病毒从内存中清除出去,再着手修正感染的每个.EXE文件。要想修改每个被感染的.EXE文件,可不是件容易的事,又试了一下国内几个著名的杀毒软件,还是杀不掉,没办法,一边将病毒提交给各大杀毒厂商,一边自己动手处理。(截止此文写作,瑞星回复,他们已将笔者提交的特征码加入其新病毒库,经验证,的确已经可以查到)
  由于没有很好的现成工具能处理这么一大片文件,所以再次请出WINHEX(好强大的功能),我用WINHEX提供的脚本功能做了个专杀工具,虽然WINHEX提供的语法不是太严谨,但总算是可以实现要求了。
  首先我确保WINHEX没有被感染(不行可以重新安装一下),然后在C盘建立一个杀毒用的临时目录,如TEMP,然后进入命令提示符状态,执行:
dir /b /s d:*.exe >c:\temp\d.ls
dir /b /s e:*.exe >c:\temp\e.ls
……
  然后,在TEMP目录下用记事本编写两个扩展名为.WHX的文件
//main.whx的内容:
Closeall
//接受列表文件,如C:\TEMP\D.LS,也可采用相对路径
GetUserInput lspath "请输入杀毒的列表文件路径:"
//打开列表文件
Open lspath
Assign pathcharnum 0
SetVarSize pathcharnum 2
{
//从列表文件中读内容,如果遇到回车(0x0d0a)就把前面的字符加入变量中
//同时清除此段内容,由于WINHEX语法所限,先将选中的.EXE文件的字符数写在路
//径的后面(更改0x0d0a),以此限定变量的字符数
Read tempA 2
Move -1
IfEqual tempA 0x0D0A
Move -1
Write pathcharnum
Assign pathcharnum 0
SetVarSize pathcharnum 2
//WINHEX目前无法实现相同语法结构的嵌套,所以用调用另一脚本的方法实现
ExecuteScript "kill.whs"
Else
Inc pathcharnum
EndIf
}[unlimited]



//kill.whx的内容:
move -2
Read pathcharnumt 2
goto 0
Read path pathcharnumt
Block 0 (pathcharnumt+1)
Remove
goto 0
open path
Assign estimate 0
Assign TempB 0
Assign FileSize GetSize
//若打开文件大小小于病毒体,直接跳过,处理下一个文件
IfGreater (0xB95ff-FileSize) 0
JumpTo ContinueHere
EndIf
//特征判断
block 0x100 0x10f
Find 0x504500004C010800195E422A00000000 BlockOnly
IfFound
Inc estimate
EndIf
//特征判断
block 0x5e0 0x5ef
Find 0x60664000203940005C3940001154496E BlockOnly
IfFound
Inc estimate
EndIf
//特征判断
block 0x1900 0x190f
Find 0x010514164A00833D14164A000C0F8D4C BlockOnly
IfFound
Inc estimate
EndIf
//特征判断
block 0x9000 0x900f
Find 0xC0045BC383E8048B0083E804C38D4000 BlockOnly
IfFound
Inc estimate
EndIf
//特征判断
block 0x10000 0x1000f
Find 0x55F88D45D4E8A2E3FFFF668B45D46625 BlockOnly
IfFound
Inc estimate
EndIf
//特征判断
block 0x200b0 0x200bf
Find 0x8BC6E86930FEFF5E5BC38BC083C00850 BlockOnly
IfFound
Inc estimate
EndIf
//特征判断
block 0x30000 0x3000f
Find 0x8B08FF91CC000000EB228B45FC8B4010 BlockOnly
IfFound
Inc estimate
EndIf
//特征判断
block 0x40000 0x4000f
Find 0x8BD38B83D4010000FF93D00100005F5E BlockOnly
IfFound
Inc estimate
EndIf
//特征判断
block 0x50000 0x5000f
Find 0x6C7911706F44656661756C7453697A65 BlockOnly
IfFound
Inc estimate
EndIf
//特征判断
block 0x60000 0x6000f
Find 0x8B10FF12837D08007407C74324010000 BlockOnly
IfFound
Inc estimate
EndIf
//特征判断,判断结尾是否是病毒填充的12个字节
block (FileSize-12) (FileSize-1)
Find 0xE903000000960B0044444444 BlockOnly
IfFound
Assign TempB 1
EndIf
//处理最后12个字节,如果符合病毒特征,移除!
IfGreater estimate*TempB 10
block (FileSize-12) (FileSize-1)
Remove
EndIf
//处理病毒附加的病毒头,如果符合病毒特征,移除!
IfEqual estimate 10
block 0x0 0xB95FF
Remove
EndIf
//保存更改
save
Label ContinueHere
//关闭文件
Close

  编辑完这两个文件后,双击MAIN.WHX,执行WINHEX的脚本,很快脚本执行完毕,再进入磁盘查看.EXE文件时,发现病毒已被完全清除,直到现在,未发现异常情况。
回想杀灭此病毒的过程,的确是花费了很大心思,写下来,希望整个流程对读者对付病毒或其他方面有帮助。

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-3 20:58 , Processed in 0.077286 second(s), 16 queries .

返回顶部