CobaltStrike二开环境初探
前言
我们使用CobaltStrike的时候,进行性的需要进行二次开发,使其对应的功能更加丰富,更加方便我们团队联合进行渗透的稳定性和隐蔽性。
反编译
IntelliJ IDEA自带了一个反编译java的工具,有时候我们需要对cobaltstrike的整个jar包进行反编译,使用这个IntelliJ IDEA双击之类的反编译时要是对整个源码层面进行搜索并不是很方便,可使用其自带的反编译工具,可以做到批量的整个反编译。这里先在
IntelliJ IDEA安装目录找到java-decompiler.jar拷贝到一个准备好的目录,并且新建两个文件,一个cs_bin里面放未反编译的cobaltstrike再建一个cs_src文件,这个是空文件,是为了之后放反编译后的cobaltstrike
在对应目录下进行拷贝
/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar |

进入到java-decompiler中找到decompiler的路径,提取出来
/org/jetbrains/java/decompiler/IdeaDecompiler$LegalBurden.class |
将所有的反斜杠替换成.随之再其后加上ConsoleDecompilers,如下:
org.jetbrains.java.decompiler.IdeaDecompiler$LegalBurden.class.ConsoleDecompilers |
因为MANIFEST.MF中是没有main class属性,没有制定主类,所以不能直接使用java -jar,如果想要直接执行Java包中具体的类,要使用java -cp输入如下命令
java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler |
执行的时候会有提示
╰─$ java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler |
让你加上-dgs=true之后加上反编译的cobaltstrike和反编译之后要把结果放入的目录,输入:
java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true cs_bin/cobaltstrike.jar cs_src/ |

反编译完成后,会自动打包成jar包,右键解压后打开可以看到都是.java了,反编译出来就可以直接放入IntelliJ IDEA中,可直接搜索代码和相关的代码交叉引用。

IDEA二次开发环境构造
打开IDEA选择Create New Project 一直选择Next,创建好后,先建立两个文件夹decompiled_src文件夹,之后再建立一个lib文件夹。将反编译好的CobaltStrike复制到decompiled_src中,然后把它解压出来
然后把原始的未反编译的CobaltStrike放到刚刚新建的lib中去
结下来我们要对这个项目进行设置,点击File中的Project Structure在Modules对Dependencies进行设置.

选择lib中的cobalt strike.jar, 确认是Compile之后勾选一下,然后选择Apply。

依赖关系设置完成后,进入Artifacts——>JAR——>From modules with dependencies

这里需要填写一个Main Class,去lib中的META-INF里面双击MANIFEST.MF

复制aggressor.Aggressor,再次打开选择OK这里就设置完成了。

接下来再decompiled_src中找到已经反编译完的aggressor主类,右键选择Refactor –Copy File


在To directory点击添加,选择之前创建的src在其中提阿健一个aggressor名字要一致,最后点击OK

这样aggressor就自动的被拷贝到src目录里去了,这里可以看一下

试着修改一下文档,保存。

到这里我们基本的准备工作就完成了,之后我们需要修改哪个文件,就可以在完整的源码中找到那个文件,然后邮件Refactor后然Copy File到这个目录进行修改,修改完成之后就可以选Build–>Build Artifacts–>Build进行编译
当提示Build completed successfully in 4 s 670 ms会在out文件夹生成我们编译好的SecondC2.jar

在每次调试运行的时候,不需要切换到命令行环境,可以直接配置对应的参数如下:

最后在Run中选择Run C2级可以看到消息窗口
点击确认,发现弹出提示,点击确定

拿出-XX:+AggressuveHeap复制并放到Run->Profile中的VM options中

再次运行,再次复制-XX:+UseParallelGC继续添加到VM options中,记得要用空格隔开。

再次运行,提示缺少.auth文件

这里把初始的cobaltstrike.auth文件复制到SecondC2.jar同目录下。
最后运行,就可以成功启动,接下来根据我们对应的需求,在项目中就行关键字搜索就可以定位到相关功能的代码处,从而进行相应的修改,或做一些功能上的增强。

