Cobalt Strike Profile 学习记录

本文详述了Cobalt Strike的配置文件jquery-c2.4.3.profile的学习过程,涵盖配置参数、值的设定以及注意事项。重点讨论了包括上线睡眠时间、数据抖动、请求头删除、UA设置、证书配置、TCP和SMB Beacon的配置细节,以及DNS、SSH、HTTP Stager和进程注入等相关设置,强调了安全性和隐蔽性的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此处以最新版 jquery-c2.4.3.profile 为例,学习记录各项配置的作用。部分配置尚未研究清楚适用场景,后续继续学习再补充。


cobalt strike 4.3 官方文档:https://cobaltstrike.com/downloads/csmanual43.pdf

提示

  1. 关于参数与值:

profile 文件将参数括在双引号中,而不是单引号中。例如:
正确: set useragent "SOME AGENT";
错误: set useragent 'SOME AGENT';

  1. 一些特殊字符不需要转义,例如: !@#$%^&*()
  2. 值可以使用分号, 例如:

prepend "This is an example;";

  1. 值中的双引号需要转义, 例如:

append "here is \"some\" stuff";

  1. 双斜杠表示单斜杠:例如:

append "more \\ stuff";

  1. 编译后的 .http-post.client 必须小于252个字节。

配置解读

set sample_name "jQuery CS 4.3 Profile";

设置配置文件名称,此处会显示在输出的报告中。


set sleeptime "45000";

设置上线后的睡眠时间,45000单位是毫秒。 此处不要设置为0, 设置为0后木马无法上线。cobalt strike 默认的睡眠时间是60000ms 。


set jitter "37";

设置抖动频率,默认是0.


set data_jitter "100";

设置数据抖动大小。设置后,在请求的过程中,会追加随机长度(小于设置的值)的随机字符串。


set headers_remove "Strict-Transport-Security, header2, header3";

全局选项,强制Beacon的WinINet在HTTP/HTTPS请求中删除指定的请求头。


set useragent "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko";

设置请求的UA,此处可以结合nginx反向代理,对stage进行隐藏。 此项默认是IE的随机UA,在CS小于4.2的版本最大字符是128, CS4.2以上的版本最大字符是255。

https-certificate {
    
    ## 选项 1) 使用可信的签名证书
    ## 使用 keytool 创建一个 Java Keystore 文件. 
    ## 参考: https://www.cobaltstrike.com/help-malleable-c2#validssl
    ## 参考: https://github.com/killswitch-GUI/CobaltStrike-ToolKit/blob/master/HTTPsC2DoneRight.sh
   
    ## 选项 2) 使用自创建的自签名证书
    ## 使用 keytool 导入自签名证书

    #set keystore "/pathtokeystore";   :设置keystore路径
    #set password "password";					 :设置证书密码

    ## 选项3 3) 使用Cobalt Strike自签名证书
    set C   "US";
    set CN  "jquery.com";
    set O   "jQuery";
    set OU  "Certificate Authority";
    set validity "365";
}

SSL证书配置,用于对C2的https监听配置签名、自签名证书。默认是所有的证书值均为空。这里CS官方建议是:使用可信的证书签名

set tcp_port "42585";
set tcp_frame_header "\x80";

TCP Beacon 的相关设置,tcp监听端口详细信息可以参考:https://blog.cobaltstrike.com/2019/01/02/cobalt-strike-3-13-why-do-we-argue/https://www.cobaltstrike.com/help-tcp-beacon 。 tcp_frame_header可以在tcp信息前追加设定的字符。Cobalt Strike默认使用的tcp监听端口为4444, 且不在信息前追加字符。
官方指导意见:不建议使用4444端口进行监听。建议使用高端口监听。

set pipename         "mojo.5688.8052.183894939787088877##"; # Common Chrome named pipe
set pipename_stager  "mojo.5688.8052.35780273329370473##"; # Common Chrome named pipe
set smb_frame_header "\x80";

SMB Beacon的相关设置。使用SMB进行对等通信。CS4.1版本之后加入SMB Frame Header选项。CS默认使用的管道名为: msagent_## ,pipename_stager为: status_##
官方建议:不要使用已经存在的命名管道,beacon不会检测是否与已存在的管道名冲突。配置文件使用者要把 ## 替换成数字

dns-beacon {
    # Options moved into "dns-beacon" group in version 4.3
    set dns_idle           "74.125.196.113"; #google.com (change this to match your campaign)
    set dns_max_txt        "252";
    set dns_sleep          "0"; #    Force a sleep prior to each individual DNS request. (in milliseconds)
    set dns_ttl            "5";
    set maxdns             "255";
    set dns_stager_prepend ".resources.123456.";
    set dns_stager_subhost ".feeds.123456.";

    # DNS subhosts override options, added in version 4.3
    set beacon           "a.bc.";
    set get_A            "b.1a.";
    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 Beacon 的相关配置。DNS beacon 会生成大量的DNS请求。DNS Beacon最好用作低速备份C2通道。

set ssh_banner        "OpenSSH_7.4 Debian (protocol 2.0)";
set ssh_pipename      "wkssvc##";

SSH Beacon 的相关配置。使用SSH协议进行P2P对等通信。Cobalt Strike 4.1版本开始使用。


set host_stage "false";

不建议使用host_stage。建议使用stageles有效负载,现在是Cobalt Strike的默认选项。

http-stager {  
    # x86的请求地址
    set uri_x86 "/jquery-3.3.1.slim.min.js"; 
  	# x64的请求地址
    set uri_x64 "/jquery-3.3.2.slim.min.js";

    server {
    	  # 服务端的相关配置
    		# 设置header 信息
        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 {
            ## 在实际的请求中追加jquery字符串进行伪装。         
            prepend "!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(e,t){\"use strict\";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return\"function\"==typeof t&&\"number\"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement(\"script\");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?l[c.call(e)]||\"object\":typeof e}var b=\"3.3.1\",w=function(e,t){return new w.fn.init(e,t)},T=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;w.fn=w.prototype={jquery:\"3.3.1\",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0
### 关于 Cobalt Strike Profile 文件 #### Malleable C2 Profiles 的作用 Malleable C2 profiles 是一种配置文件,允许自定义信标的网络行为以规避检测。这些配置文件可以修改 HTTP 请求头、间隔时间和其他属性,从而改变信标与服务器之间的通信模式[^2]。 #### 如何创建和编辑 Profile 文件 为了定制特定环境下的通信特征,可以通过文本编辑器打开 `.profile` 文件并按照语法指南进行调整。通常情况下,一个典型的 profile 文件会包含多个部分,比如 http-get 和 http-post 块,用来描述当信标向命令控制中心发起请求时的行为以及上传数据的方式。 #### 启动 Team Server 并应用 Profile 文件 在启动 Cobalt Strike team server 之前,通过命令行参数 `-profiles` 来指定要加载的一个或多个 malleable c2 profile 文件的位置。例如,在 Linux 或 macOS 上运行如下命令: ```bash ./teamserver your_ip_address password -profiles path/to/your/profile.profile ``` #### 示例 Profile 文件片段 这里提供了一个简单的 profile 文件示例,它设置了基本的 GET 和 POST 行为: ```plaintext set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"; http-get { client { header "Accept" "text/html,application/xhtml+xml"; uri "/index.php"; } } http-post { client { header "Content-Type" "application/x-www-form-urlencoded"; uri "/submit.php"; } } ``` 此代码段定义了浏览器 User-Agent 字符串,并指定了用于下载指令 (`http-get`) 及提交响应 (`http-post`) 的 URL 路径和相应的头部信息。 #### 获取更多资源和支持 对于更深入的学习和技术支持,建议访问官方文档网站或其他社区论坛获取最新版本的手册和教程材料。此外,还可以参加由安全专家主持的工作坊或者在线课程来提高技能水平。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值