一起学习 代码审计、安全开发、web攻防、逆向等。。。
私信联系
CobaltStrike二次开发环境初探
CobaltStrike 4.5原版 2022年5月1日 发布 + 破解及汉化加载
4.3 及之前版本的暴力替换class文件的破解方法失效
IntelliJ IDEA自带了一个反编译java的工具
IntelliJ IDEA安装目录/plugins/java-decompiler.jar
对cobaltstrike的整个jar 包进行反编译
org/jetbrains/java/decompiler/main/decompiler/
org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler 提供反编译的这个类。
因为没MANIFEST.MF中没有main class 属性,没有指定主类,
因此不能直接 使用 java -jar
如果 想要执行 java包中具体的类,要 使用 javacp输入如下命令:
java -cp 命令中 cp 指的就是 classpath。
使用该命令可以运行jar中的某个指定的测试类 使用方法 Java -cp 依赖jar或者是依赖jar库
新建两个文件
cs_bin里面放未反编译的cobaltstrike.jar
再建一个CS_source_decompiler_src 文件,这个是空文件,是为了之后放反编译后的cobaltstrike
java -cp "D:\ideaIU-2018.1.1.win\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dsg=true cobaltstrike.jar G:\code\Saft_Code\CS_source_decompiler_src
反编译后,会自动打包成jar包,右键解压后打开可以看到都是.java了,
使用这个方法会非常方便,就不需要第三方工具,这个反编译出来的接放入就可以直接放到 IDEA中,
可直接实现代码搜索,相关的交叉引用。
IDEA 创建一个默认项目,然后创建一个对应的
decompile目录,
将反编译的java源代码都放进去
lib目录将的cobaltstrike.jar(这个jar是未反编译的jar包),放进去
cobaltstrike.auth 也是
将decompile/aggressor.Aggressor.java 复制到src/aggressor.Aggressor.java
右键 make Directory as Source Root
并且将该jar包导入到依赖库中 设置依赖关系
file-->project Structure
modules dependencies选择lib目录下面的文件,确保是Compile 打勾点击apply
Artifacts--->jar--->from modules with dependencies MainClass
去新建一个Main Class Aggressor.Aggressor
名字可以在lib---->cs.jar---->meta-inf---->menifest.mf中找到
这样子可以使用菜单栏的Build里面Build Arifact进行jar打包了。结果会在out文件夹里里面。
启动文件使用打包的jar即可。
JAR Application
设置对应的VM option为 -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M
-XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC
加入测试语句
JOptionPane.showMessageDialog(null,"hello world!!!");
参考资料
https://www.modb.pro/db/532313
https://cloud.tencent.com/developer/article/1808082
服务端搭建
再将decompile目录中的server.TeamServer类复制一份到src目录中
打包有问题src META-INF MANIFEST.MF 复制
E:\hack\conn\CobaltStrike\cobaltstrike.auth
E:\hack\conn\CobaltStrike\cobaltstrike.store
-Djavax.net.ssl.keyStorePassword=123456
设置对应的VM option为
-XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=50050 -Djavax.net.ssl.keyStore=D:\ALL\javaidea\cs_disassemably\lib\google.store -Djavax.net.ssl.keyStorePassword=google -server -XX:+AggressiveHeap -XX:+UseParallelGC
注意:其中google.store可以是自己生成的ssl证书
https://www.cnblogs.com/haidragon/p/16852315.html
https://github.com/jas502n/cs-agent
采用全局搜索
The Cobalt Strike Team Server process cannot be started with a javaagent
The Cobalt Strike Client process cannot be started with a javaagent.
[-] Your authorization file is not valid: pre-4.0 authorization file. Run update to get new file
CommonUtils.print_error
Requirements.checkGUI()->common.requirements
//aming_change
beacon/BeaconData中将shouldPad方法的值固定为false:
common/Helper增加.class判断public final boolean startHelper(Class var1)
断点修改
common->class Authorization->
License-> checkLicenseGUI->JOptionPane.showMessageDialog ->showMessageDialog ->showOptionDialog ->dialog.show()
super.initializeStarter->common.starter->starter2
dialogs->public ConnectDialog(MultiFrame var1)
JFrame var3 = DialogUtils.dialog("Connect", 640, 480);
A Cobalt Strike team server is not available onthe specified host and port. You must start aCobalt Strike team server first
G:\code\Saft_Code\CobaltStrike_debug\out\artifacts\CobaltStrike_debug_jar\teamserver.bat 192.168.31.19 Msr010527
browsers.public class Connect->public void dialogAction->
common->TeamSocket->public class TeamQueue->
this.tqueue.call("aggressor.authenticate"
var2.dialogAction(var1x, DialogManager.this.options);
dialogs.ConnectDialog->
DialogManager.B((JComponent)var1x.getSource(), true)
private static void B(final JComponent var0, final boolean var1) {
CommonUtils.runSafe(new Runnable() {
public void run() {
var0.setEnabled(var1);
}
});
}
commonUtils-> public static void runSafe
调试中断
[!] Trapped java.net.SocketTimeoutException during client (192.168.31.19) read [TeamQueue Reader]: Read timed out
参考文章
https://www.yii666.com/blog/355849.html
http://www.taodudu.cc/news/show-4636865.html?action=onClick