CobaltStrike 流量分析与入侵检测

目录

流量分析

(1)stage 下载

(2)beacon 上线

(3)shell

(4)ja3/ja3s

(5)https 证书

checksum8 检查

ja3/ja3s 检查


流量分析

(1)stage 下载

stager 可执行文件 artifact.exe 运行后会有一个 payload 下载过程,使用 http 协议从指定服务器下载 stage 。

其中 http 请求路径不唯一,但都符合一个 checksum8 规则,即:路径的 ascii 之和与 256 取余计算值等于 92 。

# /Yle2、/cKTZ、/wQPD

image-20240815100917181

image-20240815101002089

而下载的文件约 211kb,解析后可以看到回连地址、加密字段、公钥等配置信息

image-20240815101443142

(2)beacon 上线

随后 beacon 按设置的频率以 get 方法向 c2 服务器发起心跳请求,通过 cookie 携带靶机信息。

这个cookie是个非对称RSA加密类型加密后的内容,在RSA加密中,公钥用于加密数据,私钥用于解密数据。所以我们只要能拿到加密使用的公钥和待加密的明文

本地cs测试查看cookie的生成过程

需要先在本地找到私钥对cookie进行解密,看cookie的组成

先是生成私钥和公钥

java -cp "cobaltstrike.jar" DumpKeys.java

DumpKeys.java脚本地址:https://research.nccgroup.com/2020/06/15/striking-back-at-retired-cobalt-strike-a-look-at-a-legacy-vulnerability/

要求这三个文件在同一个目录下

image-20240722150605172

运行脚本

image-20240722150034678

抓包获得cookie进行rsa解密

解密网站:https://the-x.cn/cryptography/Rsa.aspx

image-20240815112031770

可以看到主要就是上线的内容

此时 client 界面可以看见目标机器上线

(3)shell

这里的shell指令,对应“shell whoami”,其请求的url为/pixel.gif,包含指令数据。下一个包发送POST请求,url为/submit.php,body部分包含指令执行的结果,另外,接收到指令到执行完指令,并返回结果。

image-20240815153344290

以post方式返回命令运行结果

image-20240815152914232

(4)ja3/ja3s

ja3 和 ja3s 分别代表 tls 握手阶段的 client-hello、server-hello 的数据集合计算出的哈希值(md5),相同版本相同系统下指纹相同,该特征与操作系统、cobaltstrike 版本有关,profile 文件无法对其修改。 JA3指纹的组成和格式

JA3指纹由TLS握手消息中的特定字段值组成,并使用逗号进行分隔。
​
组成
JA3_HASH,JA3_SSLVersion,JA3_CipherSuites,JA3_Extensions
​
JA3_HASH:这是根据TLS握手消息中的客户端Hello消息计算得出的哈希值,通常使用MD5或SHA256算法生成。JA3_HASH用于唯一标识TLS客户端的配置。
​
JA3_SSLVersion:这是客户端支持的TLS版本号。例如,TLS 1.2的版本号是0x0303,TLS 1.3的版本号是0x0304。
​
JA3_CipherSuites:这是客户端支持的加密套件列表。加密套件指定了用于加密通信的加密算法和密钥交换协议。每个加密套件都有一个唯一的标识号。在JA3指纹中,多个加密套件由逗号分隔。
​
JA3_Extensions:这是客户端在TLS握手消息中发送的TLS扩展列表。TLS扩展提供了额外的功能和安全性选项。常见的扩展包括Server Name Indication (SNI)、Supported Elliptic Curves、Supported Point Formats等。在JA3指纹中,多个扩展由逗号分隔。

image-20240816163551958

win10-https-beacon-ja3 指纹:28a2c9bd18a11de089ef85a160da29e4

JA3指纹和JA3S指纹是两种相关但略有不同的TLS指纹技术

JA3指纹(Just Another SSL/TLS Fingerprint):它是根据客户端发送的TLS握手消息中的字段值生成的指纹。这些字段包括SSL/TLS版本、加密套件、TLS扩展等信息。JA3指纹用于识别和分类不同的TLS客户端。
​
JA3S指纹(Just Another SSL/TLS Signature):它是基于服务器在TLS握手过程中发送的服务器Hello消息中的字段值生成的指纹。与JA3指纹不同,JA3S指纹用于识别和分类不同的TLS服务器。
​
JA3指纹和JA3S指纹的生成方法类似,都是通过计算握手消息中的字段值的哈希值来生成唯一的指纹。它们的区别在于指纹生成的消息来源不同:JA3指纹是基于客户端Hello消息,而JA3S指纹是基于服务器Hello消息。

image-20240816163856839

centos-cs4.4-ja3s 指纹:00447ab319e9d94ba2b4c1248e155917
(5)https 证书

https-beacon 通信中,默认使用空证书建立加密通道,流量中可以看见这一过程。

image-20240816175521716

checksum8 检查

同时命中以下三条规则则触发告警:

① 由客户端发起并与目标服务器建立连接:flow: established, to_server;

② 请求路径长度为5:urilen:4<>6;

③ 调用lua计算路径的ascii之和并与256做取余操作,结果为92:luajit:checksum8_check.lua 。

ja3/ja3s 检查

满足其中之一则命中规则触发告警:

① 采用黑名单机制,正则匹配由 beacon 端发起请求的 ja3 指纹;

② 采用黑名单机制,正则匹配由 c2 端返回的 ja3s 指纹。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值