13

CobaltStrike二次开发环境初探

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzAwMzYxNzc1OA%3D%3D&%3Bmid=2247488706&%3Bidx=1&%3Bsn=83474fa317248dee4aef37444c50d154
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

这是  酒仙桥六号部队  的第  124   篇文章。

全文共计2938个字,预计阅读时长9分钟

在我们使用cobaltstrike的过程中,会涉及到二次开发,从而使其功能上更加的健壮,不至于碰到杀软就软了的地步,本文从cobaltstrike的快速反编译到二次开发环境的准备作为二次开发cobaltstrike的起步。

IntelliJ IDEA 自带了一个反编译java的工具,有时候我们需要对 cobaltstrike 的整个 jar 包进行反编译,使用这个 IntelliJ IDEA 双击之类的反编译时要是对整个源码层面进行搜索并不是很方便,可使用其自带的反编译工具,可以做到批量的整个反编译。

一 CobaltStrike反编译

这里先在 IntelliJ IDEA 安装目录找到 java-decompiler.jar 拷贝到一个准备好的目录,并且新建两个文件,一个 cs_bin 里面放未反编译的 cobaltstrike 再建一个 cs_src 文件,这个是空文件,是为了之后放反编译后的 cobaltstrike

 /Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar  //找到decompiler文件
cp java-decompiler.jar /Users/name/Desktop/wen/学习资料/java/cstips001/ //拷贝到准备好的目录

zYV7neU.png!mobile

java-decompiler 中找到decompiler的路径,提取出来如下:

org/jetbrains/java/decompiler/main/decompiler/

aQnMjez.png!mobile

把路径提取出来后,把反斜杠全部替换成 . 随之再其后加上 ConsoleDecompilers ,如下就是提供反编译的这个类。

J3MjeeI.png!mobile

org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompile

因为 MANIFEST.MF 中没有 main class 属性,没有指定主类,因此不能直接使用 java -jar ,如果想要执行 java 包中具体的类,要使用 java -cp 输入如下命令:

java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler

执行的时候会有提示。

让你加上 -dgs=true 后跟需要反编译的 cobaltstrike 和反编译之后要把 cobaltstrike 放入的目录,就是我们最开始建立的 cs_src 这个是存放反编译后的 cobaltstrike ,运行这条命令即可对整个 jar 包开始反编译。

ava -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true cs_bin/cobaltstrike.jar cs_src/

vMNBRb3.png!mobile

反编译后,会自动打包成 jar 包,右键解压后打开可以看到都是 .java 了,使用这个方法会非常方便,就不需要第三方工具,这个反编译出来的就可以直接放入 IntelliJ IDEA 中,可直接实现代码搜索,相关的交叉引用。

nAZRria.png!mobile

二 CobaltStrike二次开发环境

打开 IntelliJ IDEA 选择 Create New Project 一直选择Next。

zQRr6zu.png!mobile

这里选择路径跟起个名。

ZriMVbf.png!mobile

创建好后需要先建立两个文件夹,右击选择 New Directory 建立一个 decompiled_src 文件夹,之后再建立一个 lib 文件夹。

Rz6fei.png!mobile

把在 CSTips001 中反编译好的 CobaltStrike 复制到 decompiled_src 中,然后把它解压出来,可看到一个完整的反编译后的目录。

JjeYFfu.png!mobile

随后把原始的未编译的 CobaltStrike 放到刚刚新建的 lib 中去。

f6Jryea.png!mobile

接下来需要对这个项目进行设置,点击 File 中的 Project StructureModulesDependencies 进行设置。

f6zEjeV.png!mobile

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

aY3673.png!mobile

E3aIfue.png!mobile

至此依赖关系设置完了,现在进入 Artifacts——>JAR——>From modules with dependencies

mAfIFfr.png!mobile

这里需要一个填写一个 Main Class

qU7Rjy6.png!mobile

目前我们还不知道这个 Main Class 该填什么,可以点在lib中的META-INF里双击MANIFEST.MF,我们可以看到Main Class,复制 aggressor.Aggressor

VV3aQny.png!mobile

再次打开 Artifacts——>JAR——>From modules with dependenciesMain Class 处填入 aggressor.Aggressor 选择OK,这里就设置完成了。

NvMNZjB.png!mobile

接下来在 decompiled_src 目录中找到已经反编译完的 aggressor 主类,右击选择 Refactor ——Copy File

2Y7BvuF.png!mobile

zYjYvuF.png!mobile

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

i63UVbj.png!mobile

R7VjA3A.png!mobile

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

rQJRnee.png!mobile

测试一下,修改文件,保存。

AnqURnm.png!mobile

到这里我们的整个准备工作就完成了,之后就是我们要修改哪个文件,就可以在完整的源码中找到那个文件,然后右键 Refactor 然后 Copy File 到这个目录然后进行修改,修改完成之后就可以选 Build——>Build Artifacts ——>Build 进行编译。

VjA7ryE.png!mobile

当提示 Build completed successfully in 4 s 227 ms (a minute ago) 的时候,会生成一个 out 文件夹,其中可看我们的编译好的 MycustomCS.jar

E7FjMvU.png!mobile

在每次调试运行的时候,不需要切换到命令行环境,可以直接选择 Run 中的 Profile 设置参数。

qMZ7ZnI.png!mobile

选择:heavy_plus_sign:号,在 JAR Applic 添加一个配置文件。

V3QbayZ.png!mobile

Path to JAR 中选择 out 文件中我们修改并编译好的jar包,选择好后点击 Apply

FBbI32.png!mobile

最后在 Run 中选择 Run CustoomRUn 即可看到消息窗。

INvyayE.png!mobile

32EvMj7.png!mobile

点击确定,发现弹出提示,没关系,继续点击确定。

J73U7fQ.png!mobile

我们把 -XX:+AggressiveHeap 复制下来。

YVnYNnr.png!mobile

再放到 RunProfile 这里就直接选择之前创建的 CustomRun 填入 VM options 最后选择 Apply

E7Rbaij.png!mobile

qQBNfyU.png!mobile

再次 Run 运行,继续复制 -XX:+UseParallelGC

继续在添加到 VM options 中,记得要用空格隔开。

RJbI73a.png!mobile

再次运行,提示 auth 文件找不到。

ANv6Fv.png!mobile

这里把初始的 cobaltstrike.auth 文件复制到 MycustomCS.jar 同目录下。

ZVZVju2.png!mobile

最后运行,到这里我们需要进行二次开发的环境就搭建好了,接下来就可以根据我们的需要通过关键字在源码中定位到具体的功能实现的代码,从而进行修改,或作一些功能上的增强。

YB36fm.png!mobile

三 总结

本文使用IntelliJ IDEA自带的java反编译工具,对cobaltstrike进行了快速的反编译,并展示了修改后的效果,权当抛砖引玉,具体的插件开发各位师傅可以结合具体场景进行编写。

参考资料

红队学院CSTips

IviYNvZ.png!mobile

jayqYjj.png!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK