CobaltStrike是一个知名的红队命令与控制框架,采用Beacon <-> TeamServer <-> Client
架构。TeamServer存在受限路径穿越写文件与反序列化漏洞,可以被认证后客户端恶意利用。Client存在反序列化漏洞,可以被RogueCS攻击。
山寨威胁建模
由于这个软件的特殊性,我们需要想想什么才是漏洞:
-
直接攻击TeamServer暴露的服务
-
通过Beacon攻击TeamServer
-
通过Client攻击TeamServer
-
通过TeamServer攻击Client
-
TeamServer控制Beacon是功能,任何所谓TeamServer攻击Beacon的操作都不能算漏洞
可以看出TeamServer是核心,先从它下手。
历史漏洞
-
in-the-wild
利用TeamServer从Beacon下载文件时,会将Beacon可控数据中的IP字段作为目录的特点,实现路径穿越写计划任务RCE。
-
CVE-2021-36798
利用TeamServer从Beacon加载截图和键盘记录时,会根据Beacon可控数据中的字节大小申请内存的特点,实现内存耗尽DoS。
-
CVE-2022-23317
猜测是为了兼容proxy
的功能(路径为http://
开头),没有对URL路径做严谨的校验。动态调试可以看出这会绕过profile相关配置,直接拿到公钥等数据:
虚假的DoS
BeaconC2.process_beacon_data
中存在一处利用条件比较苛刻的DoS。
...
int var4 = var3.readInt();
...
if (var4 > var3.available()) {
return false;
}
...
byte[] var5 = new byte[var4];