目录
流量分析
(1)stage 下载
stager 可执行文件 artifact.exe 运行后会有一个 payload 下载过程,使用 http 协议从指定服务器下载 stage 。
其中 http 请求路径不唯一,但都符合一个 checksum8 规则,即:路径的 ascii 之和与 256 取余计算值等于 92 。
# /Yle2、/cKTZ、/wQPD
而下载的文件约 211kb,解析后可以看到回连地址、加密字段、公钥等配置信息
(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/
要求这三个文件在同一个目录下
运行脚本
抓包获得cookie进行rsa解密
解密网站:https://the-x.cn/cryptography/Rsa.aspx
可以看到主要就是上线的内容
此时 client 界面可以看见目标机器上线
(3)shell
这里的shell指令,对应“shell whoami”,其请求的url为/pixel.gif,包含指令数据。下一个包发送POST请求,url为/submit.php,body部分包含指令执行的结果,另外,接收到指令到执行完指令,并返回结果。
以post方式返回命令运行结果
(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指纹中,多个扩展由逗号分隔。
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消息。
centos-cs4.4-ja3s 指纹:00447ab319e9d94ba2b4c1248e155917
(5)https 证书
https-beacon 通信中,默认使用空证书建立加密通道,流量中可以看见这一过程。
checksum8 检查
同时命中以下三条规则则触发告警:
① 由客户端发起并与目标服务器建立连接:flow: established, to_server;
② 请求路径长度为5:urilen:4<>6;
③ 调用lua计算路径的ascii之和并与256做取余操作,结果为92:luajit:checksum8_check.lua 。
ja3/ja3s 检查
满足其中之一则命中规则触发告警:
① 采用黑名单机制,正则匹配由 beacon 端发起请求的 ja3 指纹;
② 采用黑名单机制,正则匹配由 c2 端返回的 ja3s 指纹。