- 前言
- Cobalt Strike 简介
- Cobalt Strike 基本使用
- Cobalt Strike Beacon 命令
- Cobalt Strike 脚本使用
- Cobalt Strike 脚本编写
- Cobalt Strike 扩展
- Cobalt Strike 原理介绍
- Cobalt Strike 攻击防御
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
关于 BeaconEye 里的一点小 bug
BeaconEye这个工具很好通过检查程序heap中的特征来查看CS Payload效果也是非常好,但是这个工具有一个小bug在某些时候会无法查找到CS Payload
这个bug出现的主要是因为如下原因
这是它收集heap块的算法看似好像没有啥问题,PEB里找到heap数组和数组个数后就开始循环读取。但是作者没有考虑到另一种情况作者认为每个heap都是只有一个heap段
我们来从windbg查看
问题就出现在这里,很明显这里某个堆中存在两个heap Segment,如果按照作者那样我们就只能收集到3个内存块,如果只是收集到三个内存块还好,怕就怕在如果CS Payload调用malloc分配内存时刚好使用了这第二个segment没有使用第一个那就会造成BeaconEye漏掉了这块内存也就无法扫到特征
我们来试着修复这个问题,先查看_HEAP结构体
这是一个双向链表连接着所有的heap Segment,所以应该去遍历这个链表(忽视这个代码的垃圾吧) 原先的遍历代码有问题这里我直接引用D_infinite师傅的代码了
然后原先扫不到的现在就能扫到了
同时D_infinite师傅也发现一个新的问题之前堆块并未遍历导致如果批量分配大量的heap会产生新的绕过,这块并不好搞因为堆的机制比较复杂而且部分地方heap结构是加密的最好的办法是扫全内存,因为heap实现本身就微软内部的事
D_infinite师傅的文章:https://mp.weixin.qq.com/s/_gSPWVb1b-xuvhU6ynmw0Q
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论