### CS 域前置的原理

1. 核心原理：CDN 的工作方式

要理解域前置，首先要理解 CDN 的工作原理

- CDN（Content Delivery Network）：CDN 的核心作用是加速内容分发。它在全球部署了大量的节点服务器，当用户访问一个网站时，CDN 会将用户的请求重定向到离用户最近的节点上。这样，用户就能更快地获取内容
- 多域名共享 IP：一个 CDN 节点通常会为成百上千个不同的域名提供服务。这意味着，`cdn.example.com` 和 `cdn.attacker.com` 两个域名，可能解析到同一个 IP 地址

2. 域前置的攻击过程

域前置利用了 CDN 的这个特性，将攻击流量伪装成正常流量。整个过程可以分为以下几步：

1. 准备阶段：
   - 攻击者域名：攻击者注册一个自己的域名，例如 `attacker.com`，并将其配置为 Cobalt Strike 的 C2 域名
   - CDN 加速：攻击者将 `attacker.com` 接入一个大型 CDN 服务，例如 Cloudflare、Akamai 等。这样，`attacker.com` 就能使用 CDN 的 IP 地址
   - 高信誉域名：攻击者选择一个在高信誉 CDN 上托管的、合法的、与自己无关的域名，例如 `cdn.google.com` 或 `cdn.bing.com`。这个域名就是我们所说的“域前置”域名
2. 流量伪装：
   - 客户端请求：受害者的机器（被植入 Beacon 的主机）向 Cobalt Strike C2 发送请求
   - 隐藏真实 C2：在 HTTP 请求的头部，攻击者做了如下设置：
     - `Host: cdn.google.com`：这个头部告诉 CDN 服务器，客户端要访问的是 Google 的 CDN 服务。由于这个域名是高信誉的，防火墙会放行这个流量
     - `X-Forwarded-For: cdn.attacker.com`：这个头部告诉 CDN，真实的请求目标是 `cdn.attacker.com`。这是域前置的关键
3. CDN 转发：
   - 当 CDN 节点收到请求时，它会先查看 `Host` 头。因为 `Host` 头是 `cdn.google.com`，CDN 就会认为这个请求是合法的，并不会拦截
   - 然后，CDN 会根据内部的转发规则，将请求转发到 `X-Forwarded-For` 头指定的域名所对应的服务器上
   - 最终，请求被转发到了攻击者的 Cobalt Strike C2 服务器