这次比赛出了三道流量题,一道 cs,一道冰蝎,一道二者结合的题目,第一次出这类的流量题所以很多东西没有研究的很深,出题思路可能经不起深究,欢迎各位师傅的交流与讨论

接下来看看题目

# 一起上号不

这题也是因为该流量所使用的工具命名的,cobalt
strike 是一个可多人协作的渗透工具

这个工具的流量特征其实挺明显的

过滤一下 http 流可以发现是 131 和 144 两台机子之间的通信

在本题中,可以看到流量包尾有一个 key.zip,导出 http 对象之后使用脚本提取出 private
key

https://github.com/Slzdude/cs-scripts

根据 cs 的工作流程可知,如果需要解密出通信的流量,得先知道协商密钥,而协商密钥和主机信息被使用 rsa 公钥加密之后放在了心跳包的 cookie 中

1
U8jm3+oqzYLuUiRd9F3s7xVz7fGnHQYIKF9ch6GRseWfcBSSk+aGhWP3ZUyHIkwRo1/oDCcKV7LYAp022rCm9bC7niOgMlsvgLRolMKIz+Eq5hCyQ0QVScH8jDYsJsCyVw1iaTf5a7gHixIDrSbTp/GiPQIwcTNZBXIJrll540s=

利用私钥解密该 cookie
https://github.com/WBGlIl/CS_Decrypt

得到:

1
2
AES key:ef08974c0b06bd5127e04ceffe12597b
HMAC key:bd87fa356596a38ac3e3bb0b6c3496e9

拿着 key 就可以去解密通信流量了
这里过滤 http 可以清楚的看到

第一个框心跳包的发送,发现有命令需要执行之后,teamserver 加密了数据包,并且作为返回包返回,body 部分包含命令,经过被控端的解码执行操作后,通过 POST 请求将加密的数据包发送回 teamserver,body 部分包含了命令执行的结果

因此,我们去拿 data 数据进行解密分析,根据脚本的要求,将 data 块进行编码操作之后放入脚本中

修改对应的值之后成功看到命令执行的回显内容,项目中还有一个脚本 CS_Task_AES_Decrypt.py 是解密执行的命令的,也就是心跳包的返回包,可以去尝试一下,但是本题用不到,最后能在第三个命令执行结果的请求包中解密获得 flag

SICTF{88a39373-e204-43b6-b321-33ac8972fde9}

# Easy_Shark