Cobalt Strike License
跟着许多大佬的文章分析过Cobalt Strike对License认证过程。整个License中最重要的就是解密Key。通过这个解密Key才可以对sleeve中的beacon与加载执行的PE程序进行解密。但在这个blog中不讲整个的认证流程,只说一下License的结构。(License就是cobaltstrike.auth)。由于可能会受Github的DMCA Policy影响,4.0-4.4的解密Key就不直接放出来了。如果有需要,可以直接向我发送邮件并表明你的需求;)
解析过程
根据 AuthCrypto.java
中60行判断读取的第一个 Int 长度的数据是否等于 -889274157
,进入到else
分支中,先读取了一个 Short 长度,并将剩余部分返回。
在上一部分中返回的数据中有进行了如下解析。
- 读取Int长度数据作为57行进行License有效时间的判断。
- 读取Int长度数据作为水印。
- 读取一个Byte长度数据,判断是否大于44作为适用版本判断。
- 之后不断的进行读一个Byte,再根据Byte大小读取相同长度的数据。如此循环5次,每个循环分别是读取了4.0版本到4.4版本的解密 Key。 并将读取到最后的解密Key给到
SleeveResource.Setup()
方法中。
cobaltstrike.auth 结构
根据 Cobalt Strike 4.4中 AuthCrypto.java
与 Authorization.java
解析过程分析出的 License 结构。
1 | 00 00 00 00 | -889274157 |