攻防演练 | 记一些常用的反制红队CS的思路
2023-8-16 14:8:15 Author: www.freebuf.com(查看原文) 阅读量:17 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

cobalt strike 是护网中红队比较常用的c2工具 在检测中发现cs后门

可以用以下这几种方式进行反制。

cs上线流程分析

1692165437_64dc653d117d41f18d9e0.png!small?1692165436779

攻击者利用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

  1. checksum8:这个函数可能用于计算数据的8位校验和。它可以接收一个数据块作为输入,并返回一个8位的校验和值。校验和通常用于验证数据在传输过程中是否完整和准确,以检测数据损坏或错误。

1692165449_64dc6549c4b172c03877b.png!small?1692165449523

  1. MSFURI:这个函数可能用于处理和操作Metasploit框架中的URL。Metasploit是一个流行的渗透测试和漏洞利用工具,"MSFURI"函数可能提供一些与URL相关的功能,如解析URL、提取URL参数等。

1692165460_64dc6554003579a9ec2ca.png!small?1692165459741

  1. isStager:这个函数可能被用于判断某个脚本或数据是否为Stager。Stager是指一段代码或载荷,用于在攻击中引导或加载后续的恶意代码。"isStager"函数可能会对输入进行检查和判断,以确定其是否符合Stager的特定条件。

1692165469_64dc655d3b1a0fec9ab4b.png!small?1692165469132

Beacon配置解密算法

使用工具进行解密:https://github.com/Sentinel-One/CobaltStrikeParser

1692165480_64dc65682cbbf274ff253.png!small?1692165480055

方法1 爆破cs弱口令

1692165498_64dc657a5647775983060.png!small?1692165498078

在收集到红队 teamserver 真实ip信息后 默认开放的端口是 50050

1692165564_64dc65bc975e31b763f8a.png!small?1692165564480

也可以使用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       

访问端口

1692165574_64dc65c646d1838e0eb39.png!small?1692165573986

然后抓包查看。发现有一段特殊字符。

1692165584_64dc65d09055bcc5f2d07.png!small?1692165584325

全端口扫描也能扫到该端口。

1692165592_64dc65d81d627427d5d29.png!small?1692165592051

指纹有可能不一样 这个版本是修改过的。

执行脚本

python csbruter.py -p 50666  192.168.10.158 top1000.txt

1692165602_64dc65e24b5b58726dcbe.png!small?1692165602452

得到密码连接方对方的tamserver 即可。 再进行下一步操作。

1692165612_64dc65ec66c3e327e6eb5.png!small?1692165612215

方法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包里面执行执行后门

1692165621_64dc65f5a171f7aa602b2.png!small?1692165621349

接着生成jar包 mvn clean compile assembly:single

1692165629_64dc65fd2e791cb2bd257.png!small?1692165628942

使用mvn打包。

1692165637_64dc66050a226c82a4ba9.png!small?1692165636844


文章来源: https://www.freebuf.com/articles/web/375072.html
如有侵权请联系:admin#unsafe.sh