官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
cobalt strike 是护网中红队比较常用的c2工具 在检测中发现cs后门
可以用以下这几种方式进行反制。
cs上线流程分析
攻击者利用CS Server生成新的Beacon监听(包括一对非对称公私钥)并生成Stager;
攻击者投递Stager到受控主机;
受控主机在Exploit阶段执行小巧的Stager;
受控主机根据Stager Url请求特征向Beacon Staging Server下载体积较大更复杂的Stage到本地,Beacon Staging Server会校验Url的合法性;
Stage解密并解析Beacon配置信息(比如公钥PublicKey、C2 Server信息);
Stage通过公钥PublicKey加密主机的元数据并发送至C2 Server;
C2 Server用私钥解密数据获取主机元数据。
从上述流程中,我们能Get到2个核心点:
Stager Url校验算法
Beacon配置的解密算法
与CS Server合法通信的问题等价转换为获取Stager Url和Beacon解密问题,即:
CS/C2 Server合法通信 = (Stager Url校验算法,Beacon解密算法)
只要拿到了(Stager Url校验算法,Beacon解密算法),相当于我们掌握了与CS/C2 Server合法通信的凭据。我们分别对上述2个核心点进行分析。
也就是说,我们可以通过生成4位的随机校验码,通过checksum8算法获取文件,这里以7vv9为例:55+118+118+57-256=92
- checksum8:这个函数可能用于计算数据的8位校验和。它可以接收一个数据块作为输入,并返回一个8位的校验和值。校验和通常用于验证数据在传输过程中是否完整和准确,以检测数据损坏或错误。
- MSFURI:这个函数可能用于处理和操作Metasploit框架中的URL。Metasploit是一个流行的渗透测试和漏洞利用工具,"MSFURI"函数可能提供一些与URL相关的功能,如解析URL、提取URL参数等。
- isStager:这个函数可能被用于判断某个脚本或数据是否为Stager。Stager是指一段代码或载荷,用于在攻击中引导或加载后续的恶意代码。"isStager"函数可能会对输入进行检查和判断,以确定其是否符合Stager的特定条件。
Beacon配置解密算法
使用工具进行解密:https://github.com/Sentinel-One/CobaltStrikeParser
方法1 爆破cs弱口令
在收集到红队 teamserver 真实ip信息后 默认开放的端口是 50050
也可以使用masscan -p1-65535 ip 对服务器所有端口进行扫描
找到开放的端口 尝试破解口令。
破解 脚本 https://github.com/ryanohoro/csbruter
└─$ sudo masscan -p1-65535 192.168.10.158
Starting masscan 1.3.2 (http://bit.ly/14GZzcT) at 2023-06-28 03:49:39 GMT
Initiating SYN Stealth Scan
Scanning 1 hosts [65535 ports/host]
Discovered open port 8800/tcp on 192.168.10.158
Discovered open port 50666/tcp on 192.168.10.158
访问端口
然后抓包查看。发现有一段特殊字符。
全端口扫描也能扫到该端口。
指纹有可能不一样 这个版本是修改过的。
执行脚本
python csbruter.py -p 50666 192.168.10.158 top1000.txt
得到密码连接方对方的tamserver 即可。 再进行下一步操作。
方法2 CS RCE(CVE-2022-39197)反制红队主控制端
Cobalt_Strike <4.7.1 RCE (CVE-2022-39197) 在这个版本存在远程RCE 红队的版本比这个低的情况下 可以进行反制。
脚本下载地址 https://github.com/its-arun/CVE-2022-39197
原理是 在java swing 中 某个控件 存在rce 刚好 cs用到这个控件 因为长度有限制 目前主要的利用方法是,通过hook修改进程名加载远程恶意的jar包。
首先使用idea修改一下 jar包里面执行执行后门
接着生成jar包 mvn clean compile assembly:single
使用mvn打包。