前言
我们使用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同目录下。
最后运行,就可以成功启动,接下来根据我们对应的需求,在项目中就行关键字搜索就可以定位到相关功能的代码处,从而进行相应的修改,或做一些功能上的增强。
FROM :ol4three.com | Author:ol4three
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论