首页
社区
课程
招聘
[原创]手动伪造调用栈,对抗堆栈回溯,支持R0/R3,附源码
发表于: 2小时前 124

[原创]手动伪造调用栈,对抗堆栈回溯,支持R0/R3,附源码

2小时前
124

堆栈回溯往往可以用来检测敏感API的调用方信息:

检测无痕注入(ShellCode远程Call):

对某国产摸金搜打撤游戏的外挂样本分析后,发现该外挂为手动映射(Manual Map)注入DLL到游戏进程。

通过调用虚幻(UE)引擎相关接口,实现绕过Object指针加密、坐标加密,并利用引擎射线检测(LineTraceSingle)进行掩体判断等,实现各种破坏游戏平衡性的功能。

对部分敏感API进行堆栈回溯,对于不在白名单内的调用方,可将异常调用信息记录并上报至服务端。

该外挂样本的分析工作已基本完成,后续有空会考虑发出来,感兴趣的朋友可以点个关注。

检测无模块驱动:

在如今游戏安全、内核对抗中为了隐藏驱动特征,这类方案通常会分为两层,外层驱动仅作为MapLoader(WHQL或未被AC拉黑的签名)负责PE映射、重定位表与导入表修复等操作,内层功能模块则以Shellcode或无模块映像的形式驻留/执行于内核态(R0),此时常见内核枚举/ARK工具无法在驱动列表中找到该驱动。

此时进行堆栈回溯,一旦回溯到调用方不存在于任何合法的模块范围内,可将该异常调用链记录并上报至服务端。

如下为效果图:

Before Spoof

After Spoof

这里需要实现一个汇编函数,作为Wrapper使用,并充当一个通用的函数调用器,其功能如下:

汇编代码如下:

遍历系统中的驱动模块,随机选取一个正常加载的模块,在其模块范围内搜索代码空洞,搜索成功后将ShellCode写过去,但需要注意以下内容:

此方案理论上同时支持R0、R3,实现代码大同小异,R0层完整源码已经开源,测试环境为Win10 19044,Github仓库地址Shinn-Home/CallStack_Spoof,欢迎感兴趣的朋友点个Star。


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

收藏
免费 6
支持
分享
最新回复 (4)
雪    币: 3032
活跃值: (6783)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
牛逼牛逼
1小时前
0
雪    币: 499
活跃值: (345)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享高质量内容
1小时前
0
雪    币: 174
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
看看
1小时前
0
雪    币: 51
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
谢谢楼主分享
1小时前
0
游客
登录 | 注册 方可回帖
返回