CS 域前置的原理
1. 核心原理:CDN 的工作方式
要理解域前置,首先要理解 CDN 的工作原理
- CDN(Content Delivery Network):CDN 的核心作用是加速内容分发。它在全球部署了大量的节点服务器,当用户访问一个网站时,CDN 会将用户的请求重定向到离用户最近的节点上。这样,用户就能更快地获取内容
- 多域名共享 IP:一个 CDN 节点通常会为成百上千个不同的域名提供服务。这意味着,
cdn.example.com
和cdn.attacker.com
两个域名,可能解析到同一个 IP 地址
2. 域前置的攻击过程
域前置利用了 CDN 的这个特性,将攻击流量伪装成正常流量。整个过程可以分为以下几步:
- 准备阶段:
- 攻击者域名:攻击者注册一个自己的域名,例如
attacker.com
,并将其配置为 Cobalt Strike 的 C2 域名 - CDN 加速:攻击者将
attacker.com
接入一个大型 CDN 服务,例如 Cloudflare、Akamai 等。这样,attacker.com
就能使用 CDN 的 IP 地址 - 高信誉域名:攻击者选择一个在高信誉 CDN 上托管的、合法的、与自己无关的域名,例如
cdn.google.com
或cdn.bing.com
。这个域名就是我们所说的“域前置”域名
- 攻击者域名:攻击者注册一个自己的域名,例如
- 流量伪装:
- 客户端请求:受害者的机器(被植入 Beacon 的主机)向 Cobalt Strike C2 发送请求
- 隐藏真实 C2:在 HTTP 请求的头部,攻击者做了如下设置:
Host: cdn.google.com
:这个头部告诉 CDN 服务器,客户端要访问的是 Google 的 CDN 服务。由于这个域名是高信誉的,防火墙会放行这个流量X-Forwarded-For: cdn.attacker.com
:这个头部告诉 CDN,真实的请求目标是cdn.attacker.com
。这是域前置的关键
- CDN 转发:
- 当 CDN 节点收到请求时,它会先查看
Host
头。因为Host
头是cdn.google.com
,CDN 就会认为这个请求是合法的,并不会拦截 - 然后,CDN 会根据内部的转发规则,将请求转发到
X-Forwarded-For
头指定的域名所对应的服务器上 - 最终,请求被转发到了攻击者的 Cobalt Strike C2 服务器
- 当 CDN 节点收到请求时,它会先查看