th-cobaltsrike3.13破解事项

网上有很多关于cs的破解教程,我本也无意再写一篇,但是目前在网上看到的教程都是针对3.13以前的版本。
众所周知的事,3.13之前cobaltstrike存在一个严重的漏洞,导致teamserver可被全网扫描探测到。
3.13的release中提到了修复该漏洞,但是,但是,准确的说是把3.13正式版的修复了(是的,作者给trail版留了一个坑)。
另外还有一些需要注意的点,一一提出。

先说需要修改的代码文件
/aggressor/dialogs/ListenerDialog.java
/common/ArtifactUtils.java
common/WebTransforms.java
/common/Authorization.java
/common/License.java
/encoders/XorEncoder.java
/server/ProfileEdits.java
/resources/template.x86.ps1
/resources/template.x64.ps1

加粗部分是3.13版本需要特别对待注意的。

重要内容

空格陷阱

先说最重要的内容,很多人以为3.13trail可以放心使用,但是这里要注意一个隐蔽的坑点!
直接定位文件 common/WebTransforms.java
由文件名称我们可以知道这是用于web传输的类,看到第40行。

万恶的空格

作者在这里加多一个空格的用意想必大家也明白,等我一天就能赚到一个license的钱的话,我也会支持正版的!
现阶段还是将就一下用trail版,果断把这一行给删了!

再说说如何在3.12中直接修复
定位漏洞文件 couldstrike/NanoHTTPD.java
搜索字符串“\r\n”,来到353行。

万恶的空格

看到这个空格了吧,就是这个空格让我被暴露了!下狠手把它干掉。
然后再重新编译覆盖NanoHTTPD.class即可。

丢失的代码

有破解过3.12的人看一下大概就知道是什么情况了,我直接把缺失部分在3.12中拷过来了。
定位文件 /common/ArtifactUtils.java/encoders/XorEncoder.java
这两个文件都少了对payload编码的代码

被删除了的部分函数

如上图,左边是3.13的ArtifactUtls.java,右边是3.12对,可以看出代码被删减了很多。经过搜索,3.12中的部分代码被搬到了BaseArtifactUtils.java中,那么这里我们就只需要补上关于xorencode对代码即可。
从3.12对ArtifactUtils.java中将函数 XorStubBegin XorStub _XorEncode XorEncode复制到3.13中即可(图上右边的函数)。

被删除了的部分函数

然后上图则是XorEncoder.java的对比,同样,把函数直接拷贝到对应的文件中。
然后将xorbin.64放入resource文件中(https://github.com/verctor/CS_xor64)

注意

这里有一点要注意的是,因为改变了xorencode的方式,经过测试powershell payload无法正常回连,如果你也是这样,请下载最下方我给出的ps1文件替换。

常规内容

接下来的内容都是在网上泛滥的了,但是为了内容完整还是写出来吧,有经验的人直接略过即可。

修改license

关于license.java的修改网上已经有很多内容了,这里就简单说一下。
定位文件 /common/license.java

License

将isTrail() 的返回值修改为false。再将life修改为6666L。

去掉监听器数量限制

定位文件 /aggressor/dialogs/ListenerDialog.java

监听器数量限制
将91行的else if逻辑删除即可。

去掉水印

定位文件 /server/ProfileEdits.java /resources/template.x86.ps1 /resources/template.x64.ps1

水印

去掉ProfileEdits.java中前五行的水印。

水印

去掉template.x64.ps1, tempalte.x86.ps1中第一行的水印。

定位文件 /common/Authorization.java
将该函数的返回值修改为 “1”,当然也可以修改,只要其他引用到该地方的水印去除即可。


至此,对cs的破解就算结束了。可能有人会说,水印去除的不完整,但是因为大部分水印添加的判断是根据isTrial()和getWatermark()来添加的,所以修改了返回值后不去除也没有关系。

正式license可以使用作者的artifactkit,对于免杀是很有用的,但是我没能拿到这个资源哎。


step

0x00: 使用Luyten(https://github.com/deathmarine/Luyten)打开cobaltstrike.jar,导出文件。

0x01: 将需要修改的java文件拷贝出来放到与jar相同的目录下,根据上述操作修改相关的代码。

0x02: 当前目录打开命令行,运行javac -classpath ./cobaltstrike.jar ./????.java 生成.class文件。

0x03: 用7z等解压缩工具打开.jar文件,替换相关的.class文件。

trail版本下载地址

https://pan.baidu.com/s/1s1hp2zYIU0SzmV8UXDbD9g 密码a1on(该trail来自小密圈匿名用户分享)

ps1文件

https://github.com/kiwings/CobaltStrike-Toolset/blob/master/template.x64.ps1
https://github.com/kiwings/CobaltStrike-Toolset/blob/master/template.x86.ps1