layout: post
title: "CS流量分析记录"
subtitle: "CobaltStrike"
author: "Novocaine ^ Rand0m#[email protected]"
header-img: "img/post-bg-dreamer.jpg"
header-mask: 0.4
tags:
- CobaltStrike
0x01 前言
在一次CTF竞赛中杂项碰到了CS流量解密的题目,因为现场是离线环境,本地笔记虽然有cs流量解密的案例但是工具没准备,故比赛结束后抽空分析了一下。
整个解题过程确实非常精彩,但是解密的很多脚本在Windows上运行困难,光是Python加解密的类库和Pyshark库的坑就踩了两天,大部分时间其实在环境调试上,很废耐心,但是做出来那一刻还是很爽的。在调试环境时出现问题可以留言,我相信我踩过的坑已经踩全了。
原题是一个图片 binwalk出来一个压缩包,解压之后是个畸形的pcap包,修正pe头之后用ws打开。
在实战过程中分析cs流量概率很低,因为.cobaltstrike.beacon_keys文件正版都是随机生成的,但是盗版中这个文件是写死的,有大佬收集了10多个.cobaltstrike.beacon_keys文件的keys用来爆破RSA密钥,Respect。
本文使用的python脚本都在项目:https://github.com/minhangxiaohui/CSthing
0x02 分离公钥
这一步其实可以省略,但是如果因为cs版本的问题第二步解密失败了,可以使用第一步先分离出RSA的Private。
公钥被放在了pacp文件中,binwalk提取出来后,应该会出现.cobaltstrike.beacon_keys文件。
python parse_beacon_keys.py
-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMDK2njlzNZQTuxA+EkOfL8ewGf9
QBolYb8S+oWvthlDi4powMkXT4piN2nMHh+YLJzMoq0Rr9ufalC/mHwIhGBEc62tltd6lnZEWDmj
syRtY+lLhoTVU9GYsUY0bI5z6Sco0MW4OTz760ZyHQLl+iLAPm3C2X7FFt9aSl+i6prdAgMBAAEC
gYADgF9bBvzPhBmlT/ev+JqUZ2p1tpNZRjeINyJfIKnNRZXRF5mSSvANOz8KUfqHxazgNik9H13/
Uhj+j5kvG4HgjrdNkYtfpg6pfoY7G0g3BR/kTjwAaIb9jWYPGm40xNGXR1qHRR2fxEc3Wz+OD01l
K+tpWo3lifJ0***hfo2HtzrW0YX+wgknLyq53TwrqKtcxOl
qhcXUY+7p1E=
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQ******pQv5h8CIRgRHOtrZbXepZ2RFg5o7MkbWPpS4aE
1VPRmLFGNGyOc+knKNDFuDk8++tGch0C5foiwD5twtl+xRbfWkpfouqa3QIDAQAB
-----END PUBLIC KEY-----
0x03 解密cookie
解密Cookie即metadata,使用cs-decrypt-metadata.py
使用方法:
cs-decrypt-metadata.py -f .cobaltstrike.beacon_keys [cookies值]
python cs-decrypt-metadata.py -f ".cobaltstrike.beacon_keys" PcdKQuOPNdlyJMzB9****nGedXTxAW6Seq0pUuqbA3d6h59a43lQH+2l4egkNL/aTuaMndjIcrM7HFHDQSumu/VoeG+O9vNB63W6YtJDidYt+SjFCZPOjcTblEU+CDGzN4xNO+bh1s=
Encrypted metadata: PcdKQuOPNdlyJMzB********enVE8IUWclknGedXTxAW6Seq0pUuqbA3d6h59a43lQH+2l4egkNL/aTuaMndjIcrM7HFHDQSumu/VoeG+O9vNB63W6YtJDidYt+SjFCZPOjcTblEU+CDGzN4xNO+bh1s=
Decrypted:
Header: 0000beef
Datasize: 0000004d
Raw key: fd1672c5c72****de6f2dde7a06f0
aeskey: d62ad6c7a2*****542089ea0347321
hmackey: 89635825b9*****3d459b3de05ebfd2
charset: 03a8 ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312)
charset_oem: 03a8 ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312)
bid: 46d76da8 1188523432
pid: 0fac 4012
port: 0
flags: 04
var1: 54
var2: 46
var3: 12809
var4: 825241138
var5: 825306677
var6: 892221193
var7: 1279872579
Field: b'*****'
Field: b'*****'
Field: b'4321.exe'
得到RawKey和hmaKey:aesKey
0x04 解密pcap流量
解密pcap流量
如果解密失败,加上-k hmaKey:aesKey试试
cs-parse-http-traffic.py decode时会有bug,可以把报错那行的decode编码删除直接看bytes,不影响阅读。
python cs-parse-http-traffic.py -r fd1672c*****7a06f0 -Y "http and ip.addr == 192.168.12.49" weblog.pcapng
Packet number: 186
HTTP response (for request 8 GET)
Length raw data: 208973
HMAC signature invalid
Packet number: 227
HTTP response (for request 225 GET)
Length raw data: 48
Timestamp: 1687675067 20230625-063747
Data size: 16
Command: 4 SLEEP
Sleep: 1000
Jitter: 0
Packet number: 443
HTTP response (for request 441 GET)
Length raw data: 64
Timestamp: 1687675091 20230625-063811
Data size: 37
Command: 78 RUN
Command: b'%COMSPEC%'
Arguments: b' /C whoami'
Integer: 0
Packet number: 450
HTTP request POST
http://192.168.12.49:10222/submit.php?id=1188523432
Length raw data: 180
Counter: 2
Callback: 30 OUTPUT
b"'\\Mac\Home\Desktop'rnxd3xc3xd7xf7xcexaaxb5xb1xc7xb0xc4xbfxc2xbcxb5xc4xd2xd4xc9xcfxc2xb7xbexb6xc6xf4xb6xafxc1xcb CMD.EXExa1xa3rnUNC xc2xb7xbexb6xb2xbbxcaxdcxd6xa7xb3xd6xa1xa3xc4xacxc8xcfxd6xb5xc9xe8xcexaa Windows xc4xbfxc2xbcxa1xa3rnli*****7155\*****rn"
原文始发于微信公众号(頭髪的特計):CS流量分析记录
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论