填坑技巧-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生成证书
- 申请域名(推荐https://www.namesilo.com)
- 生成证书:
certbot certonly -d yourdomain.tk -d *.yourdomain.tk --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
- 在DNS服务商处添加TXT记录验证
- 使用dig命令验证解析是否成功:
dig -t txt _acme-challenge.yourdomain.tk @8.8.8.8
- 生成p12文件:
openssl pkcs12 -export -in ./fullchain.pem -inkey ./privkey.pem -out yourdomain.tk.p12 -name yourdomain.tk -passout pass:123456
- 生成store文件:
keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore yourdomain.tk.store -srckeystore yourdomain.tk.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias yourdomain.tk
方法二:使用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配置示例
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
关键注意事项:
- 在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服务器的真实特征,提高隐蔽性和安全性。