0x00 java境安装

windows安装java就不多说,主要说下linux

ORACLE 官网下载JDK 地址
https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

解压文件并移动至/opt

tar -xzvf jdk-8u91-linux-x64.tar.gz -C /opt

设置环境变量,
修改全局配置文件

sudo vim ~/.bashrc

添加下列内容

#set oracle jdk environment
export JAVA_HOME=/opt/jdk1.8.0_251
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

让配置文件生效

source /etc/profile

注:该命令通常用命令“.”来替代,如:source .bash_rc 与 . .bash_rc 是等效的。

验证安装是否成功

java  -version  显示java版本
javac 有提示

如果有软件还是找不到java环境,用update-alternatives设置管理java

安装并注册, /opt/jdk1.8.0_91/替换为自己jdk目录,用update-alternatives管理java版本

# --install needs <link> <name> <path> <priority>
update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_91/bin/java 1
update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_91/bin/javac 1

若需要其他的就用相同的方法安装如下
sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_91/bin/java 50
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_91/bin/javac 50
sudo update-alternatives --install /usr/bin/javah javah /opt/jdk1.8.0_91/bin/javah 50
sudo update-alternatives --install /usr/bin/javaws javaws /opt/jdk1.8.0_91/bin/javaws 50
sudo update-alternatives --install /usr/bin/javap javap /opt/jdk1.8.0_91/bin/javap 50

update-alternatives --set java /opt/jdk1.8.0_91/bin/java
update-alternatives --set javac /opt/jdk1.8.0_91/bin/javac

查看安装结果

update-alternatives --config java
update-alternatives --config javac

Ubuntu安装java后,提示

[-] keytool is not in $PATH
    install the Java Developer Kit

建立一个软连接即可  /usr/java/jdk/替换为自己的jdk目录
ln -s /usr/java/jdk/bin/keytool /usr/bin/

0x01 CS下载、破解与汉化

官方包下载

CobaltStrike4.4 官方包下载

官方hash验证地址:
https://verify.cobaltstrike.com/

windows 验证命令

certutil -hashfile cobaltstrike.jar SHA256

破解与汉化

采用javaagent+javassist的方式动态修改jar包,可直接加载原版cobaltstrike.jar,理论上支持到目前为止的所有4.x版本

仓库地址:
Twi1ight/CSAgent: CobaltStrike 4.x通用白嫖及汉化加载器

CSAgent.zip 下载地址:
https://github.com/Twi1ight/CSAgent/releases/download/v1.2/CSAgent.zip

破解步骤


  • 下载CSAgent.zip解压,将原版cobaltstrike.jar放到解压目录中,确保CSAgent.jar、resources文件夹、scripts文件夹和cobaltstrike.jar处于同级目录

  • 替换cobaltstrike、teamserver、agscript、c2lint、cobaltstrike.bat文件中的解密key,目前内置的key为4.4版本,各个版本的官方解密key:

4.0 1be5be52c6255c33558e8a1cb667cb06
4.1 80e32a742060b884419ba0c171c9aa76
4.2 b20d487addd4713418f2d5a3ae02a7a0
4.3 3a4425490f389aeec312bdd758ad2b99
4.4 5e98194a01c6b48fa582a6a9fcbb92d6
  • 正常使用teamserver和cobaltstrike脚本启动即可,用法与以前无任何差别,windows使用cobaltstrike.bat启动
  • 对于仅想使用破解功能的朋友,只需删除resources文件夹和scripts文件夹即可去除汉化

0x02 CS启动与连接

服务端启动

linux

启动参数 ./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]

必填参数host 本服务器外网IP/域名
必填参数password Client GUI连接时需要输入的密码
可选参数Malleable C2 communication profile 指定C2通信配置文件 该功能体现了CS的强大扩展性
可选参数kill date 指定所有payload的终止日期

这里用 ./teamserver 192.168.0.120(本机ip) 123456(登入密码)

windows

windows启动服务端

命令行启动teamserver.bat,参数与linux一致

新建 teamserver.bat 文件 内容如下:

@echo off   
:check_java
    java -version >nul 2>&1
    if %errorLevel% == 0 (
        goto:check_permissions
    ) else (
        echo [-] is Java installed?
        goto:eof
    )
    
:check_permissions
    echo [+] Administrative permissions required. Detecting permissions...
    set TempFile_Name=%SystemRoot%\System32\BatTestUACin_SysRt%Random%.batemp
    (echo "BAT Test UAC in Temp" >%TempFile_Name% ) 1>nul 2>nul
    if exist %TempFile_Name% (
        echo [+] Success: Administrative permissions confirmed.
	del %TempFile_Name% 1>nul 2>nul
        goto:check_certificate
    ) else (
        echo [-] Failure: Current permissions inadequate.
        goto:eof
    )

:check_certificate
    set certificate=".\cobaltstrike.store"
    if exist %certificate% (
        goto:test_arguments
    ) else (
        echo [!] cobaltstrike.store not fond!
        echo [!] generating the cobaltstrike.store!
        echo [!] Command: keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias cobaltstrike -dname "CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, S=Cyberspace, C=Earth"
		keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias cobaltstrike -dname "CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, S=Cyberspace, C=Earth
    )
    
:test_arguments
    set argC=0
    for %%x in (%*) do Set /A argC+=1
    if %argC% LSS 2 (
        echo [-] teamserver ^<host^> ^<password^> [/path/to/c2.profile] [YYYY-MM-DD]
        echo     ^<host^> is the default IP address of this Cobalt Strike team server
        echo     ^<password^> is the shared password to connect to this server
        echo     [/path/to/c2.profile] is your Malleable C2 profile
        echo     [YYYY-MM-DD] is a kill date for Beacon payloads run from this server
        goto:eof
    ) else (
        goto:run_cobal
    )
:run_cobal
    java -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=50050 -Dcobaltstrike.server_bindto=0.0.0.0 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=123456 -server -XX:+AggressiveHeap -XX:+UseParallelGC --add-opens=java.base/java.lang.reflect=ALL-UNNAMED -classpath ./cobaltstrike.jar -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 server.TeamServer %*

客户端连接

windows

cobalstrike.bat 直接双击启动

java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 -Duser.language=en -jar cobaltstrike.jar

vbs无窗口启动
windows 同目录新建 cobalstrike.vbs 文件,写入如下代码,即可无窗口启动 cs

CreateObject("WScript.Shell").Run "java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 -jar cobaltstrike.jar",0

linux

start.sh

java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 -jar cobaltstrike.jar $*

0x03 C2隐藏

无论是权限维持还是增加溯源成本, C2 隐藏 、流量加密,在实际的攻防对抗中还是很有必要的

端口特征修改

cobalt strike 服务端 默认50050端口,修改也很简单。只需要编辑teamserver文件,将50050修改为想要更改的端口即可。

流量特征混淆

我们cs的客户端/服务端的流量通信,大部分流量审计软件,都能检测到cs默认的通信流量。

Malleable C2 profile作为CS的配置文件,可以配置通信流量的特征,用来隐藏自己的行踪。

详情看官方文档:https://www.cobaltstrike.com/help-malleable-c2

cs官网给出的配置文件编写指南:   
https://www.cobaltstrike.com/help-malleable-c2

官方也给出了一个可修改的配置文件:  
https://github.com/rsmudge/Malleable-C2-Profiles

也有别人配置好的:  
https://github.com/xx0hcd/Malleable-C2-Profiles/tree/master/normal
https://github.com/threatexpress/malleable-c2

这里使用伪造jQuery的C2-Profile

查看配置是否可用:  
./c2lint jquery-c2.4.3.profile

启动配置:  
./teamserver 服务器ip cs密码 混淆配置文件

证书特征修改

服务端证书修改

cobaltstrike.store 证书只用于服务端和客户端通讯。区别于HTTPS上线使用的证书。

cobaltstrike.store 证书含有cs的相关特征,例如

CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike

fofa相关搜索语法:

protocol=="cobaltstrike"
cert="Major Cobalt Strike"
cert="73:6B:5E:DB:CF:C9:19:1D:5B:D0:1F:8C:E3:AB:56:38:18:9F:02:4F"

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

修改CS证书方式有两种, 无论是那种方式都需要先删除原有的文件cobaltstrike.store

方法一:

先删除原有的cobaltstrike.store,使用以下命令直接生成密钥库文件 , 可自行修改

keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias 360.cn -dname "CN=360, OU=360.cn, O=Sofaware,L=Somewhere,ST=Cyberspace, C=CN"

或者

keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias gmail.com -dname "CN=gmail.com, OU=Google Mail, O=Google GMail, L=Mountain View, ST=CA, C=US"

方法二:
修改teamserver文件,teamserver 是启动cs服务端的启动文件, 里面有密钥库的检测代码。
如检测到密钥库文件不存在,就使用命令生成新的密钥库

生成代码如下:

keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias cobaltstrike -dname "CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, S=Cyberspace, C=Earth"

将上面生成密钥库部分的代码替换成自己修改的即可。

ps:

同样需要删除原有的cobaltstrike.store文件,不然不会执行生成代码

上线证书修改

如果想要修改这个证书,需要修改Malleable C2 profile。

Self-signed Certificates with SSL BeaconValid SSL Certificates with SSL Beacon

这两个都是用来修改https上线使用的证书的。

  • Self-signed Certificates with SSL Beacon 这里是自己设定的自签名证书。

  • Valid SSL Certificates with SSL Beacon 这里是叫我们使用有效的证书。

我们可以使用之前修改过的cobaltstrike.store,也可以使用从其他地方弄过来的证书

我们可以在启动CobaltStrike的时候,指定一个profile文件,然后在文件中配置上线时使用的证书文件即可修改上线时默认的证书。

这里以 jquery-c2.4.2.profile 为例 :

https-certificate {
    
    ## Option 1) Trusted and Signed Certificate
    ## Use keytool to create a Java Keystore file. 
    ## Refer to https://www.cobaltstrike.com/help-malleable-c2#validssl
    ## or https://github.com/killswitch-GUI/CobaltStrike-ToolKit/blob/master/HTTPsC2DoneRight.sh
   
    ## Option 2) Create your own Self-Signed Certificate
    ## Use keytool to import your own self signed certificates

    #set keystore "/pathtokeystore";
    #set password "password";

    ## Option 3) Cobalt Strike Self-Signed Certificate
    set C   "US";
    set CN  "jquery.com";
    set O   "jQuery";
    set OU  "Certificate Authority";
    set validity "365";
}

自定义生成证书修改Option 3 下面的选项即可,

使用前面服务端生成的 cobaltstrike.store 或者 自己申请的真实证书,注释掉 Option 3,使用 Option 2即可

set keystore "/pathtokeystore.store";  # 密钥库文件路径
set password "password";         # 密钥库密码

CloudFlare证书申请

如果接入了Cloudflare CDN,可以直接使用Cloudflare提供的证书,或者使用letsencrypt这样的免费证书。

SSL/TLS --> 源服务器

使用默认配置生成证书和秘钥后,复制粘贴到你的服务器上,这里选择的文件名 server.pemserver.key

# xxx.xxx.com 为申请的域名
openssl pkcs12 -export -in server.pem -inkey server.key -out xxx.xxx.com.p12 -name xxx.xxx.com -passout pass:123456
keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore xxx.xxx.com.store -srckeystore xxx.xxx.com.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias xxx.xxx.com

在生成keystore文件后将该文件放在CS的根目录下,务必确保keystore文件名与密码和https-certificate中设置的一致。

./c2lint jquery-c2.4.3.profile
// 检查一下是否可用

dns_idle

0.0.0.0是Cobalt Strike DNS Beacon特征可设置Malleable C2进行修改 输入set dns_idle "8.8.8.8";

ip/域名隐藏

CDN

让cdn转发合法的http或者https流量来达到隐藏的目的。

反溯源-cs和msf域名上线
利用CDN隐藏C2地址
使用CDN隐藏c2流量

  • 配置了cdn
  • 拥有一个公网域名
  • 配置cdn的A记录解析使其能解析到C2的ip
  • 将公网域名填写到cs listener的host处并填写可用的端口
  • 可达到的效果:受害主机上只会有跟cdn的ip通信的流量,不会有跟真实C2通信的流量,可以保护C2的ip,但是域名还是会暴露。

技术实现重点:

一个不备案的域名,否则这个方式毫无用处
这种技术对http与https没有强制要求,都可以使用,而域前置技术要求是https

可以去Freenom 申请一个免费的域名,有了域名后可以直接接入Cloudflare

接入后更改NS,按照Cloudflare的指示将域名的NS设置成Cloudflare的即可,这里不再赘述。

接入后配置一个DNS的A记录,解析到VPS的IP,后续上线用。

Cloudflare CDN配置

https配置

Cloudflare默认的TLS配置为灵活,由于之前使用了Cloudflare给原服务器发的证书,我们可以改成完全(严格)提高安全性。

禁用缓存
在这个Profile jquery-c2.4.2.profile 中,我们请求的URI是以.js结尾的,Cloudflare作为一个CDN肯定要去缓存它,

但这样的话请求就无法到达我们的CS服务器,自然也就无法上线了。

添加Cloudflare 规则 ,不代理js请求。

URL匹配

如果URL匹配:
xxx.xxx.com/*js

则设置为:
缓存级别   绕过

Profile配置

我们需要更改Profile中的响应头配置,不然可能会出现能上线但是无法回显命令的情况

header "Content-Type" "application/javascript; charset=utf-8";
修改为:
header "Content-Type" "application/*; charset=utf-8";

即可正常执行命令回显。

./teamserver your_ip your_pass jquery-c2.4.3.profile

Listener配置

添加一个HTTPS监听器

填入三次你的域名,其他的默认就好。

在确保域名解析正确的情况下,此时HTTPS BEACON已经可以上线了

这里需要注意的是免费版的Cloudflare对代理的端口有限制。我们只能成如下端口:

http:80、8080、8880、2052、2082、2086、2095
https:443、2053、2083、2087、2096、8443

以上针对的是https的beacon,http的话在DNS中加一个二级域名并使用该二级域名上线即可。
不用额外再弄一个profile,因为http的beacon只看域名。

域前置

参考链接:
域前置技术实践
域前置技术原理与在CS上的实现
域前置攻击复现 | 域前置水太深,偷学六娃来隐身
暗度陈仓:基于国内某云的 Domain Fronting 技术实践

Domain Fronting,中文名域前置,是一种用于隐藏真实C2服务器IP且同时能伪装为与高信誉域名通信的技术,

多用于木马受控端和控制端之间的隐蔽通信。

反向代理

受害者上只会有与重定向机器之间的流量,不会有与真实c2服务器的流量,

重定向服务器会将非beacon的请求重定向到一些高信誉域名上,达到迷惑的目的

利用CDN、域前置、重定向三种技术隐藏C2的区别

Malleable C2 profile配置

以 jquery-c2.4.2.profile 为列 :

http 全局配置中 开启转发 否则获取不到 出网 IP

http-config {
   set headers "Date, Server, Content-Length, Keep-Alive, Connection, Content-Type";
   header "Server" "Apache";
   header "Keep-Alive" "timeout=10, max=100";
   header "Connection" "Keep-Alive";
   # Use this option if your teamserver is behind a redirector
   set trust_x_forwarded_for "true";  ##如果您的团队服务器位于重定向器后面,请使用此选项
} 

设置UA,可以结合 UA 特征过滤

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

Nginx配置

可以使用脚本生成

https://github.com/threatexpress/cs2modrewrite

python3 ./cs2nginx.py -i havex.profile -c https://127.0.0.1:8443 -r https://www.baidu.com -H cdn.xxxx.club

-i 为CS使用的profile模板文件
-c 为后端CS绑定的端口,这个会在后面CS的配置中有所体现
-r 为不合要求的访问302重定向去的位置,这里填了百度
-H 为你的域名,这里就是你配的那个

在配置完后,需要配置ssl证书

#####################
# SSL Configuration
#####################
listen 443 ssl;
listen [::]:443 ssl;
ssl on;

ssl_certificate /root/tool/CS/https/server.pem; # 改这个
ssl_certificate_key /root/tool/CS/https/server.key; # 改这个
ssl_session_cache shared:le_nginx_SSL:1m; # managed by Certbot
ssl_session_timeout 1440m; # managed by Certbot
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # managed by Certbot
ssl_prefer_server_ciphers on; # managed by Certbot

同时的话还可以定制化处理location块,使得只有指定URL才能访问,保证了不会被扫到。

以 User-Agent 来过滤流量

location ~ ^(/jquery-3\.3\.1\.slim\.min\.js|/jquery-3\.3\.2\.min\.js|/jquery-3\.3\.1\.min\.js|/jquery-3\.3\.2\.slim\.min\.js)$ {
        if ($http_user_agent != "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko") {
        	return 302 $REDIRECT_DOMAIN$request_uri;
        }    	
    	# 把流量转到CS 监听的 HTTP port(bind) 端口上
    	# proxy_pass          $C2_SERVER;
    	proxy_pass https://192.168.30.10:8080;
    	
        # If you want to pass the C2 server's "Server" header through then uncomment this line
        # proxy_pass_header Server;
        expires             off;
        proxy_redirect      off;
        proxy_set_header    Host                $host;
        # 配置nginx 转发源ip
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    X-Real-IP           $remote_addr;
}

重启Nginx服务

systemctl restart nginx

配置防火墙

如果cs服务器和配置反向代理的Nginx的服务器是同一台,CS的listener监听的地址是0.0.0.0,

别人依旧可以直接访问我们CS监听的端口而分析出beacon信息,我们应该配置成只能让反向代理套件访问。

以iptables为例:

iptables -A INPUT -s 127.0.0.1 -p tcp --dport 8443 -j ACCEPT
iptables -A INPUT -p tcp --dport 8443 -j DROP

iptables -A INPUT -s 127.0.0.1 -p tcp --dport 8880 -j ACCEPT
iptables -A INPUT -p tcp --dport 8880 -j DROP

Cloudflare Workers隐藏域名

这个有点类似域前置,使用Cloudflare Workers可以隐藏我们的真实域名。

添加Works,申请好子域后创建服务,点击快速编辑, 复制如下脚本 粘贴:


let upstream = 'https://cdn.xxxx.club' # 这里写你的域名

addEventListener('fetch', event => {
    event.respondWith(fetchAndApply(event.request));
})

async function fetchAndApply(request) {
    const ipAddress = request.headers.get('cf-connecting-ip') || '';
    let requestURL = new URL(request.url);
    let upstreamURL = new URL(upstream);
    requestURL.protocol = upstreamURL.protocol;
    requestURL.host = upstreamURL.host;
    requestURL.pathname = upstreamURL.pathname + requestURL.pathname;

    let new_request_headers = new Headers(request.headers);
    new_request_headers.set("X-Forwarded-For", ipAddress);
    let fetchedResponse = await fetch(
        new Request(requestURL, {
            method: request.method,
            headers: new_request_headers,
            body: request.body
        })
    );
    let modifiedResponseHeaders = new Headers(fetchedResponse.headers);
    modifiedResponseHeaders.delete('set-cookie');
    return new Response(
        fetchedResponse.body,
        {
            headers: modifiedResponseHeaders,
            status: fetchedResponse.status,
            statusText: fetchedResponse.statusText
        }
    );
}

之后使用右侧的域名替换CS中https beacon的三个域名即可

云函数隐匿真实IP

云函数,顾名思义就是在云上跑的一个函数,运行服务器由服务商提供,自带CDN效果。

那我们可以运行一个函数来转发我们的流量,就可以隐藏自己的真实IP。

参考:

C2使用云函数进行隐藏和加速

为你的C2隐藏与加速

Heroku代理隐匿真实IP

参考:

红队攻防基础建设—C2 IP隐匿技术 - 安全客,安全资讯平台

Beacon Staging 特征

Beacon Staging Server 就是分阶段模式中,提供shellcode等功能扩展存储的Stage服务器。
Beacon Staging Server的作用是为了防止Payload过大或者适应不同的攻击场景,可以分阶段进行payload投递。
首先通过投递一个被称为stager的小巧的payload,然后去Beacon staging server下载体积较大更复杂的stage,并且访问stage的URL通过checksum8进行校验。

Windows Execute 模块生成的就是Stager。

stager上线逻辑:

——>运行stager——>自动生成并访问符合checksum8校验的URI进行远程下载stage——>上线

360的Quake主动测绘已经有了通过beacon查找C2。

具体参考 https://www.anquanke.com/post/id/224535

nmap 也可以扫出来

nmap [ip][port] --script=grab_beacon_config.nse

Beacon Staging 特征修改方法

  1. 修改源码加密的密钥 , 参考:Bypass cobaltstrike beacon config scan

  2. 限制端口访问,让一般的扫描器扫不了出开,

这里我们可以参考上文

用nginx做反向代理,结合 profile文件 通过ua过滤流量

Cobalt Strike 结合Nginx做反向代理

0x04 插件推荐

0x05 问题集

TeamServer.prop

在 4.4 版本之后,您可能在启动团队服务器时注意到一条警告消息:

[!] Properties file (../TeamServer.prop) was not found.

TeamServer.prop这个文件是可选的,不影响启动。

它包含许多可选参数,可用于自定义用于验证屏幕截图和键盘日志回调数据的设置,从而允许您调整HotCobalt漏洞的修复程序。

可以通过创建一个名为 TeamServer.prop 的空文件并将其保存在 Cobalt Strike 目录中来抑制警告。

TeamServer.prop 示例文件可以从 Cobalt-Strike/TeamServerProp GitHub 存储库下载在这里。
默认 TeamServer.prop 文件包含以下内容:

#Cobalt Strike Team Server Properties
#Fri May 07 12:00:00 CDT 2021
# ------------------------------------------------
# Validation for screenshot messages from beacons
# ------------------------------------------------
# limits.screenshot_validated=true
# limits.screenshot_data_maxlen=4194304
# limits.screenshot_user_maxlen=1024
# limits.screenshot_title_maxlen=1024
# Stop writing screenshot data when Disk Usage reaches XX%
# Example: Off
#          "limits.screenshot_diskused_percent=0"
# Example: Stop writing screenshot data when Disk Usage reaches 95%
#          "limits.screenshot_diskused_percent=95"

# Default:
# limits.screenshot_diskused_percent=95
# ------------------------------------------------
# Validation for keystroke messages from beacons
# -----------------------------------------------
# limits.keystrokes_validated=true
# limits.keystrokes_data_maxlen=8192
# limits.keystrokes_user_maxlen=1024
# limits.keystrokes_title_maxlen=1024

# Stop writing keystroke data when Disk Usage reaches XX%
# Example: Off
#          "limits.keystrokes_diskused_percent=0"
# Example: Stop writing keystroke data when Disk Usage reaches 95%
#          "limits.keystrokes_diskused_percent=95"

# Default:
# limits.keystrokes_diskused_percent=95
  • #开头的行是注释。
  • limit.*_data_maxlen 是将被处理的屏幕截图/keylog 数据的最大大小。超过此限制的回调将被拒绝。
  • limit.*_validated=false 表示忽略以下三个 …_maxlen 设置
  • 将任何..._maxlen 设置设置为零将禁用该特定设置
  • limit.*_diskused_percent设置回调处理的阈值。当磁盘使用率超过指定百分比时回调被拒绝。 limit.*_diskused_percent=0(零) 禁用此设置,有效值为 0-99

WARNING: An illegal reflective access operation has occurred

WARNING: An illegal reflective access operation has occurred

主要出现在高版本(>=jdk9)情况下,没有影响,忽略就好

在启动项加个如下命令即可忽略该warning

--add-opens=java.base/java.lang.reflect=ALL-UNNAMED

0x06 参考文章

https://github.com/aleenzz/Cobalt_Strike_wiki
Twi1ight/CSAgent: CobaltStrike 4.x通用白嫖及汉化加载器
Releases · k8gege/Aggressor
利用CDN、域前置、重定向三种技术隐藏C2的区别
Cobalt Strike 的特征与隐藏
C2服务器隐藏真实ip – 梦中世界
检测与隐藏Cobaltstrike服务器 - Blog
CobaltStrike特征隐藏
APT级CS隐藏教程:使用反向代理、C2-Profile和CDN拉满溯源难度
CobaltStrike上线隐藏