cobaltstriken3 key 逆向分析 key 生成过程

发布于 2024-09-02 19:39:51 字数 2060 浏览 14 评论 0

旧笔记 cs3 的 key 生成过程

授权流程分析

1. common.License 文件去调用 common.Authorization 文件
2.Authorization 文件读取 cobaltstrike.auth 文件并创建 AuthCrypto 类然后调用 decrypt 方法解密 auth 文件。
3.AuthCrypto 类主要是使用 RSA 算法读取 jar 包内 resources/authkey.pub ​ 私钥然后利用它去解密 cobaltstrike.auth 文件
4.然后调用 DataParser 类去解析
5.最后调用 gunzip 函数解压缩
6.成功返回授权信息

函数分析

Authorization 调用 decrypt 方法解密

ScreenShot_20191208163252.png

利用 RSA 解密授权文件

ScreenShot_20191208163642.png

判断文件头

判断授权文件头是否匹配

2019-12-08164003.png

取授权文件前 4 个字节

文件头十六进制 \xca\xfe\xc0\xbb

获取压缩数据偏移

return CommonUtils.gunzip(dataParser.readBytes(dataParser.readShort()));
public int readShort() throws IOException {
this.content.read(this.bdata, 0, 2);
return this.buffer.getShort(0) & 0xFFFF;
}

取前两个字节代表压缩数据长度

public byte[] readBytes(final int n) throws IOException {
final byte[] array = new byte[n];
this.content.read(array);
return array;
}

根据长度返回压缩数据(注意这里是从第 6 个字节开始因为前 4 个字节代表文件头在后两个字节代表压缩数据长度)

最后转成 string 字符串然后在以,号为分割符转成 string 数组
例子如下

9022-418a-b376-ab71,200908,1873433027,1546198065476
final String[] array = CommonUtils.toArray(CommonUtils.bString(decrypt));

[0] License key 许可证 key
[1] End date 授权过期时间
[2] Watermark 水印
[4] issued 授权文件发出时间

授权文件结构

authfile.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

顾北清歌寒

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文