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

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

2023-9-24 15:53
12829

项目地址: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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

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

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

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

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

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