本篇文章为大家展示了如何进行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检测方法与去特征的思考,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/221836.html