首页
社区
课程
招聘
一个有意思的病毒分析报告
发表于: 2010-5-24 22:35 6691

一个有意思的病毒分析报告

2010-5-24 22:35
6691
病毒分析报告
一.文件信息:
1.        文件名:eelecesh.LOG
2.        文件大小:371092B
3.        分析平台:Windows XP SP2,VMWare
4.        分析工具:Ollydbg
5.        文件类型:PE格式,未知壳

二.病毒行为初步分析:
1.复制病毒自身文件到Windows目录下,随机生成文件名,写入文件相关信息到注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\下,以服务方式启动写入到Windows目录下的程序,写入批处理文件到Windows临时目录下,然后结束自身进程。
2.病毒写在服务项下的注册表为
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\awngdwrg]
"Type"=dword:00000120
"Start"=dword:00000002
"ErrorControl"=dword:00000000
"ImagePath"=hex(2):43,00,3a,00,5c,00,57,00,49,00,4e,00,44,00,4f,00,57,00,53,00,\
  5c,00,61,00,77,00,6e,00,67,00,64,00,77,00,72,00,67,00,2e,00,4c,00,4f,00,47,\
  00,00,00
"DisplayName"="awngdwrg"
"ObjectName"="LocalSystem"
"Description"="管理和运行基于 Internet 的文件。如果此服务被终止,将会失去这些功能。如果此服务被禁用,任何依赖它的服务将无法启动。"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\awngdwrg\Security]
"Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\
  00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
  00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
  05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
  20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\
  00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\
  00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
"logon"="0hDyyRfxl9mNm9iItRjBo9eKmtuauuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu"
"InTime"="0524"
"Install"="C:\\Documents and Settings\\Owner\\桌面\\驱动\\eelecesh.exe"
"Group"="vQ/Im+Gav3.4"
"ReMark"="0429"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\awngdwrg\Enum]
"0"="Root\\LEGACY_AWNGDWRG\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001

3.写在临时目录下的批处理文件内容为:
move /Y "C:\Documents and Settings\Owner\桌面\驱动\eelecesh.exe" "C:\WINDOWS\awngdwrg.LOG"
net start awngdwrg
pause

三.编程特色:
本病毒采用了非常特殊的API调用方式,在一般情况下,病毒通常采用加密字符串解密后使用GetProcAddress的方式来调用Windows API,以逃避杀毒软件的查杀,但是本程序的作者别出匠心,采用了一种另外的方式来调用API函数,他先采用普通加壳软件常采用的方式来获取到导入表,然后将所有导入表引入的函数从Windows DLL中复制到自身应用程序中来,然后修改导入表为自身复制API的函数的地址,由于将Windows API复制到自身后需要修改大量的跳转语句和内部Windows函数的调用,因此,这个修改是一个非常复杂的工作,稍有不慎,程序就会崩溃,因此我猜想,本程序可能自带有汇编和反汇编引擎。以下是一个复制到自身后的代码,可以看出,有大量的API都是跳转到Windows DLL里面去。
将kernel32.dll里面的CreateFileA函数
00C85804    8BFF            mov     edi, edi
00C85806    55              push    ebp
00C85807    54              push    esp
00C85808    5D              pop     ebp
00C85809    FF75 08         push    dword ptr [ebp+8]
00C8580C    E8 F388B87B     call    kernel32.7C80E104
00C85811    85C0            test    eax, eax
00C85813  - 0F84 3EC2B77B   je      kernel32.7C801A57
00C85819    FF75 20         push    dword ptr [ebp+20]
00C8581C    FF75 1C         push    dword ptr [ebp+1C]
00C8581F    FF75 18         push    dword ptr [ebp+18]
00C85822    FF75 14         push    dword ptr [ebp+14]
00C85825    FF75 10         push    dword ptr [ebp+10]
00C85828    FF75 0C         push    dword ptr [ebp+C]
00C8582B    FF70 04         push    dword ptr [eax+4]
00C8582E    E8 BDAFB87B     call    kernel32.CreateFileW
00C85833    5D              pop     ebp         ; 0012FF24
00C85834    C2 1C00         retn    1C
可以看出,病毒作者是将CreateFileA搬到了程序里面,但是从这个函数可以很容易的识别出这个就是CreateFileA,而如果将CreateFileW搬到程序里面去,那么就没有那么容易识别了,实际上,里面有很多Advapi32.dll的导出函数,识别起来相当困难,而且有好多我都没识别出。

四.调试方案:
在Ollydbg下,用以下方法可以快速定位到程序OEP:
先下断bp GetProcAddress;F9运行,断下后,取消断点,按Ctrl+F9,向下翻找到call eax,在这句按F4到达,再按F7进入到达OEP,从入口点可以看出,程序很有可能是采用Dephi编写。
到达OEP后,通常不能采用普通方式设置断点,因为程序已经将常用API搬移到主程序里面了,所以对于常用的文件函数,注册表函数,进程函数设置断点时都不能断下,而应该设置ntdll里面的native API断点,例如,此时如果设置bp ZwCreateFile很快可以断下(设置CreateFileA则不会断下),可以看到头几个ZwCreateFile都是试图打开SoftIce调试器的驱动,而在后面ZwCreateFile则会打开自己的程序复制到Windows目录下。
可以看出,将Windows API复制到自身程序对于保护自身程序被分析还是很有效的,如果再将ntdll里面的native API给复制,并且尽量不调用Ansi的函数,那么写成的程序是相当难分析的,这也为我们保护软件不被别人轻易爆破和分析出注册算法提供了一个绝好的思路。

五.病毒清理方案:
此病毒不属于感染型病毒,因此手动清理并不困难,先关掉任务管理器中所有.log结尾的进程,将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services注册表项导出为文本文件,找到包含"Group"="vQ/Im+Gav3.4"的注册表路径,例如这里为[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\awngdwrg\Enum],然后删除这里的注册表项和Windows目录下的awngdwrg.log(文件名从任务管理器或注册表获得),清理完毕后重启计算机即可。

附件为病毒文件,解压密码为123

[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有点意思,看看!
2010-5-24 23:04
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

然后将所有导入表引入的函数从Windows DLL中复制到自身应用程序中来,然后修改导入表为自身复制API的函数的地址

你的意思是不是:把这些API的代码load到自己的进程空间里?
如果是的话,怎么load?
2010-5-25 09:16
0
雪    币: 170
活跃值: (50)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
就是将导入表的API函数的代码复制到自己领空,而不是直接调用API,你可以自己逆下病毒代码。
2010-5-25 10:14
0
雪    币: 82
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习。。。。。
2010-5-25 10:19
0
雪    币: 103
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
进入另一个PE入口0x507b74的时候,OD自动关闭,不知道咋回事
2010-5-25 13:41
0
雪    币: 279
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
IAT 的AntiHook?
2010-5-25 14:20
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
应该搞个注释  方便菜鸟看
2010-5-25 14:46
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习一下,呵呵
2010-5-25 17:28
0
游客
登录 | 注册 方可回帖
返回
//