能力值:
( LV2,RANK:10 )
|
-
-
2 楼
以前分析过……不过这些无花无VM的逆向应该还不能得精华吧……发驱动的时候记得发硬盘IO那部分的逆向和注释哈……这样比较有冲击力……
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
顶啊, ,,,同时占座
|
能力值:
( LV5,RANK:70 )
|
-
-
4 楼
顶一下观望
|
能力值:
( LV12,RANK:230 )
|
-
-
5 楼
要看r3的话不用找鬼影,它亮点不在这。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
“ZwSystemDebugControl直接写物理实际内存”
|
能力值:
( 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来干卡巴.
把后边的也分析了吧.
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
膜拜神牛…十分感谢
|
能力值:
( LV8,RANK:120 )
|
-
-
9 楼
谢谢大牛。。
立马更新这个错误
|
能力值:
( 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下驱动的注册表里是存在这项的,既然文件已经被替换了,那自可以让系统替我们加载。一切都那么顺理成章。
只要驱动起来了,那么所有杀毒软件自然也就都完了,基本也就天下无敌了。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
说白了,核心就是hook int 13+TSR+FAT32(NTFS),接下来一切顺理成章
|
能力值:
( LV5,RANK:60 )
|
-
-
12 楼
看来这个大神早就分析透了
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
用LZ的代码在WIN XP SP2机器上运行没RESSDT
|
能力值:
( LV8,RANK:120 )
|
-
-
14 楼
额
我测试成功了呀。。。。
|
能力值:
( LV13,RANK:290 )
|
-
-
15 楼
wowocock大牛的分析 很详细很不错,,
|
|
|