[Win11 22621] PatchGuard攻击思路

22621.1.amd64fre.ni_release.220506-1250

Baklib
狐白 最后一次编辑 大约 2 年前
372

前提

只能作为一种思路,不能完全解决PatchGuard

方法一 -guard_dispatch_icall

guard_dispatch_icall是在Win10中加入的一种防护 也就是CFG
我们所需要的拦截有 CmpAppendDllSection KiDpcDispatch KiDispatchCallout KiTimerDispatch FsRtlMdlReadCompleteDevEx
我们也要定位处理上面ntos中的静态函数
大部分DPC触发的PG都会经过这个函数,至于处理大部分的时候ret即可
不过这种方法遇到执行中的PatchGuard时可能就没办法了, 或者遇到Kebug 139拦路虎

方法二 -回光返照

顾名思义 我们在PG蓝屏时给恢复过来
PatchGuard蓝屏前会调用SdbpCheckDll清栈 所以不能以常规方法去恢复
并且 PG在蓝屏前会恢复蓝屏相关的函数 如: KeBugCheck KeBugCheckEx KeBugCheck2 RtlCaptureContext
所以如果你去Hook RtlCaptureContext  PG恢复代码后就寄了
所以要找个不会恢复的函数 那就是memset,KeBugCheck2调用
如果是Hook memset 是不会触发PG的
我们的函数里 就按照老v BackTo1942时光倒流处理即可
PG Context
后续处理 比如某些线程卡死 DPC蓝屏等问题 就只能慢慢分析了,大部分情况下是没啥问题的

方法三 -SwapContext

方法四 -怼WorkItem