西湖论剑2025-0解题-CSCS详细分析
字数 1467 2025-08-29 08:30:31
Cobalt Strike流量分析与解密教学文档
1. 题目概述
这是一个关于Cobalt Strike (CS)流量分析的CTF题目,主要考查对CS流量特征的识别、心跳包解密、弱公钥攻击获取私钥以及最终的数据解密过程。
2. 初始分析
2.1 流量包检查
- 题目仅提供一个流量包文件
- 首先需要检查流量是否被魔改(修改了默认的CS特征)
- 使用checksum8算法验证流量特征:
- 32位后门checksum8结果为92
- 64位后门checksum8结果为93
- 题目流量符合未魔改Cobalt Strike的流量特征
3. 解密流程
3.1 获取公钥
- 从流量包中导出相关数据,修改后缀为
.vir - 使用
1768.py脚本解密获取公钥和其他信息 - 注意数据格式转换:
from hex to base64
3.2 获取私钥
题目考查的是通过弱公钥解私钥的方法:
- 过滤流量包获取加密的cookie
- CS通信流程:
- 使用AES Key和HMAC Key加密通信
- 这些key是TeamServer用私钥解密第一个心跳包中的cookie生成的
- 使用RsaCtfTool工具对弱公钥进行攻击获取私钥:
- 项目地址: https://github.com/RsaCtfTool/RsaCtfTool
- 命令示例:
python RsaCtfTool.py --publickey key.pub --private
3.3 解密cookie
- 使用获取的私钥解密cookie,得到HMAC Key和AES Key
- 使用
Beacon_metadata_RSA_Decrypt.py脚本进行解密- 注意:原脚本使用的M2Crypto库已过时,需要更新相关代码
3.4 解密加密数据
- 使用
CS_Task_AES_Decrypt.py脚本解密加密数据 - 需要将HMAC Key和AES Key填充到代码中
- 对四个操作分别进行解密,每个数据都需要
from hex to base64转换
4. 流量包恢复
- 解密后得到一个
secret.pcapng流量包 - 恢复流量包的方法:
- 正常流量包以
0A 0D 0D 0A开头 - 以
6C 00 00 00结尾 - 删除多余部分恢复原始格式
- 正常流量包以
5. 最终flag获取
恢复的流量包是CS1.6的流量分析题,参考文章:
- https://www.anquanke.com/post/id/261339
- 需要分析so文件的C源码获取flag
6. 工具与参考
- cs-scripts项目: https://github.com/Slzdude/cs-scripts
- RsaCtfTool: https://github.com/RsaCtfTool/RsaCtfTool
- CS_Decrypt项目: https://github.com/WBGlIl/CS_Decrypt
- 参考文章: https://nnnpc.github.io/2024/04/16/CS流量浅析
7. 关键点总结
- 识别未魔改的CS流量特征(checksum8验证)
- 心跳包解密流程
- 弱公钥攻击获取私钥的方法
- cookie解密获取HMAC Key和AES Key
- 加密数据的AES解密过程
- 流量包格式恢复技巧
- 最终flag隐藏在恢复的CS1.6流量中
8. 注意事项
- 注意数据格式转换(hex to base64)
- 更新过时的Python库(如M2Crypto)
- 流量包恢复时要确保正确的开头和结尾格式
- 最终flag获取可能需要分析so文件的C源码