编辑
2025-02-28
渗透-技巧
00
请注意,本文编写于 250 天前,最后修改于 250 天前,其中某些信息可能已经过时。

目录

DoH 和 ECH 技术解析:红队渗透与 C2 对抗中的应用
目录
背景与概述
1. 流量隐匿的必要性
2. 主要挑战
技术原理详解
1. DNS over HTTPS (DoH)
工作原理
核心特性
2. Encrypted Client Hello (ECH)
工作原理
实现流程与架构
1. 域前置 (Domain Fronting)
技术原理
优势
局限性
2. DoH + ECH
技术原理
优势
局限性
3. 云函数转发
技术原理
优势
局限性
4. CDN 代理
技术原理
优势
局限性
隐匿技术对比分析
1. 技术特性对比
2. 场景适用性
企业内网环境
公网环境
高安全需求场景
实战应用指南
1. 为什么需要 DoH 和 ECH?(场景与需求)
2. 什么是 DoH 和 ECH?
(1) DNS-over-HTTPS (DoH)
(2) Encrypted Client Hello (ECH)
3. 完整的技术实现流程
4. 技术实现关键点
(1) DoH实现细节
(2) ECH配置获取
5. 部署架构图
实战应用指南
1. 环境准备
所需组件
2. 配置步骤
3. 红队场景中的技术挑战与解决方案
(1) 挑战 1:DNS 查询暴露
(2) 挑战 2:SNI 信息暴露
(3) 挑战 3:绕过流量审查
4. 技术实现流程
(1) 查询支持 ECH 的 DNS 记录
(2) 利用 ECH 加密握手信息
(3) 建立隐匿的 HTTPS 连接
(4) 发送伪装的 HTTP 请求
5. 红队中的实际应用价值
(1) 隐匿 C2 通信
(2) 绕过域名封锁
(3) 提高通信隐蔽性
6. 通俗类比:加密信封的故事
7. 总结
8. 与传统域前置等隐匿方法的对比分析
(1) 域前置 (Domain Fronting) 技术
(2) DoH + ECH 技术
(3) 实战应用建议

DoH 和 ECH 技术解析:红队渗透与 C2 对抗中的应用

目录

  1. 背景与概述
  2. 技术原理详解
  3. 实现流程与架构
  4. 隐匿技术对比分析
  5. 实战应用指南

背景与概述

1. 流量隐匿的必要性

  • EDR/IDS 的检测能力不断提升
  • 流量特征识别技术的发展
  • 网络环境的复杂性和限制性

2. 主要挑战

  • DNS 查询泄露风险
  • TLS 握手信息暴露
  • 流量特征识别
  • 基础设施可靠性
graph TD
    A[流量隐匿挑战] --> B[DNS查询泄露]
    A --> C[TLS握手暴露]
    A --> D[流量特征识别]
    A --> E[基础设施可靠性]
    B --> F[DoH解决方案]
    C --> G[ECH解决方案]
    D --> H[流量伪装]
    E --> I[多重保障机制]

技术原理详解

1. DNS over HTTPS (DoH)

工作原理

DoH通过HTTPS协议封装DNS查询请求,确保DNS查询过程的安全性和私密性。

sequenceDiagram
    participant Client
    participant DoH Provider
    participant Target DNS
    
    Client->>DoH Provider: HTTPS加密DNS查询
    DoH Provider->>Target DNS: DNS查询
    Target DNS->>DoH Provider: DNS响应
    DoH Provider->>Client: HTTPS加密响应

核心特性

  • DNS查询加密传输
  • 使用HTTPS协议封装
  • 支持标准化实现
  • 防DNS劫持和污染

2. Encrypted Client Hello (ECH)

工作原理

ECH通过加密TLS握手中的Client Hello消息,保护SNI等敏感信息。

sequenceDiagram
    participant Client
    participant Server
    
    Client->>Server: 加密的Client Hello (含SNI)
    Server->>Client: Server Hello
    Note over Client,Server: 只有目标服务器能解密SNI信息

实现流程与架构

1. 域前置 (Domain Fronting)

技术原理

  • TLS SNI 使用 CDN 域名
  • HTTP Host 头指向真实后端
  • 利用 CDN 基础设施转发

优势

  • 成熟可靠的技术方案
  • 利用高信誉域名
  • 完整的传输层和应用层隐匿

局限性

  • CDN 服务商限制风险
  • 较高的运营成本
  • 流量可能被审计

2. DoH + ECH

技术原理

  • DoH 加密 DNS 查询
  • ECH 加密 TLS 握手
  • 标准化协议实现

优势

  • DNS 查询完全加密
  • 不依赖第三方服务
  • 标准协议支持
  • 低成本运营

局限性

  • 需要服务器 ECH 支持
  • 部署配置较复杂
  • 当前支持度有限

3. 云函数转发

技术原理

  • 利用云厂商 Serverless 服务
  • 函数计算作为中转节点
  • 动态创建和销毁实例

优势

  • 弹性伸缩能力强
  • 成本按使用计费
  • 部署管理便捷
  • IP 资源丰富

局限性

  • 云厂商审计风险
  • 函数执行时间限制
  • 网络延迟不稳定
  • 需要适配云平台

4. CDN 代理

技术原理

  • CDN 节点作为代理
  • 自定义回源规则
  • 缓存策略优化

优势

  • 全球节点分布
  • 稳定的服务质量
  • 便于管理维护
  • 自动故障转移

局限性

  • 配置较为复杂
  • 成本相对较高
  • 易被安全设备针对
  • 服务商限制风险

隐匿技术对比分析

1. 技术特性对比

特性域前置DoH + ECH云函数转发CDN 代理
DNS 隐匿依赖 CDN完全加密部分支持依赖 CDN
TLS 隐匿SNI 伪装加密实现平台相关SNI 伪装
应用层隐匿完整支持不涉及完整支持完整支持
部署复杂度中等较高中等
运维成本中等
检测难度较难较难中等中等
可靠性中等

2. 场景适用性

企业内网环境

  • 推荐:域前置、CDN 代理
  • 原因:稳定性好,绕过限制能力强

公网环境

  • 推荐:DoH + ECH、云函数转发
  • 原因:灵活性高,成本可控

高安全需求场景

  • 推荐:多技术组合使用
  • 原因:提高隐匿性,增加冗余性

实战应用指南

1. 为什么需要 DoH 和 ECH?(场景与需求)

在红队内网渗透和 C2(Command & Control)通信的对抗场景中,隐匿流量和绕过检测是关键需求。传统的通信方式容易被 EDR(Endpoint Detection and Response)、IDS(Intrusion Detection System)或流量审查机制识别和拦截。具体问题包括:

  1. DNS 泄露:

    • 传统的 DNS 查询是明文的,攻击者的 C2 域名可能被 EDR 或网络设备解析并标记为恶意,从而导致行为暴露。
    • 某些网络环境中甚至会使用 DNS 策略来阻断特定域名的解析。
  2. SNI 泄露:

    • 在 HTTPS 握手过程中,明文的 SNI(Server Name Indication)会暴露目标域名,攻击者的 C2 域名可能被流量审查设备(如防火墙)识别和拦截。
  3. 对抗流量审查和行为分析:

    • 现代 EDR 和流量分析系统会基于 DNS 请求、TLS 握手中的 SNI,以及流量模式来检测潜在的恶意通信。
    • 攻击者需要一种方式来隐匿 DNS 查询和握手过程中的敏感信息,绕过检测。

解决方案:

  • 使用 DNS-over-HTTPS (DoH) 加密 DNS 查询,防止 DNS 泄露。
  • 使用 Encrypted Client Hello (ECH) 加密 TLS 握手中的 SNI 信息,避免暴露访问的真实目标。

2. 什么是 DoH 和 ECH?

(1) DNS-over-HTTPS (DoH)

  • DoH 是一种通过 HTTPS 协议进行 DNS 查询的技术。
  • 传统的 DNS 查询是明文的,容易被网络设备拦截、监控或篡改。DoH 将 DNS 查询封装在 HTTPS 请求中,使得中间人无法轻易查看或篡改查询内容。
  • 优点:
    1. 查询内容被加密,中间人无法直接看到 DNS 请求的具体内容。
    2. 使用 HTTPS 通信,流量看起来像普通的 Web 流量,难以区分和拦截。
    3. 防止 DNS 劫持和污染。

(2) Encrypted Client Hello (ECH)

  • ECH 是 TLS 1.3 的扩展技术,用于加密握手过程中的 Client Hello 消息。
  • 在传统的 TLS 握手中,SNI(Server Name Indication)是明文的,用于告知服务器客户端要访问的域名。这会暴露通信目标,成为流量审查的关键点。
  • ECH 的作用是将 Client Hello 中的 SNI 信息加密,只有目标服务器才能解密,其他人(如防火墙或审查设备)无法查看。
  • 优点:
    1. 隐匿访问的真实目标域名。
    2. 防止中间人通过 SNI 信息识别和拦截通信。

3. 完整的技术实现流程

graph TD
    A[开始] --> B[配置DoH服务]
    B --> C[获取ECH配置]
    C --> D[DNS查询加密]
    D --> E[TLS握手加密]
    E --> F[建立加密连接]
    F --> G[数据传输]
    
    subgraph DoH流程
    B --> H[选择DoH提供商]
    H --> I[配置DoH客户端]
    I --> J[加密DNS查询]
    end
    
    subgraph ECH流程
    C --> K[获取服务器公钥]
    K --> L[生成ECH配置]
    L --> M[加密ClientHello]
    end

4. 技术实现关键点

(1) DoH实现细节

python
# DoH请求示例代码 import requests def doh_query(domain, doh_url="https://dns.alidns.com/dns-query"): headers = { 'accept': 'application/dns-json' } params = { 'name': domain, 'type': 'A' } response = requests.get(doh_url, headers=headers, params=params) return response.json()

(2) ECH配置获取

sequenceDiagram
    participant Client
    participant DNS
    participant Server
    
    Client->>DNS: 查询HTTPS记录
    DNS->>Client: 返回ECH配置
    Note over Client: 解析ECH配置
    Client->>Server: 使用ECH配置加密ClientHello

5. 部署架构图

graph LR
    A[客户端] --> B[DoH服务器]
    A --> C[目标服务器]
    
    subgraph 加密通道
    B --> D[DNS查询]
    C --> E[ECH握手]
    end
    
    subgraph 服务端
    D --> F[DNS响应]
    E --> G[数据交换]
    end

实战应用指南

1. 环境准备

graph TD
    A[环境准备] --> B[安装依赖]
    B --> C[配置DoH客户端]
    C --> D[获取ECH证书]
    D --> E[配置网络环境]

所需组件

  • DoH客户端
  • ECH支持的TLS库
  • 网络代理工具
  • 证书管理工具

2. 配置步骤

  1. DoH服务器配置
bash
# 配置DoH服务器 server { listen 443 ssl http2; server_name doh.example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location /dns-query { proxy_pass https://upstream-dns-server; proxy_set_header Host $host; } }
  1. ECH配置
json
{ "public_name": "example.com", "public_key": "...", "key_config": { "version": 0xfe0d, "cipher_suites": ["TLS_AES_128_GCM_SHA256"] } }

3. 红队场景中的技术挑战与解决方案

(1) 挑战 1:DNS 查询暴露

  • 问题:

    • 在内网渗透中,攻击者的 C2 域名可能通过 DNS 查询暴露给 EDR 或网络设备。
    • 即使通信内容被加密,DNS 查询本身仍然会暴露目标域名。
  • 解决方案:

    • 使用 DoH 加密 DNS 查询,将 DNS 请求伪装为 HTTPS 流量。
    • 通过可信的公共 DoH 服务(如 Google 或 Cloudflare)查询目标域名的解析记录,绕过本地 DNS 监控。

(2) 挑战 2:SNI 信息暴露

  • 问题:

    • 在 HTTPS 握手中,明文的 SNI 会暴露目标域名,导致 C2 通信被识别和拦截。
    • 即使使用 IP 直连,目标域名仍可能通过 TLS 握手暴露。
  • 解决方案:

    • 使用 ECH 加密 TLS 握手中的 SNI 信息,确保只有目标服务器能够解密。
    • 即使中间人截获流量,也无法识别目标域名。

(3) 挑战 3:绕过流量审查

  • 问题:

    • 流量审查设备可能基于 DNS 请求、TLS 握手和流量模式检测异常通信。
    • 攻击者需要伪装通信行为,使其看起来像正常的 Web 流量。
  • 解决方案:

    • 结合 DoHECH,同时伪装 HTTP 请求头(如 Host 头)和通信模式,使流量难以与合法流量区分。
    • 使用可信的 DoH 服务和目标服务器的 IP 地址,进一步减少暴露风险。

4. 技术实现流程

(1) 查询支持 ECH 的 DNS 记录

  • 通过 DoH 查询目标域名的 HTTPS 记录
  • HTTPS 记录 是一种新的 DNS 记录类型,用于告知客户端目标服务器是否支持 ECH,并提供加密所需的配置信息。
  • 流程:
    1. 构造一个 DNS 查询,查询类型为 HTTPS
    2. 将查询请求发送到 DoH 服务(如 https://dns.alidns.com/dns-query)。
    3. 解析 DNS 响应,提取:
      • ECH 配置值:加密 SNI 所需的公钥和参数。
      • 目标服务器的 IP 地址

(2) 利用 ECH 加密握手信息

  • 从 DNS 查询中提取的 ECH 配置值 用于加密 TLS 握手中的 Client Hello 消息。
  • 使用 tls.ConfigEncryptedClientHelloConfigList 配置加密握手。

(3) 建立隐匿的 HTTPS 连接

  • 直接连接到目标服务器的 IP 地址,而不是通过域名访问。
  • 在 TLS 握手过程中,使用 ECH 加密 SNI 信息,使得中间人无法识别真实的访问目标。

(4) 发送伪装的 HTTP 请求

  • 建立加密的 TLS 连接后,发送 HTTP 请求访问目标服务器的内容。
  • 在 HTTP 请求中,伪装 Host 头为目标域名,确保服务器能够正确处理请求。

5. 红队中的实际应用价值

(1) 隐匿 C2 通信

  • 使用 DoH 和 ECH,攻击者可以有效隐藏 C2 域名,绕过 EDR 和网络审查。
  • 即使 C2 域名被标记为恶意,通信过程仍然难以被检测。

(2) 绕过域名封锁

  • 在某些受限网络中,特定域名可能被 DNS 污染或封锁。
  • 使用 DoH 和 ECH,可以绕过这些限制,直接访问目标域名。

(3) 提高通信隐蔽性

  • 结合 DoH 和 ECH,攻击者的通信流量看起来像普通的 HTTPS 流量,难以被区分和拦截。

6. 通俗类比:加密信封的故事

可以将 DoH 和 ECH 的过程类比成一个"加密信封":

  1. 你想给某个网站(服务器)寄一封信(访问请求),但不想让邮递员(中间人)知道信是寄给谁的。
  2. 你先问网站的朋友(DNS 服务器):如何才能寄信给它?
  3. 网站的朋友告诉你:用一种特殊的信封(ECH 加密),只有网站能打开。
  4. 你把信装进信封,写上一个假地址(IP 地址),然后寄出去。
  5. 邮递员只能看到信封和假地址,但完全不知道信的内容和真实的收件人。

7. 总结

在红队渗透和 C2 对抗中,DoH 和 ECH 是强大的隐匿技术:

  1. DoH 通过加密 DNS 查询,防止 DNS 泄露和劫持。
  2. ECH 通过加密 SNI 信息,隐匿访问的真实目标。
  3. 结合两者,可以有效绕过 EDR、流量审查和网络封锁,提升通信隐蔽性。

这些技术的结合为红队提供了强大的对抗手段,同时也为网络安全防御提出了更高的要求。

高信誉域名 CDN CLOUDFARE ECH配置 密钥 阿里云dns云平台 CDN IP 真实域名 cloudfare

8. 与传统域前置等隐匿方法的对比分析

(1) 域前置 (Domain Fronting) 技术

  • 工作原理:

    • 利用 CDN 的特性,在 TLS SNI 和 HTTP Host 头中使用不同的域名。
    • TLS SNI 使用 CDN 的合法域名建立连接。
    • HTTP Host 头指向真实的后端服务。
    • 实现传输层和应用层的双重隐匿。
  • 优势:

    1. 同时隐藏传输层(TLS SNI)和应用层(HTTP Host)的真实目标。
    2. 利用大型 CDN 的可信域名和基础设施。
    3. 技术相对成熟,有较多实践经验。
    4. 不需要目标服务器的特殊支持。
  • 局限性:

    1. 强依赖 CDN 服务商,服务商可能随时限制此类行为。
    2. 需要承担 CDN 服务的费用。
    3. CDN 服务商可能会记录和审计流量。

(2) DoH + ECH 技术

  • 工作原理:

    • DoH 加密 DNS 查询过程。
    • ECH 加密 TLS 握手中的 SNI 信息。
    • 两者结合实现从 DNS 到 TLS 的全程加密。
  • 优势:

    1. 标准化的协议实现,更具通用性。
    2. 不依赖第三方 CDN 服务商。
    3. DNS 查询过程完全加密。
    4. 运营成本较低。
  • 局限性:

    1. 需要服务器端支持 ECH。
    2. 目前支持的服务器较少。
    3. 配置和实现较为复杂。

(3) 实战应用建议

  1. 选择考虑因素:

    • 目标环境是否限制 CDN 访问
    • 是否有预算使用 CDN 服务
    • 目标服务器是否支持 ECH
    • 对隐匿效果的要求程度
  2. 组合使用策略:

    • 主要隐匿通道:选择一种作为主要通信方式
    • 备份通道:使用另一种作为备用方案
    • 分阶段使用:初始阶段使用一种,后续切换另一种
  3. 防御规避建议:

    • 域前置:选择较少被滥用的 CDN 服务商
    • DoH + ECH:使用可信度高的公共 DoH 服务器
    • 定期轮换使用不同的隐匿方案