文章目录
本文将介绍笔者对于CobaltStrike4.4几种反编译方法的思考以及具体修改方法,修改CobaltStrike主要为了修改和隐藏CobaltStrike4.4的特征,防止在攻防过程中被限制防火墙等他设备拦截
CobaltStrike4.4反编译的几个思路
方法一:利用动态编程完成源码的修改
可选工具:
ASM :直接操作字节码指令,执行效率高,要是使用者掌握Java类字节码文件格式及指令,对使用者的要求比较高。
Javassit 提供了更高级的API,执行效率相对较差,但无需掌握字节码指令的知识,对使用者要求较低。
优缺点分析:有关动态编程的知识在平时的应用层使用不是特别多,多是用在构建框架,虽然可以完成修改与编译但是成本较高不利操作
方法二:借助反编译工具先反编译再进行编译
可用工具:
java-decompiler/fernflower:java-decompiler.jar基于fernflower修改完成,效果与fernflower基本类似,所以选其一即可
jd-gui:比较小巧的反编译工具,有图像化界面,阅读代码比较方法
XJad ,Luyten等等,java反编译的工具多数基于Java Decompiler项目所以效果基本类似
优缺点分析:操作比较简单粗暴,可以较快的逆向出源码,但是对于大型项目来讲,逆向后源码大量报错,较难编译成功,比较浪费时间
方法三:借助原有jar与反编译源码修改并编译代码
此方法属于方法二的升级版本,利用已有源码以及已有jar文件,完美魔改jar文件
优缺点分析:不用修复逆向源码的大量报错(错误理解或注释掉原有报错代码可能会为工具引入bug),改哪覆盖哪,具体操作方法见下节
CobaltStrike4.4源码修改方法
步骤简介
1、利用反编译工具逆向出源码
2、新建工程引入逆向源码与原有jar包
引入逆向源码是为了方便查看与复制代码,非必要步骤
3、修改源码并重新打包
具体步骤
利用反编译工具逆向出源码
1、下载逆向工具JD-GUI,并打开
JD-GUI为Java应用,需要有Java环境才能运行,Java环境不在此赘述,笔者判断CobaltStrike4.4为11编译,所以jdk尽量安装11以上版本避免不必要的麻烦。
2、将cobaltstrike.jar拖入JD-GUI
3、导出源码
备注:导出前建议按如下配置进行配置,不然导出内容源码会存在行号以及元数据
【help】–>【preference】
4、将导出的源码压缩包解压
截止次步骤我们已通过利用反编译工具逆向出源码,并存储在cobaltstrike文件夹中
新建工程引入逆向源码与原有jar包
1、打开IntelliJ IDEA并新建项目
2、将源码粘贴到MyCobaltStrike目录下
建议不要在idea界面导入,文件较多会比较卡,头铁的老板随意
3、在MyCobaltStrike目录下新建lib目录并将cobaltstrike扔进去
4、为MyCobaltStrike项目导入cobaltstrike.jar
【文件】–>【项目结构】–>【库】–>【新建项目库】–>【选择lib目录下的cobaltstrike.jar】–>【确定】
修改源码并重新打包
1、将要修改的源码连同其对应的路径,一起复制到MyCobaltStrike的src下,如我们计划修改aggressor下的Aggressor.java(入口类导出时必须包含)
入口类:为整个程序的主类,是整个程序开始运行的地方,可以通过MANIFEST.MF文件中的Main-Class了解
2、导出修改后的jar包
【文件】–>【项目结构】–>【工件】–>【+】–>【JAR】–>【来自具有依赖项的模块】–>【从模块创建JAR】–>【选择主类】–>【JAR】–>【来自具有依赖项的模块】–>【选择主类Aggressor】–>【确认】
3、构建工件
【构建】–>【构建工件】
4、至此代码修改完成,我们将修改后jar拉入JD-GUI看下效果
为了您和您家人的幸福,请不要利用文中技术在用户未授权情况下开展渗透测试!!!
《中华人民共和国刑法》
第二百八十五条
违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。
第二百八十六条
违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。
故意制作、传播计算机病毒等破坏程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚