首页
社区
课程
招聘
[原创]鬼影母体R3部分分析
发表于: 2011-3-30 17:02 16613

[原创]鬼影母体R3部分分析

2011-3-30 17:02
16613

标 题: 【申精】鬼影母体R3部分分析
作 者: 苏
时 间: 2011-03-30,16:40:30
链 接: http://bbs.pediy.com/showthread.php?t=131317

这是前段时间比较牛X的一个病毒
里面用到的一些手段很不错
特拿来分析,与大家共享
不说废话,直接开始分析

先上个OD大图,给大家一个流程感


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (14)
雪    币: 1040
活跃值: (1293)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
以前分析过……不过这些无花无VM的逆向应该还不能得精华吧……发驱动的时候记得发硬盘IO那部分的逆向和注释哈……这样比较有冲击力……
2011-3-30 17:17
0
雪    币: 76
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶啊, ,,,同时占座
2011-3-30 17:18
0
雪    币: 437
活跃值: (110)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
顶一下观望
2011-3-30 17:33
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
5
要看r3的话不用找鬼影,它亮点不在这。
2011-3-30 17:37
0
雪    币: 677
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
“ZwSystemDebugControl直接写物理实际内存”
2011-3-30 17:56
0
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
004046C9  |>  68 50774000   push    00407750                         ; /MutexName = "Q360MonMutex"
004046CE  |.  53            push    ebx                              ; |InitialOwner
004046CF  |.  53            push    ebx                              ; |pSecurity
004046D0  |.  FF15 E0604000 call    dword ptr [<&KERNEL32.CreateMute>; \CreateMutexA
004046D6  |.  FF15 58604000 call    dword ptr [<&KERNEL32.GetLastErr>; [GetLastError
004046DC  |.  3D B7000000   cmp     eax, 0B7                         ;  保证只有一个实例在运行
人家是在检测360,如果360在运行,则用别的方法干.
后边还有SetupDi系列函数装载驱动,用JOB来干进程,还有DuplicateHandle DUP_CLOSE_SOURCE来干卡巴.
把后边的也分析了吧.
2011-3-30 18:13
0
雪    币: 206
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
膜拜神牛…十分感谢
2011-3-30 19:44
0
雪    币: 232
活跃值: (105)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
9
谢谢大牛。。
立马更新这个错误
2011-3-31 09:56
0
雪    币: 612
活跃值: (996)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
转一下wowocock大牛的分析~~

鬼影2技术 分析

最近发现新的MBR FIPS 木马,中了后所有安全软件均打不开,表现为双击无反应。检查系统发现EXPLORER在疯狂下载木马,同时发现一个可疑驱动fips.sys驱动挂了个 imageload callback.检查发现该驱动有问题,正常的驱动应该在 30几k,而这个 驱动只有8K左右,在IDA看了下,一下就看到问题了。

1,  在驱动里挂了个 image load callback,在每个模块加载的时候验证安全数据区,判断是否有特殊签名字符串,是则PATCH 模块入口点直接返回失败。其禁止的模块包括RIN0,RING3的,包括以下公司:

360,可牛,金山,江民,瑞星,贝壳,ESET,卡巴斯基,赛门铁克,BITDEFENDER,趋势,

AVG,12个公司的所有发布出来的带签名的 应用程序和驱动程序,全部禁止。

2, 创建一个系统内核线程,不断枚举系统中的进程,找到explorer后,切入进去分配内存,将内部的SHELL CODE 拷贝到EXPLORER 进程空间,然后通过APC,执行SHELLCODE.在EXPLORER里的 SHELL CODE先通过PEB,获得所需的DLL,地址,然后动态获得所需函数地址,不断的 通过URLDownloadToFile不断从恶意网址上下载各种盗号木马,替换系统文件,导致系统极慢。

本以为把这个驱动干掉就可以结果,发现重新启动,该恶意又驱动又复活。下面我们就来解开他复活的神秘面纱。

从MBR区域获得的代码看来,该MBR 木马还是属于第一代的MBR BOOTKIT,只支持WINXP,不支持VISTA,WIN7(实际上支持后者的 BOOTKIT代码已经可以被找到,甚至有支持WIN7 X64的BOOTKIT)

MBR启动的时候减少高端内存32k,供木马驻留使用。然后将自己移到高端,然后进行解码,大概受一代没加密的影响,因为没加密的话,很容易在MBR区域里找到PE文件,从而很容易被查杀,所以2代进行了加密处理,运行时候动态解密后,同时在解密后的内存,就可以看到了那鬼影般的FISP.SYS了。然后挂接INT 13,BIOS读写中断,然后读取在4扇区的备份MBR到0:0X7C00,然后跳到原始MBR执行。(所以垃圾点的恢复方法是直接把4扇区的 写回MBR即可。)

   每当系统通过INT 13读写硬盘的时候,就会经过木马的中断挂钩,如果是写MBR的话,如果是普通写的话,则将对MBR的写转为对4扇区备份MBR的写,如果是扩展写的话,则直接避开写 MBR,如果是读的话,如果是对MBR的读,则转为对4扇区备份MBR的读取。然后判断 HOOKNTLDR的标志位是否设置了,如果设置了则直接调用原始INT 13中断,否则的话,先调用原始INT13,然后判断返回内存中的数据是否符合,不是则返回,是的话,则写入HOOK 代码,在0x9700:0x200中写入0x97204

然后将 HOOK代码写为CALL DWORD PTR[0X97200]则在HOOK代码被调用的时候,会将指令转移到0x97204对应的 木马代码中。然后设置HOOKNTLDR标志位为1,然后返回,等待着 NTLDR加载的时候调用木马的 HOOK CODE。

当NTLDR 在加载NTOS后,会调用到HOOK CODE ,木马接管后,会先扫描NTLDR的特征数据,之后可以通过他获得 NTOSKRNL的基地址,然后将自己的部分代码拷贝到NTOSKRNL的基地址+0x40的PE头空间处,然后找到函数ExVerifySuite,对其进行 HOOK,HOOK的代码则位于被拷贝的NTOSKRNL的基地址+0x40的PE头空间处,之后返回,等待HOOK代码被调用。

而 NTOSKRNL的内核初始化的时候,会调用Ioinitsystem,后者又会调用PsLocateSystemDll,后者会调用ExVerifySuite (EmbeddedNT),这时候,木马HOOK代码会获得调用,先检查CPU是否支持PAE模式,是的话则每个页表占用8字节,否则占用4字节,然后修改页目录表,将木马所在的物理地址0x97000映射到线性地址空间0开始的64k,页属性为存在的可写系统属性。刷新CACHE后,恢复ExVerifySuite函数钩子,然后调用线性地址0X2E4处的被映射的 木马代码(正常情况下访问这个地址会导致蓝屏,但木马映射了内存后就可以直接访问了。)

  下面就比较简单了,首先获得NTOSKRNL的基地址,然后通过覆盖方式,将MBR区域里的 FIPS.sys驱动通过覆盖方式写入到 \systemroot\system32\drivers\fips.sys下,没有则创建,有则覆盖,所以不管原来的 FIPS是否存在都不重要,同时这个时候的启动时机很早,几乎没有安全软件可以拦截。所以FIPS的驱动写入几乎是不可阻挡的。写完后就结束所有操作就返回了。

也许有人问,写入的驱动什么时候被执行呢?其实在 XP下驱动的注册表里是存在这项的,既然文件已经被替换了,那自可以让系统替我们加载。一切都那么顺理成章。

只要驱动起来了,那么所有杀毒软件自然也就都完了,基本也就天下无敌了。
2011-3-31 10:35
0
雪    币: 427
活跃值: (488)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
说白了,核心就是hook int 13+TSR+FAT32(NTFS),接下来一切顺理成章
2011-3-31 11:04
0
雪    币: 386
活跃值: (46)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
看来这个大神早就分析透了
2011-4-6 09:48
0
雪    币: 220
活跃值: (721)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
用LZ的代码在WIN XP SP2机器上运行没RESSDT
2011-4-6 10:17
0
雪    币: 232
活跃值: (105)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
14

我测试成功了呀。。。。
2011-4-6 10:19
0
雪    币: 585
活跃值: (573)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
15
wowocock大牛的分析 很详细很不错,,
2011-4-19 16:29
0
游客
登录 | 注册 方可回帖
返回
//