首页
社区
课程
招聘
[原创]驱动保护-EAC内核调试检测分析
发表于: 2022-10-27 18:12 25167

[原创]驱动保护-EAC内核调试检测分析

2022-10-27 18:12
25167

客户机:     VMWare16 + Win10.17763 x64, 4核,8G

宿主机:     Win10


启动应用,EAC驱动加载,首先会主动触发一个单步调试异常。

反调试很常见的一种调试器检测方法,调试器忽略此次异常即可(gn)。

gn以后,系统卡死无反应并且无法中断到调试器。挂起系统,使用vmss2core转储dump(VMWare官网下载vmss2core)。

使用WinDBG加载dump,查看系统挂起原因。

CPU0-2未见异常,CPU3看起来进入了死循环,继续查看:

当有调试事件发生需要中断到调试器时需要调用nt!KdEnterDebugger函数,函数内部如果触发了异常,则会产生无限递归,资源耗尽后会触发KeBugCheckEx调用。为了正常中断到调试器,可以先把 fffff804`447b3e71 处指令NOP掉。


重新尝试,重启虚拟机,内核附加调试,NOP fffff804`447b3e71(nt!KdEnterDebugger+0x131) 处指令:

启动应用,调试器可以正常中断了:

需要注意此时EAC已经设置nt!KdEnteredDebugger(0xfffff80170a4a900)和nt!KeBugCheckEx(0xfffff801707cbb40)两个硬件断点

检测机制已经很清晰了:

nt!KdEnteredDebugger下硬件写断点,对nt!KeBugCheckEx下硬件执行断点;

主动触发CC断点异常;

如果内核调试开启且调试器已附加,则内核调试引擎会执行nt!KdEnterDebugger中断到调试器以报告异常;

nt!KdEnterDebugger写入nt!KdEnteredDebugger触发硬件写断点;

资源允许则回到3形成递归调用,资源不足则调用nt!KeBugCheckEx;

nt!KeBugCheckEx触发硬件执行断点,回到3形成递归调用。(系统卡死,不会形成崩溃转储)

gn忽略EAC主动触发的CC异常,继续执行:

可以看到nt!KdExitDebugger同样会写nt!KdEnteredDebugger字段,按同样方式NOP掉即可。


对CC进行gn之后,我们发现虽然系统正常运行,但是调试机再次'失联'了,并且应用提示检测到’调试模式‘,查看dump,可以发现nt!KdDebuggerEnabled被清零了,这是一个对内核调试很重要的字段,清零就意味着客户机不会再响应调试器的任何请求。

机制很简单,我不打算继续深究其具体实现,打补丁,过校验等,也许可以用一种相对通用的思路来解决这种检测(考虑到TP等也有类似的检测机制):

nt!KdDebuggerEnabled及nt!KdDebuggerNotPresent换个位置存储

找到系统对这两个变量的引用,重定向到我们指定的位置


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 21
支持
分享
最新回复 (14)
雪    币: 210
活跃值: (1697)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
+1
2022-10-27 19:24
0
雪    币: 6
活跃值: (3290)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习了
2022-10-27 19:50
0
雪    币: 193
活跃值: (517)
能力值: ( LV2,RANK:16 )
在线值:
发帖
回帖
粉丝
4
学习了
2022-10-27 21:15
0
雪    币: 827
活跃值: (385)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
前排支持,等待续
2022-10-28 03:34
0
雪    币: 6084
活跃值: (5490)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
6
感谢分享,收藏
2022-10-28 10:30
0
雪    币: 3738
活跃值: (3872)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
感谢分享!
2022-10-28 14:34
0
雪    币: 10
活跃值: (874)
能力值: ( LV3,RANK:27 )
在线值:
发帖
回帖
粉丝
8
+1
2022-10-29 11:35
0
雪    币: 603
活跃值: (4223)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
感谢分享
2022-10-29 11:39
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
10
666666666
2022-10-29 11:49
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
学习了
2022-10-31 09:57
0
雪    币: 206
活跃值: (1981)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
666666666666666666666666666666666666666666
2022-11-1 14:43
0
雪    币: 1907
活跃值: (5999)
能力值: ( LV7,RANK:116 )
在线值:
发帖
回帖
粉丝
13
之前看过用vmss2core转储后抓lsass.exe的hash,今有vmss2core分析反作弊驱动,get!
2022-11-1 15:17
0
雪    币: 63
活跃值: (738)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
VirtualCC 之前看过用vmss2core转储后抓lsass.exe的hash,今有vmss2core分析反作弊驱动,get!
老哥问下这个软件有DUMP教学使用吗?我看得是要蓝屏得时候WINDBG挂起才能用。
2022-11-11 03:03
0
雪    币: 1802
活跃值: (4000)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
mark
2022-11-12 09:33
0
游客
登录 | 注册 方可回帖
返回
//