病毒分析报告
一.文件信息:
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
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)