理解域名前置

本文解释了Cato如何通过持续重新评估DNS、TLS和超文本传输协议检查阶段的真实主机名来自动阻止域名前置。 这确保了伪装的指挥与控制 (CnC) 流量能够立即被检测并阻止。

概述

域名前置是威胁行为者用来将恶意流量伪装成合法通信的一种技术。 它利用了HTTPS和内容分发网络 (CDN) 处理域名的方式。 在标准的HTTPS连接过程中,两个域标识符在不同阶段可见:

  • 服务器名指示 (SNI):在TLS握手期间以明文发送,指示客户端打算连接的目标主机名
  • 主机头:稍后在加密的HTTP请求中发送,指定实际访问的域名

使用域名前置,攻击者故意使这两个字段不匹配,例如,在SNI中使用良性域名(例如 example.com)而在主机头中使用恶意域名(例如 malicious-cnc.com)。 这使得指挥与控制 (CnC) 流量看似定位到合法服务,通常隐藏在主要云或CDN提供商后面。

Cato如何阻止域名前置

与其他需要特殊规则或更新来处理域名前置的解决方案不同,Cato的架构本质上检测并阻止域名前置尝试。 它通过持续重新评估流量的真实身份来做到这一点,因为更多信息变得可用(更多信息请参见理解Cato SPACE架构的数据包流 ,解释该动态重新评估过程)。

统一主机名评估

Cato使用一个称为统一主机名的概念,这是一个动态更新的标识符,代表流量的真实目的地。 这个标识符在每个检查阶段被优化:

  1. 在DNS解析阶段,Cato识别与目的地IP相关联的域名 (DNAME)
  2. 在TLS握手期间,Cato观察服务器名指示 (SNI),显示客户端试图访问的主机名
  3. 经过TLS检查,当加密流量被解密后,Cato可以看到HTTP主机头,揭示实际访问的域名

Cato在每个阶段重新评估统一主机名。 如果主机头域与原始SNI冲突或不同,Cato会将其视为新情报,并在防火墙 (FW) 和入侵防护系统 (IPS) 引擎间触发重新评估。

这意味着两个产品都能在新的主机名上下文下有效地重新应用。 如果新揭示的主机是恶意的(即,被防火墙配置为阻止或包含在阻止的IPS签名中),Cato会立即阻止它,即使原始SNI和目的IP看似良性。

这种分层检测确保试图隐藏在可信域名后面的CnC通道在真实目的地暴露时立即被阻止。

测试域名前置保护

要验证Cato对域名前置保护的有效性,您可以自行重现检测过程:

  1. 创建防火墙规则:确保您已配置防火墙规则以阻止匿名器(或者创建一个如果尚未存在)。
  2. 发送测试请求:运行以下curl命令:

    curl -v https://example.com -H '主机:expressvpn.com'

    命令被防火墙阻止

  3. 验证阻止:在CMA中,在防火墙规则命中下查看事件页面以确认阻止。 在事件属性中,目标IP字段是examplee.com的IP地址,而域名字段更新为最后出现在HTTP主机头中的域:expressvpn.com。

可选:您还可以在Wireshark中捕获流量(如果以明文而不是HTTPS发送)以可视化主机头并确认阻止事件。

应用配置后,可以通过运行以下命令验证行为:
curl -v https://chatgpt.com -H '主机:echo.free.beeceptor.com'

这些步骤为您提供了一种透明的方式来观察Cato如何通过其后检查重评估过程中和消除域名前置尝试。

示例捕获

下面是一个显示来自测试的DNS和HTTP流的Wireshark捕获示例:

Domain_Forwarding1.png

它显示了对examplee.com的DNS查询,随后是指向expressvpn.com的HTTP请求。 HTTP响应返回403 Forbidden,确认Cato成功阻止了被域名前置请求。

域名前置是一种用于隐藏恶意通信在合法域名后面的技术。 虽然某些解决方案难以识别隐藏在合法域名后的流量,但Cato的架构,通过统一主机名重评估和双引擎重新验证,固有地阻止了这些尝试。 通过在检查阶段持续更新SNI、主机头和IP信息,Cato确保伪装在可信域名后的CnC通道永远不会通过。

这篇文章有帮助吗?

0 人中有 0 人觉得有帮助

0 条评论