前段时间,出了一个beaconEye的项目,以及golang版本的EvilEye通过扫描内存,由于以前为了防止被扫描beacon配置都是改XOR值,但是最终内存里面的都已经被还原出来,所以也是能此工具被解析出配置。网上也有给出一个hook sleep的bypass方法,以及一些bypass想法的文章,但是这些byapss方案都是基于去改CS 中的DLL,对于我这种逆向不行的人,感觉麻烦又有难度。
0x01 基本通信协议解析 要实现开发beacon与teamserver 交互?其实也简单,我们首先需要了解CS整个通信协议的过程,例如http请求,进而通过代码实现模拟请求。下面以http 协议作为例子,通过抓包查看http流量,可以发现依据sleep时间,就会隔几秒发送GET请求(心跳包),一旦接收到要执行的指令后,把执行的结果通过POST方式发送到teamserver:
1.当启动teamserver后,会把.cobaltstrike.beacon_keys反序列化为Keyparis对象,并把publickey和privatekey保存为AsymmetricCrypto对象中相应的属性,通过RSA传递AES密钥,达到数据加密安全。其中如果删除.beacon_keys,teamserver会重新生成新的公私对。
2.收集metadata信息(代码页、时间戳、程序id等信息并生成hash值),流程如下:收集数据->RSA加密->base64编码。
3.beacon 解密返回包(根据profile不同,编码方式不同),获取要执行的指令,由于我这里使用的是默认profile(更多profile),利用POST传输保存在cookie字段的数据,通过RSA AES-CBC加密。
以此往复就做到了基本的通信,更多的具体协议分析:https://www.52pojie.cn/thread-1426936-1-1.html
0x02 当前免*现状 突破的构想:既然我们上面已经列出了当前免*现状,以及局限性。其实还有一个重要点,经常有linux下控制的需求,但是CS都只支持windows。看到这里,应该很多人都想到了,有种方式可以直接解决这些弊端。那就是—-Golang。
对于我逆向不太会,只能对资源简单的修改,beacon行为被检测也不好分析调试,在实际渗透中,CS有时会被行为查*(*软开某种模式),但是你用msf或者简单反弹端口的beacon,反而能上线。这就给我有了一点启发,由于全球很多安全研究员都有分析CS特征行为等,可能还会出现下一个beaconEye。对此,我们如果能自己实现开发CS beacon与teamserver交互,用golang开发的beacon,手拿源码想怎么改都行,而且支持跨平台,简单好用。
现有已经有两个项目:CrossC2和Geacon,对比下两个项目,CrossC2源码未开源,存在安全疑虑,不能很好适配自己的各种profile,而且也不好用(它主要是想实现CS中多个内置命令)。而我现在只想要一个简单功能的beacon,且开源(方便自己修改和添加功能),Geacon就完全符合此需求,它实现了默认的beacon通信。下一章,将会讲解如何去修改geacon适配自己的自定义profile,实现windows与linux上线。
本文由anw2原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/258027
安全客 - 有思想的安全新媒体
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved