首页
社区
课程
招聘
[原创]某内核注入型外挂样本原理分析。震惊!火绒惨遭利用,蓝洞或成最大输家。
2018-7-27 11:14 40573

[原创]某内核注入型外挂样本原理分析。震惊!火绒惨遭利用,蓝洞或成最大输家。

2018-7-27 11:14
40573

0x00  概述

近日,我们发现一款内核注入型的外挂,使用类似火绒dtrampo.dll的早期注入技术(相关源码见https://gitee.com/hzqst/FuckTP/blob/master/FuckTP/inject.c)。

该外挂在游戏还未创建窗口时就已经加载完成,注入时机非常早,并且只需要加载一次驱动后便不需要依赖外部EXE即可完成注入。


0x01  样本溯源

该外挂会生成两份驱动(随机名且无后缀名,其中一个驱动带签名,另一个不带签名)到”我的文档”下,并且如果当前系统没有安装火绒的话,还会加载一份火绒的驱动(sysdiag.sys)

该外挂首先以正常的sc start方式加载带签名的驱动


截至发布本文时该样本所用的签名尚未吊销,该公司全名为河南忆之东科技有限公司,搜索其备案域名可以发现如下信息:






根据域名和发帖内容猜测该公司有经营一些提卡售卡(卡盟)和支付相关的业务。


该驱动未加壳,但是使用了O-LLVM(https://github.com/Qrilee/llvm-obfuscator,https://blog.his.cat/a/vs_obfuscation.cat)编译,因此会在源码里插入很多无用分支。


0x02  分析


DriverEntry如下,没有什么特别的,核心功能在InitAll中



InitAll上来会碰到很多OLLVM插入的无用分支,我们手动忽略



往下继续分析,碰到第一个样本行为是动态禁用PatchGuard




其中win7和win10分别用了两种方式



其中win7PG第一段是手动加载ntos内核并使用特征码搜索一些PachGuard的东西










大致就是搜索到PatchGuard的加密context并解密,然后修改其中的关键函数如ExQueueWorkItem为空函数,然后再加密回去。相关的代码如下,这里不细讲。



然后是禁用win10的PatchGuard:





基本就是抄的https://github.com/killvxk/DisableWin10PatchguardPoc,这里也不细讲了。

需要注意的是他只处理了pool内存中的pgcontext,没有处理MmAllocateIndependentPages分配的内存,可能有几率导致蓝屏。


然后接下来该样本以手动map方式加载自身sys:









核心在于调用MmCreateSection和MmMapViewInSystemSpace,将一片可读可写可执行的虚拟内存映射到驱动所在的地址空间附近,效果类似于在ring3使用CreateFileMapping+MapViewOfFile映射一片内存,然后该样本自己完成节表的重定位、修复导入表等工作,最终在常规驱动所在的地址空间中得到一片可读可写可执行的内存,里面是手动加载的新的样本驱动,用PsLoadedModuleList链表无法枚举到,并且没有驱动对象。

加载完成后该样本会调用新驱动的入口点。


手动加载的新驱动会劫持Null设备的fastio接口,让其跟R3程序通信。





特征码为0F B6 D0 48 8B BC 0B 28 04 00 00,在火绒的sysdiag.sys驱动中可以直接搜索到




可以看到SpinLock+0x428是一个大小32的数组,里面存放了32个回调地址,火绒的主镜像回调会依次调用这32个回调(如果不为0)。该样本就劫持了第一个回调地址,并往里面写入了一串加密的跳板,用于隐藏他的本体函数

跳板的模板如下:


从pchunter中我们可以清楚地看到他的跳板 :

跳板2:




FFFFF88003446FC0即是回调地址,可以看到回调确实处于常规驱动所在的空间附近:


回调地址由这里填充:


至此初始化全部完成,可以启动游戏。


游戏启动阶段,系统调用火绒的镜像回调时就会进入该样本的镜像回调。回调行为如下:







注入原理基本类似于火绒早期注入

(https://gitee.com/hzqst/FuckTP/blob/master/FuckTP/inject.c 和 https://www.cnblogs.com/yifi/p/6389251.html)

这里就不详细介绍了。唯一的区别是该样本hook的是ZwContinue,火绒hook的是ZwTestAlert。

至此该样本分析完毕。截至发文时,该外挂已维护。


本文涉及的样本已经全部上传附件。

0x03 总结

0、  使用OLLVM编译驱动加入很多混淆代码和无用分支干扰分析。

1、  利用MmCreateSection+MmMapViewInSystemSpace将自己映射到驱动空间,而不用使用pool内存,防止自己被Battleye扫描pool内存扫到。

2、  劫持null设备的fastio派遣函数与R3程序通信。

3、  劫持火绒镜像回调,获得早期注入时机。

4、  禁用PatchGuard,不过似乎在该样本中没有意义(不需要)。


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

最后于 2018-7-28 11:56 被hzqst编辑 ,原因:
上传的附件:
收藏
免费 5
打赏
分享
打赏 + 7.00雪花
打赏次数 2 雪花 + 7.00
 
赞赏  老坛酸菜TM   +2.00 2018/07/30
赞赏  junkboy   +5.00 2018/07/27
最新回复 (47)
雪    币: 914
活跃值: (2188)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
万剑归宗 1 2018-7-27 11:15
2
0
先抢个1楼
雪    币: 2435
活跃值: (540)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
FANTASYING 2018-7-27 11:17
3
0
表哥流批
最后于 2018-7-27 11:17 被FANTASYING编辑 ,原因:
雪    币: 70
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
FadeTrack 1 2018-7-27 11:20
4
0
mark 刘明,出售瓜子饮料,表哥良心,附件内含 i64文件,你们懂的,再次膜拜并感谢表哥分享
最后于 2018-7-27 11:26 被FadeTrack编辑 ,原因: 表哥良心,附件内含 i64文件,你们懂的。
雪    币: 3110
活跃值: (143)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
sorrywyb 2018-7-27 11:24
5
0
刚才还在群里说,现在直接发了,表哥威武
雪    币: 433
活跃值: (1825)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
萌克力 2018-7-27 11:42
6
0
sorrywyb 刚才还在群里说,现在直接发了,表哥威武
群号多少呀
雪    币: 3466
活跃值: (3512)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
fengyunabc 1 2018-7-27 12:13
7
0
表哥厉害!
雪    币: 225
活跃值: (2539)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
章鱼C 2018-7-27 12:57
8
0
UC震惊部???
感觉这个驱动做了不少多余的事情
BE应该不会去扫内存的
火绒大法好 逮着谁注谁
雪    币: 47
活跃值: (2014)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
X-Blades 2018-7-27 13:04
9
0
大佬 活跃度不是一般的高  内容从来不水
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kakasasa 2018-7-27 14:18
10
0
mark 感谢分享.
雪    币: 5027
活跃值: (2541)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
FaEry 6 2018-7-27 14:43
11
0
passpg 厉害
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
luskyc 2018-7-27 15:20
12
0
火绒,借尸还魂,内核注入,蓝洞又输了
雪    币: 6606
活跃值: (3061)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
asd 2018-7-27 16:27
13
0
llvm-obfuscator 已经被吃了 谁上传一个
雪    币: 583
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
supersoar 2018-7-27 16:48
14
0
这玩意儿能在win10 上跑?不是说win10 不让 加载 非 徽标认证的驱动么。
雪    币: 182
活跃值: (586)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
柒雪天尚 2018-7-27 17:42
15
0
表哥流批 
雪    币: 204
活跃值: (911)
能力值: (RANK:1324 )
在线值:
发帖
回帖
粉丝
mratlatsn 10 2018-7-27 18:31
16
0
666
雪    币: 405
活跃值: (1950)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
wowocock 1 2018-7-27 19:09
17
0
本来在驱动中无所谓的是否利用,不过这里利用了可能对于火绒特殊放过,看了下火绒驱动,3个回调都可以被利用,基本很爽。
雪    币: 36
活跃值: (1021)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
芃杉 2018-7-27 19:39
18
0
mark
雪    币: 1176
活跃值: (1219)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
Tennn 5 2018-7-27 21:12
19
0
支持一个  。
实在想不通为什么动不动上驱动 驱动注入 驱动读写 明明r3可以做的事要那么费劲做啥。。。 
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
聖blue 2018-7-27 23:13
20
0
雪    币: 2063
活跃值: (3823)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lhxdiao 2018-7-28 16:48
21
0
现在的外挂都这么牛逼的吗?
雪    币: 583
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
supersoar 2018-7-29 01:56
22
0
Tennn 支持一个 。 实在想不通为什么动不动上驱动 驱动注入 驱动读写 明明r3可以做的事要那么费劲做啥。。。
估计 不上驱动就会 被别的驱动 保护啥的劫持呗。。。。
雪    币: 42
活跃值: (208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
老坛酸菜TM 2018-7-30 09:16
23
0
禁用PatchGuard处理在WIN10下的蓝屏问题
最后于 2018-7-30 09:16 被老坛酸菜TM编辑 ,原因:
雪    币: 1176
活跃值: (1219)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
Tennn 5 2018-7-30 16:08
24
0
supersoar 估计 不上驱动就会 被别的驱动 保护啥的劫持呗。。。。
强行跟劫持扯上关系 无非是姿势不到位
雪    币: 159
活跃值: (80)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
crackJ 1 2018-7-30 16:12
25
0
大佬给力,没事多发发些东西吧,让我们也多学习学习,辛苦大佬了
游客
登录 | 注册 方可回帖
返回