首页
社区
课程
招聘
伪造调用栈,返回地址在正常模块,支持R0,R3
2023-9-24 15:53 13188

伪造调用栈,返回地址在正常模块,支持R0,R3

2023-9-24 15:53
13188

项目地址:https://github.com/Oxygen1a1/callstack_spoof

前言

参考
https://jhinxs.com/x86%E4%B8%8Ex64%E6%A0%88%E5%9B%9E%E6%BA%AF/

https://labs.withsecure.com/publications/spoofing-call-stacks-to-confuse-edrs
其实是魔改的下面的这个人的项目 项目里面很多函数的名字可能相同
https://github.com/Barracudach/CallStack-Spoofer

原理

Barracudach的项目很好,我基本都是参考的他的思路(通过模板形参包来达到编译期间才生成shellcode这个思路真实绝了)。
但是他的有一个最大缺陷就是,shellcode(模板编程根据参数不同生成的不同函数就是shellcode,本质上是编译期间生成的各种同名函数,但是可以用作函数的包装器)分配在非模块内。
这是因为他对于R0的处理是ExAllocatePool,对于R3的shellcode是使用VirtualAlloc,最后他达到的效果如下
图片描述
可以看到,有一个shellcode作为返回地址,这样的话调用敏感函数,还是会爆炸,毕竟不在正常模块内;
而我的思路是这样的,R0 R3采取不同方法进行查找模块找到一块足够使用的空白内存(除了ntos,win32XX,hal,这样修改会PG),然后写入shellcode(不用担心shellcode作为包装器不适配,前面提到了这个是编译期间根据参数不同生成的不同的shellcode),这样返回地址就是正确的了;
最后达到的效果如下(R0),可以发现,返回地址是位于ci.sys的一个地址,当然这是代码随机找的,也有可能在beep.sys,总之任何有空位的地方,都有可能当作返回地址
图片描述
项目地址:https://github.com/Oxygen1a1/callstack_spoof


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

收藏
点赞5
打赏
分享
最新回复 (8)
雪    币: 4927
活跃值: (4448)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
~时光荏苒 2023-9-24 16:50
2
0
不错
雪    币: 19773
活跃值: (29385)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2023-9-25 09:09
3
1
感谢分享
雪    币: 253
活跃值: (497)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
chengqiyan 2023-9-26 16:10
4
0
试用下看看 ,晚点给出顾客评价
雪    币: 253
活跃值: (497)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
chengqiyan 2023-9-26 16:23
5
0

还是别用模板吧,总感觉这个挑C++版本,太新太旧都不行

最后于 2023-9-26 16:28 被chengqiyan编辑 ,原因:
雪    币: 1789
活跃值: (4445)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Oxygen1a1 2023-9-26 16:53
6
0
chengqiyan 还是别用模板吧,总感觉这个挑C++版本,太新太旧都不行
开C++ 17以上试试,还有记得关闭CFG,如果是调试模式下记得关闭JMT,还有运行库基本检查设置成默认值,增量链接关闭
雪    币: 253
活跃值: (497)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
chengqiyan 2023-9-26 17:33
7
0
解决了.不过他void类型返回值的没处理,是API函数需要套一层返回int或者其他,造个返回值函数
雪    币: 3730
活跃值: (3972)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
caolinkai 2023-10-7 18:02
8
0
感谢 分享
雪    币: 94
活跃值: (405)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dico 2023-10-9 14:58
9
0

请问SPOOF_FUNC的作用是什么?似乎可加可不加的样子。

最后于 2023-10-9 15:46 被dico编辑 ,原因: 问题修正
游客
登录 | 注册 方可回帖
返回