背景
CobaltStrike(简称CS)作为一款渗透测试神器,采用C/S架构,可进行分布式团队协作。CS集成了端口转发、服务扫描、自动化溢出、多模式端口监听、Windows exe与dll 木马生、Java 木马生成、Office 宏病毒生成、木马捆绑等强大功能,深受广大红队同学的喜爱。为了规避侦测,红队往往会对CS采用一些隐匿手段,常见方式有云函数和CDN等。这些隐匿手段隐匿了CS的真实IP,诸如DDoS之类的流量无法穿透CDN到达CS,常规的攻击方式难以对CS服务器形成有效干扰和打击。只能止步于此了吗?有没有反击CS的奇技淫巧?答案当然是肯定的!接下来带各位看官体验一种批量伪造肉鸡来戏耍CS的新方法,希望各位蓝队同学引(付)以(诸)为(实)戒(践)。
CS上线流量特征分析
首先,我们先研究下CS上线的流量有无特征。图1使用Wireshark分析HTTP型Beacon的上线包。
[<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4fb9f7d3bd144382bb34782f6c866207~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=https%3A%2F%2Fwww.oschina.net%2Faction%2FGoToLink%3Furl%3Dhttps%253A%252F%252Fp3.ssl.qhimg.com%252Ft010c554042013d5152.png "https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fp3.ssl.qhimg.com%2Ft010c554042013d5152.png"" style="margin: auto" />
图1
肉眼来看,上线包的敏感信息隐藏到了Cookie中,特征非常明显。通过进一步分析,我们发现上线包的请求Cookie值是受控主机元数据经过非对称加密后的密文,CS服务器接收到Cookie值后进行解密从而获取到受控主机信息。受控主机元数据包含了若干敏感信息,如图2所示:
[<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/696ce1f966bf423086c6b5884474d59c~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=https%3A%2F%2Fwww.oschina.net%2Faction%2FGoToLink%3Furl%3Dhttps%253A%252F%252Fp3.ssl.qhimg.com%252Ft014e8344caee09fdb2.png "https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fp3.ssl.qhimg.com%2Ft014e8344caee09fdb2.png"" style="margin: auto" />
图2
此处划重点,HTTP型Beacon 上线包的核心在于Cookie,而Cookie是对受控主机元数据的非对称加密的密文。
HTTP Beacon重放实验
由于HTTP属于明文传输协议,HTTP型Beacon的上线过程存在中间人重放的可能。
我们做了一个简单的测试,验证了这种可能性(此处迫于运营小姐姐压力,稍微有凑字数嫌疑)。
首先抓取测试环境中的HTTP Beacon上线请求,使用Python脚本(如:图3)进行重放(注意:Header头信息不能错误,CS Server对Header头检查非常严格)。
[<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a4fe34a856df481081846f9c46dec145~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=https%3A%2F%2Fwww.oschina.net%2Faction%2FGoToLink%3Furl%3Dhttps%253A%252F%252Fp4.ssl.qhimg.com%252Ft01899a616477dfd2e9.png "https://www.oschina.net/action/