一、逆向解包cs
1、环境准备

cs4.4版本
idea
jd-gui (https://github.com/java-decompiler/jd-gui)

2、逆向cs jar包
2.1 使用jd-gui逆向cobaltstrike.jar
打开jd-gui.exe,将cobaltstrike.jar直接拖进去,在导出项目之前需要做两个准备工作。
2.1.1、jd-gui help->Preferences->Source Saver,按照下图取消默认选择按钮
image.png

2.1.2、打开逆向的源码包META_INF->MANIFEST.MF
复制里面的内容做备份
image.png

2.1.3 jd-gui File->Save All Source保存所有文件,保存之后是一个zip压缩包,将其解压出来留备用
image.png

3、Idea重新打包cobaltstrike
3.1 新建一个Idea项目,所有选项默认
image.png

3.2 新建项目完成后先不管Idea,文件浏览器打开项目所在路径,新建一个cobaltstrike文件夹,将jd-gui反编译出来的文件全部复制到该目录下,在新建一个lib目录,将逆向前的cobaltstrike.jar复制进去,弄完之后的文件目录如下(不用在意out目录,out目录是重新打包的文件输出目录):
image.png

3.3 回到Idea,左上角File->Project Structure->Moudle,将lib目录下的cobaltstrike.jar添加到项目依赖。
image.png
File->Project Structure->Artifacts 添加jar工程
image.png
主类选择aggressor.Aggressor
image.png

3.4 修改对应文件
需要修改相应文件时,右键选择Refactor-Copy file,To directory选择src目录里新建的目录。
image.png

3.5 重新打包
修改MANIFEST.MF文件为之前复制保存的MANIFEST.MF(详见2.1.2),不修改可以打包成功,但是会有类报错。

Manifest-Version: 1.0
Main-Class: aggressor.Aggressor
Add-Exports: java.desktop/sun.swing java.desktop/sun.swing.table java.
 desktop/sun.swing.plaf.synth java.desktop/com.sun.java.swing.plaf.win
 dows java.desktop/sun.awt.shell java.desktop/com.sun.awt java.base/su
 n.security.action
Add-Opens: java.desktop/javax.swing.plaf.synth java.desktop/javax.swin
 g.plaf.basic java.desktop/javax.swing java.desktop/javax.swing.tree j
 ava.desktop/java.awt.event
Multi-Release: true
Synthetica-Version: 2.30.0 Build 16

image.png

之后点击Build-Build Artifact->Build,即可打包成功
image.png

image.png

4、运行重新打包的cs

java -XX:+AggressiveHeap -XX:+UseParallelGC -jar tnnd.jar

image.png

二、Bypass checksum8
1、获取解密key
在逆向解包代码中的common/Authorization.java中获取key,后16位

cs4.4
27, -27, -66, 82, -58, 37, 92, 51, 85, -114, -118, 28, -74, 103, -53, 6

image.png

2、解密脚本
地址:https://github.com/ca3tie1/CrackSleeve,需修改脚本两个地方。
2.1、第一个修改脚本第十行key为对应版本的key
image.png
2.2、第二个修改脚本地120行:
将paramArrayOfByte(4.0版本不用修改,测试中发现4.3也无需修改)修改为CommonUtils.readResource("resources/cobaltstrike.auth")
image.png
2.3、编译(将cobaltstrike.jar和CrackSleeve.java放一起)
javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java
2.4 解密
java -classpath cobaltstrike.jar;./ CrackSleeve decode
image.png

3、使用ida开始反编译修改
注意:ida曾发现供应链攻击,请注意ida工具获取来源
使用ida打开beacon.dll,工具栏search->sequence of bytes
image.png
image.png

双击进去,随后修改字节
image.png

2E修改为3E
image.png

应用修改
image.png

除了beacon.dll,还有以下dll,修改方式一样:

beacon.x64.dll
dnsb.dll
dnsb.x64.dll
pivot.dll
pivot.x64.dll
extc2.dll
extc2.x64.dll

dll修改结束,使用解密的代码加密回去,修改代码39行,修改为:
CustomizeKey = OriginKey
image.png
java -classpath cobaltstrike.jar;./ CrackSleeve encode 1111111111111111(16位1保证流程,实际上没有作用)
image.png

之后将编码过后的文件放回反编译包的/sleeve目录里面,重新打包即可
image.png

三、Bypass Becaoneye
3.1、使用CrackSleeve讲dll进行解密:https://github.com/ca3tie1/CrackSleeve/

3.2、修改特征
beacon.dll x86全局搜索:6A 00 50 A3 E8 AE 03 10
修改6A 00为6A 09(00修改为任意)
image.png
beacon.dll x64
地址:000000018001879B
使用ida ctrl+G快捷键直接跳转过去
image.png

特征xor edx, edx,修改为mov edx, esi
image.png

3.3、使用CrackSleeve讲dll进行加密:https://github.com/ca3tie1/CrackSleeve/,之后放入idea中sleeve文件夹中,重新打包
image.png

四、测试
x86和x64均能上线成功,功能正常
image.png

参考文章:
https://eviladan0s.github.io/2021/08/30/cobalt-strike-crack/
https://python.iitter.com/other/282822.html
https://www.icode9.com/content-1-1060060.html
https://cloud.tencent.com/developer/article/1764340
https://github.com/lovechoudoufu/cobaltstrike4.4_cdf

Q.E.D.