查看: 1418|回复: 10
收起左侧

[技术原创] “双枪”狙击:首例连环感染MBR和VBR的顽固木马分析

[复制链接]
卡卡说
发表于 2017-7-13 19:29:51 | 显示全部楼层 |阅读模式
“双枪”狙击:首例连环感染MBRVBR的顽固木马分析顽固性木马病毒有感染MBR(磁盘主引导记录)的,有感染VBR(卷引导记录)的,还有用驱动对抗安全软件的,最近则出现了一种连环感染MBR和VBR的新型木马,我们将其命名为“双枪”木马。1)摘要
“双枪”木马的感染迹象是浏览器主页被篡改为带有“18299-9999”编号的网址导航站,它的主要特点是采用三重循环保护模式,使其具备了相比“鬼影”、“暗云”等MBR木马更强的自我保护能力。
(1)滴水不漏的三重循环保护模式:
“双枪”木马首先感染MBR,MBR加载执行后会进一步感染VBR,VBR启动后会释放一个驱动并从网上下载改首页的木马驱动,而这个驱动将进一步检测MBR的状态,如果MBR被修复或未感染成功则回写MBR重复感染。MBR、VBR和恶意驱动的循环感染形成了木马的三重保护机制,只要有一个没被彻底清除,都可能导致木马原地复活。
(2)疯狂对抗杀软的恶意驱动:
被感染的VBR会释放并下载恶意驱动,这个驱动除了判断系统进程,更改并锁定中招电脑所有浏览器的主页外,还具备极强的木马保护功能,与杀软展开强有力的对抗。比如,它启动后就把驱动名指向加白驱动名,以此躲避杀软;它会保护MBR挂钩磁盘底层设备,对抗杀软的修复;它会篡改NTFS文件系统的驱动对象派遣函数,并开系统线程保证NTFS上的挂钩不被修复,以免正常进程删除它的木马文件;同时,由于该驱动会抢先启动,也使其的清除难度变得更高。
以下是从WindowsNt系统加载前 (BootKit) 和系统加载后(RootKit)两部分对木马的执行流程进行详细分析。
2 NT系统加载前2.1 MBR执行部分
该部分主要为将自身代码拷贝到 1FE0:7C00处执行。
1.png
然后判断第一个分区是否为活动引导分区
2.png
是活动分区读取VBR前面两个扇区,判断下引导分区是否为NTFS分区操作系统引导文件是BootMgr 或者是Ntldr。
3.png
接下来读取后续的0xf个扇区
4.png
将当前系统的BPB系统更新至恶意代码中同时将恶意代码刷回VBR。
5.png
紧接系统读取VBR 控制权转交给VBR部分
6.png
2.2 VBR执行部分
然后执行VBR 代码部分
7.png
再次检查系统文件格式, 检查系统是否支持扩展Int13h。
8.png
后续将读取从VBR开始16个扇区到 0x7e00 缓冲区。
9.png
随后一个JMP指令被木马修改跳转到恶意代码执行。
10.png
恶意代码执行
11.png
为恶意代码执行分配空间
12.png
跳转
13.png
将4ce * 2 =99c大小的恶意代码解密到刚刚开辟的高端地址执行。
14.png
然后跳转到刚刚解密的高端地址执行  
解密系统原始VBR部分。
15.png
读取磁盘末尾的加密sys文件到0x9300 缓冲区,后续开机部分会解密这部分数据
扇区总数0x5a。
16.png
扇区偏移为0x3a382c41 (磁盘大小为 500GB )
17.png
读取完成后挂钩系统15h中断为后续获得执行机会。
挂钩Int15中断
18.png
挂钩后地址为 9e800+630 =9ee30
19.png
随后返回到解密的原始VBR处继续执行。
20.png
VBR执行后控制转移给了bootmgr加载处为0x2000。
2.3 BootMgr执行部分
BootMgr在获取系统内存信息时候调用Int15 而这个服务被木马挂钩
执行木马挂钩函数。
检测地址是否大于0x9000bootmgr为 0x2000 且功能号是否E820。
21.png
如果EB20 从系统返回结果中隐藏自身高端内存。
22.png
如果是ntldr调用来且功能号位0xE820则搜索。
23.png
对应代码为
24.png
挂钩后代码为
25.png
跳转到 9e800 +5e8 = 9ede8 处继续执行。
该函数主要设置硬件断点dr0 dr2 dr0针对xp以上系统 dr2针对xp
挂钩Int1后。
26.png
中断函数为 64字节中 低16偏移 高16位段偏移
90000 + F09c = 9F09c
27.png
设置硬件断点  替换系统中断
29.png
该Int1中断会被触发多次, 当BootMgr后续代码被自身加载到0x401000处执行后被触发
当系统控制权由BootMgr  准备转移 Winload时候被也触发, 这是我们关心的中断。
即将被挂钩的系统函数为:
BootMgr! Archx86TransferTo32BitApplicationAsm
触发的相关指令为:
30.png
装载系统中断表
被中断 然后 往后 查找特征码  FF D0 查找范围为0x7f 然后
挂钩 。
31.png
该挂钩函数为一个通用函数 :
32.png
挂钩前函数:
33.png
当系统执行到BootMgr!Archx86TransferTo32BitApplicationAsm
挂钩后函数跳转到9ef84处执行。
34.png
该挂钩函数主要为恢复Archx86TransferTo32BitApplicationAsm,挂钩Winload 里面两处函数  为后续系统进入Winload引导获取执行权限。
挂钩1为  查找特征码  0F 00 D8 实际上为函数 Winload!OslArchTransferToKernel
相关指令为:
35.png
查找特征码:
36.png
后续接着查找 0xcb 范围为 0x40 查找处即为 retf指令
将其Patch。
Patch后代码为
37.png
挂钩2 为  查找特征码 68 12 00 00 E0 , 实际上为函数Winload!OslpLoadAllModules
中对函数的调用BlImgAllocateImageBuffer 并保存该函数地址。
38.png
查找特征码
39.png
并挂钩
挂钩后函数代码为
40.png
随后返回到系统流程
2.4 Winload执行部分
系统执行到WinloadOslpLoadAllModules函数后,其中偏移177处已经被Inline挂钩
跳转到 9ef1e处执行。
41.png
该函数主要作用
解密 磁盘尾部的0x5a个扇区数据并加载, 调用BlImgAllocateImageBuffer  申请nt内存地址
解密调用 异或解密。
42.png
并且重定位好文件
43.png
调用BlImgAllocateImageBuffer
44.png
随后系统将执行到  OslArchTransferToKernel,
将控制权交给 Nt 时候 触发第二个挂钩。
执行的函数为 9ed38,
该函数主要为 申请 BK_LDR_CONTEXT 结构 挂入系统Boot驱动加载链
并调用该解密驱动的入口函数。
45.png
3 NT系统加载后3.1 联网下载改主页驱动
调用解密的驱动  该驱动主要功能为 网上下载另外一个改首页驱动。
46.png
创建下载线程
47.png
域名解析 分操作系统区分  Vista以上操作 使用Wsk函数 网络收发数据包。
先检测 该驱动是否加载
48.png
随后会检测该标志
49.png
联网下载代码
. 50.png
自己实现DNS域名解析  向53端口发解析数据包。
51.png
获取磁盘信息
52.png
计算发送统计数据
53.png
Base64编码后
54.png
发送给服务器 获取即将要下载驱动长度,
将下载下来的数据异或解密后加载执行。
55.png
而后加载该驱动
56.png
3.2 改主页驱动
驱动被加载后 创建设备名
57.png
然后开启线程  检测MBR是否被感染
读取
58.png
接着使用IOCTL_DISK_GET_DRIVE_GEOMETRY获取磁盘大小。
59.png
60.png
然后读取磁盘末尾5a个扇区数据  并将开机驱动异或写入磁盘尾部。
61.png
写入成功后写入MBR 第个扇区后 F个扇区。
62.png
最后写入0号扇区完成感染,  并且会挂钩磁盘底层设备Dispatch钩子保护自身MBR不被改写。
63.png
且会删除Grub启动项
64.png
改首页部分主要通过挂钩ProcessNotify注入进程完成。
65.png
注入的进程名字通过Hash计算
66.png
注入进程名
67.png
最后完成主页修改
68.jpg
4)查杀方案
由于“双枪“木马会感染MBR和VBR,而很多杀毒软件还不支持检测修复VBR,因此会出现无法彻底查杀干净的情况。针对“双枪”木马的技术特点,360安全卫士可以自动检测和修复MBR及VBR,同时禁止恶意驱动的加载;进入系统后,只需要利用360安全卫士再次进行扫描查杀就可彻底清除该木马。
69.png
skycai
发表于 2017-7-13 20:30:52 | 显示全部楼层
转帖的至少把原帖地址发下吧。
abcxzr5
发表于 2017-7-13 22:07:49 | 显示全部楼层
看到最后发现是软文,大意了
桑德尔
发表于 2017-7-13 22:38:52 | 显示全部楼层
还好机智的我直接去看结尾了
萧萧先生
发表于 2017-7-14 06:00:31 来自手机 | 显示全部楼层
这类文章我都是先看结尾
chengxy
发表于 2017-7-14 16:15:43 | 显示全部楼层
标题是技术原创啊,这是转帖吗??
yaoyunjia
发表于 2017-7-14 16:49:23 | 显示全部楼层
请问发这一贴能拿多少工资
wowocock
发表于 2017-7-14 17:03:15 | 显示全部楼层
首先感染源应该是木马驱动,执行后会修改MBR,MBR加载执行后,会感染VBR,而VBR启动后,又会从网上下载木马驱动,驱动中检测     MBR是否被感染,没感染或被修复,则继续感染MBR,导致反复3重互相保护。
3个环节有任何一个没被杀软清除,均可导致死灰复燃。
wowocock
发表于 2017-7-14 17:07:18 | 显示全部楼层
另外我就不说360急救箱完美查杀的话了,毕竟太高调不好,毕竟现在高级点的BOOTKIT,包括暗云系列,都往死里整360急救箱。对其他杀软不管不顾,就往死里整360急救箱,也是跪了。
KK院长
发表于 2017-7-14 18:41:05 | 显示全部楼层
我是gpt,呵呵
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛|优惠券| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.3( 苏ICP备07004770号 ) GMT+8, 2017-7-23 02:43 , Processed in 0.136858 second(s), 6 queries , MemCache On.

快速回复 返回顶部 返回列表