C2隐藏 _ 让你的流量更隐蔽(一)

admin 2024年11月7日14:35:42评论7 views字数 5083阅读16分56秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,未经授权,严禁转载,如需转载,联系洪椒公众号。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

0x00 前言

原版的CobaltStrike已经被各大杀毒软件给标记了,很容易就会被捕获到特征。所以我们可以尝试CS 的二次开发,尝试修改一些特征,让我们的流量更加隐蔽。

0x01 反编译

首先我们需要将 CS 进行反编译得到源码。

1、反编译工具路径

IDEA 2022.1.3pluginsjava-decompilerlibjava-decompiler.jar

2、反编译命令

java -cp %IDEA_HOME%/plugins/java-decompiler/lib/java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler-dgs=true <src.jar>

java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true cobaltstrike.jar cs2
C2隐藏 _ 让你的流量更隐蔽(一)

反编译成功后会在 cs2 文件夹里生成一个反编译后的 jar 包,用压缩软件打开后可以发现已经是 java 源文件了。

C2隐藏 _ 让你的流量更隐蔽(一)

3、接着我们使用IDEA新建项目,名称随意。

C2隐藏 _ 让你的流量更隐蔽(一)

4、在项目文件里新建一个lib目录,将原始未编译的jar包放入其中。

C2隐藏 _ 让你的流量更隐蔽(一)
C2隐藏 _ 让你的流量更隐蔽(一)

5、再新建一个decompiled_src 目录,将反编译后的 jar 包进行解压,将所有文件复制到 decompiled_src目录

C2隐藏 _ 让你的流量更隐蔽(一)
C2隐藏 _ 让你的流量更隐蔽(一)

6、接着需要在项目结构--->模块--->依赖--->添加库--->java类型--->选择我们lib目录的jar包,记得勾选。

C2隐藏 _ 让你的流量更隐蔽(一)
C2隐藏 _ 让你的流量更隐蔽(一)
C2隐藏 _ 让你的流量更隐蔽(一)

7、然后需要构建工件,添加 jar 文件,选择来自具有依赖项的模块。

C2隐藏 _ 让你的流量更隐蔽(一)

8、选择主类为aggressor.Aggressor,之后确定应用就行。

C2隐藏 _ 让你的流量更隐蔽(一)
C2隐藏 _ 让你的流量更隐蔽(一)
C2隐藏 _ 让你的流量更隐蔽(一)

到这里前期工作基本上已经完成了,现在你想修改什么文件,只需要把源文件复制到 src 目录下修改即可。

0x02 默认端口修改

修改 CS 服务端的默认启动端口。

打开 teamserver 文件,修改其中的 server_port 值即可。

C2隐藏 _ 让你的流量更隐蔽(一)

修改保存后,重新启动服务端,可以看见服务端启动的端口是我们刚才修改的端口。

C2隐藏 _ 让你的流量更隐蔽(一)

0x03 默认证书修改

Cobalt Strike 服务端和客户端是通过 SSL 加密通讯的,默认情况下的 SSL 配置文件和代理配置文件会导致 Keystore 文件内容很容易就被防火墙识别。

可以通过 keytool -list -v -keystore cobaltstrike.store 命令查看 CS 默认证书信息如下:

C2隐藏 _ 让你的流量更隐蔽(一)

可以使用 nmap 命令:nmap -p- -A -vv IP  对目标进行扫描,扫描完成后也可发现 CS 特征。

C2隐藏 _ 让你的流量更隐蔽(一)

正因为默认证书信息的特征太过于明显,所有我们需要尝试修改。在进行默认证书修改前,简单介绍下 Keystone 和 keytool 。

1、什么是 Keystore

Keystore 是 Java 密钥库,是用来进行通信加密用的、比如数字签名。Keystore 就是用来保存密钥对的,比如公钥和私钥。Keystore可理解为一个数据库,可以存放很多个组数据。

2、Keystore 包含数据

主要包含两种数据

  • 密钥实体(Key entity):密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
  • 可信任的证书实体(trusted certificate entries):只包含公钥

3、什么是 Keytool

Keytool是一个 java 数据证书的管理工具,Keytool 将密钥和证书存放在一个称为 keystore 的文件中,即.store后缀的文件中。

4、Keytool 常用命令

-alias 产生别名

-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)

-keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))

-validity 指定创建的证书有效期多少天

-keysize 指定密钥长度

-storepass 指定密钥库的密码(获取keystore信息所需的密码)

-keypass 指定别名条目的密码(私钥的密码)

-dname 指定证书拥有者信息 例如: “CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码”

-list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码

-v 显示密钥库中的证书详细信息

-export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码

-file 参数指定导出到文件的文件名

-delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore -storepass 密码

-printcert 查看导出的证书信息 keytool -printcert -file yushan.crt

-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage

-storepasswd 修改keystore口令 keytool -storepasswd -keystore e:yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)

-import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书

5、创建新证书

为了掩盖默认SSL证书的特征,需要重新创建一个新的不一样的证书 。

删除 CS 自带的 cobaltstrike.store,使用以下命令生成一个新的 cobaltstrike.store ,然后客户端进行连接,连接时记得修改 teamserver 文件中的证书密码。

使用以下命令创建证书:

生成证书指纹:
keytool -keystore cobaltstrike.store -storepass 密码 -keypass 密码 -genkey -keyalg RSA -alias google.com -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"

应用证书指纹:
keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12

  • 生成证书指纹
keytool -keystore cobaltstrike.store -storepass Microsoft -keypass Microsoft -genkey -keyalg RSA -alias cobaltstrike -dname "CN=*.microsoft.com, OU=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=WA, C=US"
C2隐藏 _ 让你的流量更隐蔽(一)
  • 应用证书指纹
keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12
C2隐藏 _ 让你的流量更隐蔽(一)

同时因为新的证书密码被我们重新设置了,所以我们要在 teamserver 文件里修改证书密码。

C2隐藏 _ 让你的流量更隐蔽(一)

重新启动后,再次使用 nmap 进行扫描,发现证书信息已经改变。

C2隐藏 _ 让你的流量更隐蔽(一)

0x03 防爆破

如果未对 CS 做任何配置修改的话,默认情况下我们可以对目标 CS 服务端进行密码爆破。

项目地址:

https://github.com/ryanohoro/csbruter
C2隐藏 _ 让你的流量更隐蔽(一)

我们可以通过修改 ssl/SecureServerSocket.java 中的 authenticate 函数的 48879 值来实现密码防爆破,全局搜索该值修改成其它 int 类型的值就行。PS:注意不要修改 dns/AsymmetricCrypto.java 里面的 48879 值(这个和beacon回连认证有关)

C2隐藏 _ 让你的流量更隐蔽(一)

0x04 http/s上线流量特征消除

分阶段 Steger 【上线的时候先投递一个小巧的Stager Payload,然后通过 Stager 去 Beacon Staging Server 的某个 URL 下载完整的 Stage(也就是体积更大功能更复杂的Payload),并将其注入内存。】上线请求的 URL 路径是用 checksum8 算法进行随机生成的,其中 92 代表HTTP,93 代表HTTPS。

C2隐藏 _ 让你的流量更隐蔽(一)
public class EchoTest {
    public static long checksum8(String text) {
        if (text.length() < 4) {
            return 0L;
        }
        text = text.replace("/""");
        long sum = 0L;
        for (int x = 0; x < text.length(); x++) {
            sum += text.charAt(x);
        }

        return sum % 256L;
    }

    public static void main(String[] args) throws Exception {
        System.out.println(checksum8("bdDR"));
    }
}

C2隐藏 _ 让你的流量更隐蔽(一)
C2隐藏 _ 让你的流量更隐蔽(一)

既然我们知道了请求路径的规则,那么我们随意访问一个 checksum8 算法结果为 92 的字符串会怎样呢?比如我们访问a2bh,可以看到,成功访问下载。

C2隐藏 _ 让你的流量更隐蔽(一)

那能访问下载后又有啥用呢?可以使用解密工具对其进行解密,解密后会得到 Public Key 和 C2 Server 解密工具项目地址:

https://github.com/zone009/CobaltStrikeParser
C2隐藏 _ 让你的流量更隐蔽(一)

PS:Pubilc key 需要删除后面一堆的AAAAAA,正确的格式是MIGfXXXXXXXXXXX==。接着,我们就可以利用这些进行伪造上线了。伪造上线项目地址:

https://github.com/LiAoRJ/CS_fakesubmit

#脚本使用方法 
在Public_key.txt中放入通过Beacon解密获得的Publickey
在Process_name.txt 中加入上线进程的字典
在Computer_name.txt 中加入受控机名称的字典
在User_name.txt 中加入受控机用户名的字典
C2隐藏 _ 让你的流量更隐蔽(一)

可以看到,大量垃圾主机上线,极大程度上影响了攻击方。当让了,要解决这个问题,只需要修改 checksum8 函数,更改规则。

C2隐藏 _ 让你的流量更隐蔽(一)

分别修改 webserver.java 和 commonutils.java,将 92L 和 93L 进行修改即可

  • adhhraaddgrtadgragrrtatrtsrtg.jpg 经过 checksum8 函数计算得到结果为 3462
  • bbbbklasdfjadjflkasdjfasdoi.jpg 经过 checksum8 函数计算得到结果为 3162
C2隐藏 _ 让你的流量更隐蔽(一)

同时需要修改返回结果。

C2隐藏 _ 让你的流量更隐蔽(一)

修改后重新构建,然后将生成的class文件替换一下即可。

C2隐藏 _ 让你的流量更隐蔽(一)

接着我们重新启动CS生成后门,可以看到上线特征已经改变。

C2隐藏 _ 让你的流量更隐蔽(一)

0x05 后记

本文主要讲了一些基础的操作,从CS的反编译到默认端口、默认证书信息的修改,同时也简单说了下防爆破和 http/s 上线流量特征的修改,希望能给各位师傅们带来帮助。

原文始发于微信公众号(洪椒攻防实验室):C2隐藏 _ 让你的流量更隐蔽(一)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月7日14:35:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   C2隐藏 _ 让你的流量更隐蔽(一)https://cn-sec.com/archives/1820356.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息