作为知名的渗透测试神器,CobaltStrike 被很多攻击组织和渗透测试团队使用,其中不乏知名的APT组织。对于防御方而言,对它的检测就成为了一个重要的课题。不过,躲避检测是CobaltStrike的一个重要特色。开发者在伪造正常通信方面做了大量工作,通过流量检测发现其踪迹十分困难。

躲避检测是CobaltStrike的一个重要特色。由于在伪造正常通信方面做了大量工作,通过流量检测发现其踪迹十分困难。特别当其采用TLS方式进行C2通信时,这个难度将会更大。以下,我们将以Malware-traffic-analysis.net最近公布的QakBot流量样本【1】为例,参考【2】给出的两种CobaltStrike TLS检测方法—证书检测和JA3/JA3S检测,并对照这两种检测方法的更权威描述【3】【4】,对此做一简要分析。

1、 证书检测

文章【3】中,给出了流量检测发现CobaltStrike的多种方法和相关指标,其中证书检测的指标如下:

这里面包含了证书颁发者、证书使用者、证书序列号、证书指纹以及证书有效期等5项内容,并特别指出使用这些指标进行检测的前提条件是:管理员没有替换掉默认证书

再看样本中提取出的证书情况:

1)证书颁发者

2)证书使用者

3)证书序列号

4)证书指纹

5)证书有效期

与【3】给出的5项指标对比,样本中只有证书颁发者和证书使用者2项指标符合条件。

这还是使用者未替换默认证书的情况,实际上,使用者完全可以自己生成证书并替换掉默认证书,或者采取像【2】提出的修改证书办法。所以,证书检测发现CobaltStrike的效果十分有限。

2、 JA3/JA3S检测

文章【4】给出了通过ClientHello指纹识别TLS客户方产品的方法,文章【2】给出的CobaltStrike指纹是下图中红色箭头所指的5项指标,即:TLS版本、密码算法组、扩展长度、扩展项—椭圆曲线、扩展项—椭圆曲线点格式。

再看实际样本的情况:

里面只有TLS版本、密码算法组、扩展项—椭圆曲线点格式这3项指标与检测指标符合。另两项指标:扩展长度,二者取值不同;扩展项—椭圆曲线,在实际样本中没有出现。

因此,JA3/JA3S检测对于CobaltStrike,效果也不明显。实际上,在收集到的JA3/JA3S检测指标列表中【5】,并没有包含CobaltStrike,这也说明通过JA3/JA3S检测发现CobaltStrike是很困难的。

虽然CobaltStrike采取了很好的反检测措施,但也不是对它就一点办法都没有,这方面【3】做了很细致的工作,感兴趣的可以参考。

参考链接:

1. https://www.malware-traffic-analysis.net/2020/index.html

2. https://www.freebuf.com/articles/web/246863.html

3. https://www.recordedfuture.com/cobalt-strike-servers/

4. https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967

5. https://github.com/salesforce/ja3

声明:本文来自国家网络威胁情报共享开放平台,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。