填坑技巧-CDN隐藏C2
字数 1231 2025-08-05 08:17:55

CDN隐藏C2技术详解

1. 证书特征配置

1.1 去除证书特征:基于keytool生成自签证书

使用JDK自带的keytool工具生成新证书:

# 国内风格证书
keytool -keystore cobaltStrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname "CN=ZhongGuo, OU=CC, O=CCSEC, L=BeiJing, ST=ChaoYang, 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"

查看生成的证书:

keytool -list -v -keystore cobaltstrike.store

注意事项

  • 生成cobaltstrike.store替换默认位置对应文件
  • 或在teamserver启动文件中指定新证书路径

1.2 去除证书特征:基于openssl生成域名证书

方法一:使用certbot生成证书

  1. 申请域名(推荐https://www.namesilo.com)
  2. 生成证书:
certbot certonly -d yourdomain.tk -d *.yourdomain.tk --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
  1. 在DNS服务商处添加TXT记录验证
  2. 使用dig命令验证解析是否成功:
dig -t txt _acme-challenge.yourdomain.tk @8.8.8.8
  1. 生成p12文件:
openssl pkcs12 -export -in ./fullchain.pem -inkey ./privkey.pem -out yourdomain.tk.p12 -name yourdomain.tk -passout pass:123456
  1. 生成store文件:
keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore yourdomain.tk.store -srckeystore yourdomain.tk.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias yourdomain.tk

方法二:使用Cloudflare签发证书

  1. 申请域名后在Cloudflare注册免费账户
  2. 更改NS服务器地址托管域名
  3. 从Cloudflare一键导出证书
  4. 同样使用openssl生成p12,然后store文件

2. 服务器特征配置

2.1 隐藏服务器:CDN加速

  1. 在Cloudflare注册域名后,将NS记录指向其提供的地址
  2. 开启CDN加速
  3. 本地使用ping测试应为CDN的IP而非真实IP
  4. 关闭缓存以确保实时返回命令结果:
    • 设置页面规则,绕过所有缓存
    • 编辑缓存级别为"绕过"

关键点

  • 域名后的内容需根据malleable.profile规则设定
  • 如jQuery-2.2.4的所有请求包均为.js,在页面规则中域名配置后跟.js
  • 其他profile如amazon.profile、gmail.profile需跟*字符

2.2 隐藏流量特征:profile配置

使用Malleable C2 profile配置通信流量特征:

http-stager配置示例

http-stager {
    set uri_x86 "/get32.gif";
    set uri_x64 "/get64.gif";
    client {
            parameter "id" "1234";
            header "Cookie" "SomeValue";
    }
    server {
            header "Content-Type" "image/gif";
            output {
                prepend "GIF89a";
                print;
            }
    }
}

使用Cloudflare时的关键配置

http-config {
    header "Content-Type" "application/*; charset=utf-8";
    set trust_x_forwarded_for "true";
}

User-Agent设置

set useragent "Mozilla/5.0 (Windows NT 6.1; Trident/8.0; rv:12.0)";

HTTPS证书声明

https-certificate {
    set keystore "api.xxx.com.store";
    set password "123456";
}

检查配置文件有效性:

./c2lint malleable.profile

启动teamserver时加载profile:

./teamserver 1.1.1.1 yourpassword malleable.profile

2.3 服务器反向代理限制访问

Nginx反向代理配置示例

location ~*/jquery {
    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;
    }
    proxy_pass          https://127.0.0.1:5553;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

防火墙设置

iptables -I INPUT -p tcp --dport 45559 -j DROP
iptables -I INPUT -s 127.0.0.1 -p tcp --dport 45559 -j ACCEPT

关键注意事项

  1. 在nginx配置中设置X-Forwarded-For头
  2. 在profile中设置trust_x_forwarded_for "true"
  3. 反向代理配置中:
    • HTTP监听器可使用任意本机真实IP
    • HTTPS监听器只能使用127.0.0.1,使用真实IP会导致CDN超时无法上线

3. 常见问题解决方案

  1. 域名解析问题

    • 使用dig命令验证TXT记录是否生效
    • 等待足够时间让DNS记录传播
  2. 证书生成问题

    • 确保openssl和keytool命令路径正确
    • 检查密码一致性
  3. CDN配置问题

    • 确保正确设置绕过缓存的规则
    • 检查域名后缀与profile配置匹配
  4. 反向代理问题

    • HTTPS监听器必须使用127.0.0.1
    • 确保防火墙规则正确设置
  5. 上线但无回显问题

    • 检查Content-Type头设置
    • 验证缓存是否被正确绕过

通过以上配置,可以有效隐藏C2服务器的真实特征,提高隐蔽性和安全性。

CDN隐藏C2技术详解 1. 证书特征配置 1.1 去除证书特征:基于keytool生成自签证书 使用JDK自带的keytool工具生成新证书: 查看生成的证书: 注意事项 : 生成cobaltstrike.store替换默认位置对应文件 或在teamserver启动文件中指定新证书路径 1.2 去除证书特征:基于openssl生成域名证书 方法一:使用certbot生成证书 申请域名(推荐https://www.namesilo.com) 生成证书: 在DNS服务商处添加TXT记录验证 使用dig命令验证解析是否成功: 生成p12文件: 生成store文件: 方法二:使用Cloudflare签发证书 申请域名后在Cloudflare注册免费账户 更改NS服务器地址托管域名 从Cloudflare一键导出证书 同样使用openssl生成p12,然后store文件 2. 服务器特征配置 2.1 隐藏服务器:CDN加速 在Cloudflare注册域名后,将NS记录指向其提供的地址 开启CDN加速 本地使用ping测试应为CDN的IP而非真实IP 关闭缓存以确保实时返回命令结果: 设置页面规则,绕过所有缓存 编辑缓存级别为"绕过" 关键点 : 域名后的内容需根据malleable.profile规则设定 如jQuery-2.2.4的所有请求包均为.js,在页面规则中域名配置后跟.js 其他profile如amazon.profile、gmail.profile需跟* 字符 2.2 隐藏流量特征:profile配置 使用Malleable C2 profile配置通信流量特征: http-stager配置示例 使用Cloudflare时的关键配置 User-Agent设置 HTTPS证书声明 检查配置文件有效性: 启动teamserver时加载profile: 2.3 服务器反向代理限制访问 Nginx反向代理配置示例 防火墙设置 关键注意事项 : 在nginx配置中设置X-Forwarded-For头 在profile中设置 trust_x_forwarded_for "true" 反向代理配置中: HTTP监听器可使用任意本机真实IP HTTPS监听器只能使用127.0.0.1,使用真实IP会导致CDN超时无法上线 3. 常见问题解决方案 域名解析问题 : 使用dig命令验证TXT记录是否生效 等待足够时间让DNS记录传播 证书生成问题 : 确保openssl和keytool命令路径正确 检查密码一致性 CDN配置问题 : 确保正确设置绕过缓存的规则 检查域名后缀与profile配置匹配 反向代理问题 : HTTPS监听器必须使用127.0.0.1 确保防火墙规则正确设置 上线但无回显问题 : 检查Content-Type头设置 验证缓存是否被正确绕过 通过以上配置,可以有效隐藏C2服务器的真实特征,提高隐蔽性和安全性。