西湖论剑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 获取公钥

  1. 从流量包中导出相关数据,修改后缀为.vir
  2. 使用1768.py脚本解密获取公钥和其他信息
  3. 注意数据格式转换:from hex to base64

3.2 获取私钥

题目考查的是通过弱公钥解私钥的方法:

  1. 过滤流量包获取加密的cookie
  2. CS通信流程:
    • 使用AES Key和HMAC Key加密通信
    • 这些key是TeamServer用私钥解密第一个心跳包中的cookie生成的
  3. 使用RsaCtfTool工具对弱公钥进行攻击获取私钥:
    • 项目地址: https://github.com/RsaCtfTool/RsaCtfTool
    • 命令示例: python RsaCtfTool.py --publickey key.pub --private

3.3 解密cookie

  1. 使用获取的私钥解密cookie,得到HMAC Key和AES Key
  2. 使用Beacon_metadata_RSA_Decrypt.py脚本进行解密
    • 注意:原脚本使用的M2Crypto库已过时,需要更新相关代码

3.4 解密加密数据

  1. 使用CS_Task_AES_Decrypt.py脚本解密加密数据
  2. 需要将HMAC Key和AES Key填充到代码中
  3. 对四个操作分别进行解密,每个数据都需要from hex to base64转换

4. 流量包恢复

  1. 解密后得到一个secret.pcapng流量包
  2. 恢复流量包的方法:
    • 正常流量包以0A 0D 0D 0A开头
    • 6C 00 00 00结尾
    • 删除多余部分恢复原始格式

5. 最终flag获取

恢复的流量包是CS1.6的流量分析题,参考文章:

  • https://www.anquanke.com/post/id/261339
  • 需要分析so文件的C源码获取flag

6. 工具与参考

  1. cs-scripts项目: https://github.com/Slzdude/cs-scripts
  2. RsaCtfTool: https://github.com/RsaCtfTool/RsaCtfTool
  3. CS_Decrypt项目: https://github.com/WBGlIl/CS_Decrypt
  4. 参考文章: https://nnnpc.github.io/2024/04/16/CS流量浅析

7. 关键点总结

  1. 识别未魔改的CS流量特征(checksum8验证)
  2. 心跳包解密流程
  3. 弱公钥攻击获取私钥的方法
  4. cookie解密获取HMAC Key和AES Key
  5. 加密数据的AES解密过程
  6. 流量包格式恢复技巧
  7. 最终flag隐藏在恢复的CS1.6流量中

8. 注意事项

  1. 注意数据格式转换(hex to base64)
  2. 更新过时的Python库(如M2Crypto)
  3. 流量包恢复时要确保正确的开头和结尾格式
  4. 最终flag获取可能需要分析so文件的C源码
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源码