CobaltStrike二次开发环境初探

admin 2021年4月23日01:50:36评论162 views字数 2986阅读9分57秒阅读模式

这是 酒仙桥六号部队 的第 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/  //拷贝到准备好的目录

CobaltStrike二次开发环境初探

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

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

执行的时候会有提示。

CobaltStrike二次开发环境初探

让你加上-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/

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探


二 CobaltStrike二次开发环境

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

CobaltStrike二次开发环境初探

这里选择路径跟起个名。

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探

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

CobaltStrike二次开发环境初探


三 总结

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

参考资料

红队学院CSTips



CobaltStrike二次开发环境初探

CobaltStrike二次开发环境初探

本文始发于微信公众号(酒仙桥六号部队):CobaltStrike二次开发环境初探

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月23日01:50:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CobaltStrike二次开发环境初探https://cn-sec.com/archives/198405.html

发表评论

匿名网友 填写信息