如何进行Cobalt Strike检测方法与去特征的思考
更新:HHH   时间:2023-1-7


本篇文章为大家展示了如何进行Cobalt Strike检测方法与去特征的思考,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

人云亦云

关于检测Cobalt Strike的方法有很多,而网上有一些文章会告诉大家如何修改所谓的特征值,但是这些方法实际上存在一定的误导和盲区

一般发现Cobalt Strike服务器的途径有以下几种(简单分类,不准确,勿喷)

样本分析

中马回连

黑客连主控端

扫描发现

这里被使用的比较多的就是扫描发现,同时网上一些文章提到Cobalt Strike默认的SSL/TLS证书是固定的,所以一般都是使用这个证书作为特征值来发现Cobalt Strike服务器

所以,今天我们主要讨论这个默认SSL/TLS证书的问题

证书修改

现在让我们提取这个证书的相关信息

根据网上一些文章的修改方法,我们需要使用keytool修改证书信息,方法如下

默认的证书具有很明显的特征,例如

O=cobaltstrike, OU=AdvancedPenTesting, CN=Major Cobalt Strike

我们拿这个信息去检索就可以发现许多Cobalt Strike服务器

但是这里忽略了一个问题,你到底修改的是什么证书,是主机上线的时候使用的吗?

这个证书是teamserver主控端使用的加密证书(默认端口50050)

修改这个证书以后teamserver服务器主控端的特征是没了

之前有一些人hunting C2服务器使用的就是这个规则

例如在fofa.so中,就有一条规则叫

protocol=="cobaltstrike"

当然,我们也可以使用

cert="Major Cobalt Strike"

直接搜索

这里需要注意,使用

cert="Major Cobalt Strike"

搜索会发现有一些主机并没有被标注为Cobalt Strike服务器

(存在漏网之鱼

当然为了保证数据的时效性,我们在fofa.so搜索的时候最好加上

after="2020-01-01"

重要的分割线!!!!注意!!!!

但是!https上线使用的证书,并不是上边我们修改的那一个,并且这个证书也是默认的...

证书信息如下图:

如果想要修改这个证书,需要修改Malleable C2 profile

其中Self-signed Certificates with SSL Beacon和Valid SSL Certificates with SSL Beacon是用来修改https上线使用的证书的,Self-signed Certificates with SSL Beacon根据字母意思理解,就是自己设定的自签名证书,还有如果使用了Valid SSL Certificates with SSL Beacon,我们在之前通过keytool设置的证书也可以用的上,但是这里应该让我们使用的是真实的证书,不管是偷来的还是买来的,用就完了

Let's Hunt!

使用fofa.so搜索相关证书信息

cert="73:6B:5E:DB:CF:C9:19:1D:5B:D0:1F:8C:E3:AB:56:38:18:9F:02:4F" && after="2020-01-01"

使用censys.io搜索相关信息

443.https.tls.certificate.parsed.fingerprint_sha256:87f2085c32b6a2cc709b365f55873e207a9caa10bffecf2fd16d3cf9d94d390c

这里我们可以发现一些有趣的现象,例如有些服务器的50050端口也开了,teamserver主控端的证书确实也是修改了,这证明攻击者还是会看一下文章学习如何去特征,但不幸的是只修改了一个

仅仅是扫描ip就能拿到所有证书吗?不能,我们也需要扫描域名,还有就是https也不一定只开在443端口上

据我们了解,好多人搭建C2服务器的方法都比较原始,比如在某云搭建C2服务器,不会使用slb/elb转发请求,不会使用security group控制访问,不会使用一些高明的隐藏C2的方法。并且烂大街的Domain fronting、CDN上线、高信誉服务等等也不会使用,就是上线梭哈一把刷.....真的是给蓝队兄弟们一条生路

等等,到这就完了吗?

检测加密流量

如果这些信息都修改了我们该怎么办那?

实际上还是有方法去检测的

我们可以参考https://github.com/salesforce/ja3这个项目

简单科普一下JA3

JA3方法用于收集Client Hello数据包中以下字段的十进制字节值:版本、可接受的密码、扩展列表、椭圆曲线密码和椭圆曲线密码格式。然后,它将这些值串联在一起,使用“,”来分隔各个字段,同时,使用“-”来分隔各个字段中的各个值。

这里相当于把支持的TLS扩展信息,都收集起来当作一个特征值来用(除了客户端发起的,还有关于服务器的JA3S)

这其实算一种降维打击,并且我们发现主流在线沙箱、主流IDS大都支持了JA3/JA3S指纹检测。

上述内容就是如何进行Cobalt Strike检测方法与去特征的思考,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注天达云行业资讯频道。

返回网络管理教程...