顽固性木马病毒有感染MBR(磁盘主引导记录)的,有感染VBR(卷引导记录)的,还有用驱动对抗安全软件的,最近则出现了一种连环感染MBR和VBR的新型木马,我们将其命名为“双枪”木马。
1)摘要
“双枪”木马的感染迹象是浏览器主页被篡改为带有“18299-9999”编号的网址导航站,它的主要特点是采用三重循环保护模式,使其具备了相比“鬼影”、“暗云”等MBR木马更强的自我保护能力。
(1)滴水不漏的三重循环保护模式:
“双枪”木马首先感染MBR,MBR加载执行后会进一步感染VBR,VBR启动后会释放一个驱动并从网上下载改首页的木马驱动,而这个驱动将进一步检测MBR的状态,如果MBR被修复或未感染成功则回写MBR重复感染。MBR、VBR和恶意驱动的循环感染形成了木马的三重保护机制,只要有一个没被彻底清除,都可能导致木马原地复活。
(2)疯狂对抗杀软的恶意驱动:
被感染的VBR会释放并下载恶意驱动,这个驱动除了判断系统进程,更改并锁定中招电脑所有浏览器的主页外,还具备极强的木马保护功能,与杀软展开强有力的对抗。比如,它启动后就把驱动名指向加白驱动名,以此躲避杀软;它会保护MBR挂钩磁盘底层设备,对抗杀软的修复;它会篡改NTFS文件系统的驱动对象派遣函数,并开系统线程保证NTFS上的挂钩不被修复,以免正常进程删除它的木马文件;同时,由于该驱动会抢先启动,也使其的清除难度变得更高。
以下是从Windows Nt系统加载前 (BootKit) 和 系统加载后(RootKit)两部分对木马的执行流程进行详细分析。
2) NT系统加载前
2.1 MBR执行部分
该部分主要为将自身代码拷贝到 1FE0:7C00处执行。
然后判断第一个分区是否为活动引导分区
是活动分区读取VBR前面两个扇区,判断下引导分区是否为NTFS分区操作系统引导文件是BootMgr 或者是Ntldr。
接下来读取后续的0xf个扇区
将当前系统的BPB系统更新至恶意代码中同时将恶意代码刷回VBR。
紧接系统读取VBR 控制权转交给VBR部分
2.2 VBR执行部分
然后执行VBR 代码部分
将4ce * 2 = 99c大小的恶意代码解密到刚刚开辟的高端地址执行。
读取磁盘末尾的加密sys文件到0x9300 缓冲区,后续开机部分会解密这部分数据
扇区总数0x5a。
扇区偏移为 0x3a382c41 (磁盘大小为 500GB )
读取完成后挂钩系统15h中断为后续获得执行机会。
挂钩Int15中断
VBR执行后控制转移给了bootmgr加载处为0x2000。
2.3 BootMgr执行部分
BootMgr在获取系统内存信息时候调用Int15 而这个服务被木马挂钩
执行木马挂钩函数。
检测地址是否大于0x9000 bootmgr为 0x2000 且功能号是否E820。
如果是ntldr调用来且功能号位0xE820则搜索。
挂钩后代码为
该Int1中断会被触发多次, 当BootMgr后续代码被自身加载到 0x401000处执行后被触发
当系统控制权由 BootMgr 准备转移 Winload时候被也触发, 这是我们关心的中断。
即将被挂钩的系统函数为:
BootMgr! Archx86TransferTo32BitApplicationAsm
触发的相关指令为:
装载系统中断表
被中断 然后 往后 查找特征码 FF D0 查找范围为0x7f 然后
挂钩 。
挂钩前函数:
该挂钩函数主要为恢复Archx86TransferTo32BitApplicationAsm,挂钩Winload 里面两处函数 为后续系统进入Winload引导获取执行权限。
挂钩1为 查找特征码 0F 00 D8 实际上为函数 Winload!OslArchTransferToKernel
相关指令为:
并挂钩
挂钩后函数代码为
随后系统将执行到 OslArchTransferToKernel,
将控制权交给 Nt 时候 触发第二个挂钩。
执行的函数为 9ed38,
该函数主要为 申请 BK_LDR_CONTEXT 结构 挂入系统Boot驱动加载链
并调用该解密驱动的入口函数。
然后读取磁盘末尾5a个扇区数据 并将开机驱动异或写入磁盘尾部。
4)查杀方案
由于“双枪“木马会感染MBR和VBR,而很多杀毒软件还不支持检测修复VBR,因此会出现无法彻底查杀干净的情况。针对“双枪”木马的技术特点,360安全卫士可以自动检测和修复MBR及VBR,同时禁止恶意驱动的加载;进入系统后,只需要利用360安全卫士再次进行扫描查杀就可彻底清除该木马。



















































暂无评论内容