cobaltstriken3 key 逆向分析 key 生成过程
旧笔记 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 方法解密
利用 RSA 解密授权文件
判断文件头
判断授权文件头是否匹配
取授权文件前 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 授权文件发出时间
授权文件结构
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论