分析一个挺有意思的病毒

作者:breach
发表于《黑客手册》2007年第九期

从本文你可以学到:
1. 分析跟踪病毒发作过程
2. 手动删除病毒文件,恢复被破坏的注册表信息

朋友给我一个病毒,说是从他的网站上拿到的,叫我有空帮他分析下,我分析后觉得这个病毒集合几个挺有意思的功能模块,于是就写了本文给各位看客看下。
先说下测试环境:
1、 在windows 2003监视病毒行为,在虚拟机里安装XP系统验证监视结果
2、 监视工具:SSM 2.4.0.618,Tiny Firewall pro 2005
3、 保护系统工具:影子系统2.8.2个人版
4、 希望各位在测试过程前先断网,因为主病毒它会自动上网下载另外的一些病毒并运行它们,那么将会干扰下面的测试过程,影响测试结果。
拿到样本解压缩后,得到一个www.exe,先用卡巴查下病毒,能查杀,显示“已检测到: 病毒 Virus.Win32.AutoRun.ek 文件: F:\新建文件夹\www.exe//FSG”:

图1
打开所有的监视工具,启动保护系统工具,马上运行www.exe。 gogo……
首先Tiny出场,监视到病毒体的下面的动作,把本身复制到C:\Program Files\Common Files\System\ 目录下,改名为djogqvy.exe,再次复制到C:\Program Files\Common Files\Microsoft Shared\目录下,更是修改名字为kjsfqhl.exe,并且两个都设置为隐藏。

图2
接着启动djogqvy.exe病毒体,再在C:\Program Files\目录下生成同样的病毒体,命名为meex.exe,同目录下还生成一个mxtdewe.inf文件,内容如下:
[AutoRun]
open=gxkfxne.exe
shell\open=打开(&O)
shell\open\Command=gxkfxne.exe
shell\open\Default=1
shell\explore=资源管理器(&X)
shell\explore\Command=gxkfxne.exe
很明显,这个文件是为下面的在每一个分驱生成autorun.inf做准备的,接着马上在各个分驱创建autorun.inf以及病毒文件gxkfxne.exe。如下图:

图3(由于我在Tiny设置各个分驱没有写的权限,所以图中都是红圈)
这个时候马上就有更多的动作了,比如试图终止explorer.exe,还有就是象下载者一样连接网络下载另外的病毒体并运行它们:

图4
跟着更牛了,这个时候开始用上了windows映像劫持(IFEO)技术了,并且把注册表里的卡巴自动启动项删除掉:

图5
在这里要介绍下windows映像劫持(IFEO)技术,什么是IFEO?所谓的IFEO就是Image File Execution Options ,位于注册表的:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
由于这个项主要是用来调试程序用的,对一般用户意义不大,默认是只有管理员和local system有权读写修改,在这里先介绍到这里,下面会详细介绍到它。
说回正题,接着病毒切断我们进入安全模式的想法,在启动系统的时候按F8,然后无论是带不带网络的安全模式,还是带命令行提示的安全模式,都无法进入,都是蓝屏错误错误:

图6
并且还禁用SharedAccess(Intemet连接共享和防火墙服务)、系统自动更新的服务、Security Center 的wscsvc服务和帮助和支持中心服务。其中切断我们进入安全模式的想法就是把
HKLM\System\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E967-E325-11CE-BFC1-08002BE10318}
HKLM\System\CurrentControlSet\Control\SafeBoot\Network\{4D36E967-E325-11CE-BFC1-08002BE10318}
HKLM\System\CurrentControlSet001\Control\SafeBoot\Minimal\{4D36E967-E325-11CE-BFC1-08002BE10318}
HKLM\System\CurrentControlSet001\Control\SafeBoot\Network\{4D36E967-E325-11CE-BFC1-08002BE10318}

这几个注册表键值删除掉,删除掉后你就再也登陆不了安全模式了,够拽吧。
禁用SharedAccess(Intemet连接共享和防火墙服务)就是把注册表里的HKLM\SYSTEM\CurrentControlSet\ Services\SharedAccess 的"Start" 改为 dword:00000004 (系统默认值为 3);
禁用系统自动更新的服务,就是把注册表里的
HKLM\SYSTEM\CurrentControlSet\Services\ wuauserv的"Start" 改为 dword:00000004 (系统默认值为 2);
禁用帮助和支持中心服务,就是把注册表里的
HKLM\SYSTEM\CurrentControlSet\Services\helpsvc的"Start" 改为 dword:00000004 (系统默认值为 2);
禁用Security Center 的wscsvc服务,就是把注册表里的
HKLM\SYSTEM\CurrentControlSet\Services\wscsvc的"Start" 改为 dword:00000004 (系统默认值为 2);

说明:
"0x00000004"表示"禁用"
"0x00000003"表示"手动"
"0x00000002"表示"自动"


图7
终止掉卡巴进程,利用的方法还是最近比较流行的卡巴更改时间Bug,还有就是使得显示隐藏文件的系统功能失效。
病毒行为就是把注册表里的
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\\CheckedValue 改为dword:00000000;


图8
主病毒体的发作过程就这么多了。既然知道了它的发作过程,那么解决方案就肯定也是有的:
1、这个病毒有点意思,如果你直接切换或者通过目录一层一层地展开C:\Program Files\Common Files\System\或者C:\Program Files\Common Files\Microsoft Shared\,病毒体会把这个目录关闭掉,你根本就删除不掉那个病毒。不过这个病毒对自己的保护力度就这么一点本事,你只要打开任务管理器,把 djogqvy.exe 以及kjsfqhl.exe两个进程分别结束掉(右击其中一个进程,利用结束进程树的方法结束这两个进程),那么你就可以访问C:\Program Files\Common Files\System\或者C:\Program Files\Common Files\Microsoft Shared\这两个目录了,这个时候就可以把djogqvy.exe 以及kjsfqhl.exe两个病毒体删除掉;接着把C:\Program Files\目录下meex.exe以及 mxtdewe.inf两个文件删除掉;再分别删除每一个分区的根目录下的autorun.inf文件以及病毒文件gxkfxne.exe(这里最好按照下图中的步骤来删除病毒文件)。到这里所有病毒体就基本都搞定了。

图9
2、虽然到这里病毒文件是删除干净了,但是由这个病毒而产生的后遗症却有一大堆。由于病毒对注册表进行了较大的破坏,所以有必要要修复它们:
⑴、病毒通过修改注册表使得显示隐藏文件的系统功能失效,禁用SharedAccess(Intemet连接共享和防火墙服务)、系统自动更新的服务和帮助和支持中心服务等(我后来反编译病毒体,看到病毒也许还要破坏其他的服务,比如假如你有安装Rising瑞星的话,它就会禁用rsppsys服务)。所以要恢复被破坏的系统注册表里的重要键值,请新建一个reg注册表文件,内容如下,然后直接双击这个文件即可恢复(我也已经做好了这个 servcie_backup.reg注册表文件,各位可以参考下)。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\helpsvc]
"Start"=dword:00000002

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess]
"Start"=dword:00000002

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv]
"Start"=dword:00000002

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc]
"Start"=dword:00000002

⑵、恢复显示所有隐藏文件和文件夹的系统功能(hide_backup.reg注册表文件,各位可以参考下):
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL]
"CheckedValue"=dword:00000001

⑶、由于病毒切断我们进入安全模式的途径,所以更有必要恢复正常,其实这个恢复也很简单,就是病毒删除掉的注册表键值恢复回来就行了(SafeBoot_backup.reg注册表文件,各位可以参考下):
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SafeBoot\Minimal\{4D36E967-E325-11CE-BFC1-08002BE10318}]
@="DiskDrive"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SafeBoot\Network\{4D36E967-E325-11CE-BFC1-08002BE10318}]
@="DiskDrive"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E967-E325-11CE-BFC1-08002BE10318}]
@="DiskDrive"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\{4D36E967-E325-11CE-BFC1-08002BE10318}]
@="DiskDrive"

⑷最后出场的就是IFEO(windows映像劫持技术)了。随着网友的安全意识提高和众多安全软件的出现,一般情况下都可以很容易的对常规的恶意启动项进行很好的处理,于是一种新的技术就出现了,那就是IFEO。
也许说了上面那么多,大家还是弄不懂吧,没关系,来做个小实验!

图10
如上图,开始->运行-> regedit,展开到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
然后选上Image File Execution Options,新建个项,然后,把这个项(默认在最后面)然后改成breach.exe:

图11
选上breach.exe这个项,然后点击右键,新建个“字串符”,然后改名为“Debugger",回车,再双击该键,修改数据数值,把它改为 C:\WINDOWS\system32\cmd.exe。
设置完毕后,随便找个扩展名为EXE的,(这里拿SREng.EXE做测试),改名为breach.exe,然后运行之。出现了DOS操作框,不知情的还以为中毒了。

图12
同理,病毒木马等都可以利用这样的方法,把杀毒软件等安全工具的名字进行重定向,指向病毒路径,如果你把病毒清理掉后,重定向项没有清理的话,由于 IFEO的作用,没被损坏的程序一样也是运行不了!一般手动删除添加的非法 IFEO 劫持项目,重启后即可,这里建议不要把所有的重定向项删除掉,最好是只把被修改成指向病毒路径的重定向项删除掉即可。各位如果觉得麻烦的话也可以运行根据我的系统环境才特地制作的一个IFEO恢复文件,不过也许不一定适合大家的环境,大家就仅作为参考吧,文件名叫IFEO_backup.reg,双击导入即可。
最后为了方便各位的操作,我把上面的手动操作过程集成为一个批处理文件,取名为backup.bat,具体实现代码如下:
@title 分析一个挺有趣的病毒 清理批处理脚本 writed by breach
@echo off
color 0a
echo 欢迎您使用我写的病毒清理脚本
echo 正在帮您清除病毒文件,请稍等……
taskkill /im djogqvy.exe /t /f
taskkill /im kjsfqhl.exe /t /f
attrib -r -a -s -h "C:\Program Files\Common Files\System\djogqvy.exe"
attrib -r -a -s -h "C:\Program Files\Common Files\Microsoft Shared\kjsfqhl.exe"
del /f /s /q "C:\Program Files\Common Files\System\djogqvy.exe"
del /f /s /q "C:\Program Files\Common Files\Microsoft Shared\kjsfqhl.exe"
attrib -r -a -s -h "C:\Program Files\meex.exe"
attrib -r -a -s -h "C:\Program Files\mxtdewe.inf"
del /f /s /q "C:\Program Files\meex.exe"
del /f /s /q "C:\Program Files\mxtdewe.inf"
attrib -r -a -s -h D:\gxkfxne.exe
attrib -r -a -s -h D:\autorun.inf
del /f /s /q D:\gxkfxne.exe
del /f /s /q D:\autorun.inf
attrib -r -a -s -h E:\gxkfxne.exe
attrib -r -a -s -h E:\autorun.inf
del /f /s /q E:\gxkfxne.exe
del /f /s /q E:\autorun.inf
echo 正在帮您恢复病毒已破坏的注册表信息,请稍等……
regedit /s hide_backup.reg
echo 被破坏的显示所有隐藏文件和文件夹的注册表信息已经恢复正常
regedit /s servcie_backup.reg
echo 被破坏的系统服务的注册表信息已经恢复正常
regedit /s SafeBoot_backup.reg
echo 被破坏的系统安全模式的注册表信息已经恢复正常
echo 关于恢复IFEO注册表信息,建议各位手动清理为最好了,如果觉得麻烦的话也可以导入根据我的系统环境制作的一个IFEO恢复文件,
echo 不过也许不一定适合大家的环境,大家就仅作为参考吧……
@echo off
set "input="
echo 请输入参数:其中输入字母 y/Y 导入IFEO_backup.reg,输入其他字符表示不导入,无输入表示不导入.
set /p "input=输入字母 y/Y 恢复IFEO注册表信息: "
if "%input%" == "y" (goto IFEO_backup)
if "%input%" == "Y" (goto IFEO_backup)
:BReturn
echo 请输入参数:其中输入字母 y/Y 或直接回车重新启动系统,输入其他字符退出本脚本.
echo 请重新启动系统…..
set /p "input=输入字母 y/Y 重新启动系统: "
if "%input%" == "y" (goto RestartComputer)
if "%input%" == "Y" (goto RestartComputer)
if "%input%" == "" (goto RestartComputer)
if not "%input%" == "y" (goto ExitScript)
if not "%input%" == "Y" (goto ExitScript)
:RestartComputer
shutdown.exe /f /r /t 0
:ExitScript
exit
:IFEO_backup
regedit /s IFEO_backup.reg
echo 被破坏的IFEO注册表信息已经恢复正常
echo 请按任意键返回主菜单
@pause .>null
del null
goto BReturn
运行之,即可自动帮你清理病毒文件,恢复被破坏的注册表信息(注:由于病毒会关闭掉一些程序,所以也许你需要运行多几次本处理文件):

图13

总之这个病毒集成了好几个技术,分析这样一个挺有意思的病毒,我们还是可以学习到很多的系统知识的。

相关日志

发表评论