重定向器是充当 C2 服务器和目标网络之间中间人的服务器。其主要功能是重定向 C2 和受感染目标之间的所有通信。重定向器通常用于隐藏 C2 服务器流量的来源,使防御者更难以检测和阻止 C2 基础设施。
基于云的重定向器提供了一个很好的机会,通过内容分发网络 (CDN) 等全球服务器网络路由 C2 流量,从而掩盖 C2 流量。它们设置起来很简单,如果检测到 C2 通道,红队可以快速创建一个新的重定向器,而不用重建整个基础设施。
在本文,我们将讨论 Azure FrontDoor CDN 服务以及如何将其用作 C2 基础设施的重定向器。
重定向器设置
该设置涉及一个 CDN 重定向器,它通过端口 443 上的 HTTPS 与目标系统进行通信,并通过端口 80 上的 HTTP 在 CDN 和 C2 服务器之间进行通信,如图所示。
此设置可确保来自受感染系统的任何回调都不会直接发送至 C2 服务器,从而隐藏 C2 服务器的实际位置。
先决条件
本节概述了设置 CDN 重定向器所需的关键步骤。这些步骤包括启用Microsoft.CDN提供程序和配置虚拟机防火墙规则。
启用Microsoft.CDN提供程序(Azure 试用版)
如果您当前正在使用 Azure 免费试用服务并想要创建 CDN 配置文件,则必须启用“Microsoft.CDN”提供商。
为此,请搜索您的订阅名称并选择它。导航到左侧菜单并选择“设置”下的“资源提供者” 。
在“资源提供商”部分中,搜索Microsoft.Cdn 。如果提供商未注册,您将看到状态为“未注册”。要注册提供商,请单击Microsoft.Cdn ,然后单击“注册”按钮。
注册过程需要几秒钟才能完成。完成后,注册状态旁边将出现一个绿色复选标记。
配置虚拟机防火墙规则
下一步是在托管 C2 服务器的虚拟机上设置防火墙规则。在本指南中,我使用 Azure 托管的虚拟机,并在其上部署了 Mythic C2 框架。
目标是打开端口 80 和 443 以与 CDN 端点和目标系统进行通信。如果你想继续,可以参考之前的文章:
•为 C2 基础设施部署 Azure VM[1]
•在 Azure VM 上安装 Mythic C2[2]
要添加新的防火墙规则,我们需要选择虚拟机,然后单击“网络”部分。目前,我们只添加了一 (1) 条规则,该规则适用于 SSH 的端口 22/TCP。我们将添加另外两 (2) 条规则;第一个将用于端口 80,第二个将用于端口 443。
要创建新规则,请单击“添加入站端口规则”选项。在源字段中,我们可以选择要允许入站流量的特定源 IP 地址。这可以是 CIDR 范围形式的 IP 地址范围,或者我们可以使用 Microsoft 服务标记选项,该选项具有代表 IP 地址类别的预定义标识符,例如我们将使用的 Azure FrontDoor 服务。
要设置 HTTP 端口 80 规则,我们将遵循以下配置,然后单击“添加”按钮添加新规则。
** Firewall Rule Configuration for HTTP port 80 **
Source: Service Tag
Source service tag: AzureFrontDoor.Backend
Source port ranges: *
Destination: Any
Service: HTTP
Destination port range: 80
Protocol: TCP
Action: Allow
Priotiry: 310
按照相同的步骤在端口 443 上创建 HTTPS 规则。
** Firewall Rule Configuration for HTTPS port 443**
Source: Service Tag
Source service tag: AzureFrontDoor.Backend
Source port ranges: *
Destination: Any
Service: HTTPS
Destination port range: 443
Protocol: TCP
Action: Allow
Priotiry: 320
完成设置后,我们应该添加三个规则:SSH、HTTP 和 HTTPS。其他规则是在创建 VM 时为负载均衡器和虚拟网络自动生成的。
💡 Microsoft 在其网站上以名为“ServiceTags_Public.json ”的 JSON 文件发布其 Azure IP 范围和服务标签。该文件包含 Public Azure 整体的 IPv4 地址范围,按区域和服务划分。该文件每周更新一次。
配置 Azure Front Door CDN 端点
Microsoft Azure 上有多个可用的 CDN 选项。这些选项的功能有所不同,例如 Web 应用程序防火墙 (WAF)、专用链接、Microsoft 威胁情报和安全分析等附加安全功能。每个选项的定价也有所不同。
为了实现我们的目标,我们将使用 Azure Front Door 产品并选择“快速创建”选项。要创建新的 CDN,请在 Azure 搜索栏中键入 CDN,然后选择“Front Door and CDN profiles”。
在 CDN 仪表板部分中,我们单击“创建”以添加新的 CDN。此仪表板用于列出所有活动的 CDN。
接下来,单击可用产品中的Azure Front Door和快速创建,然后单击继续。
在 Azure Front Door 配置文件中,我们选择之前创建的订阅和资源组“基础结构”和“red-ops”。之后,命名 CDN 并选择 Tier;我们将其默认设置为“标准”。Tier是指确定检索内容的成本和访问延迟的 Azure 服务功能。
要为 CDN 创建端点,请选中该框并创建一个唯一的名称。设置 CDN 时客户端将看到并连接到此端点。
将 CDN 命名为看起来合法且符合客户常规预期请求的名称非常重要。避免使用粗略的名称,例如“c2基础设施”或“redops”。相反,如果客户从事酒店行业,则将其命名为“availabilitycalendar”或“reservation-api”;如果客户是航空公司,则将其命名为“destinations”或“book-flight”。默认情况下,CDN 的 URL 格式将遵循 {endpoint-name-randomString}.azurefd.net
,但您也可以配置自定义域名。我们将在以后的文章中讨论它。
reservation-api-cqf6eva8a7efdvhp.z02.azurefd.net
Azure 根据需要提供各种Origin 类型选项。以下是常见的:
•存储(静态网站)适用于存储在 Azure 存储帐户(Blob、文件、容器)中的内容。
•云服务适用于 Azure 云服务。
•Web App适用于 Web 应用程序和 API。
•自定义源适用于 Azure 或其他地方托管的任何其他可公开访问的源 Web 服务器。
•公共IP地址。
在本文中,我们将使用其公共 IP 地址来创建的 Azure VM。另一方面,主机名是虚拟机的名称。
为了防止 C2 payload失败,我们确保取消选中“缓存”选项。如果查询字符串被调用两次,启用缓存可能会导致负载在 CDN 级别被缓存,这可能会导致失败。
对于WAF策略,保留为默认值。
接下来,我们将标签添加到 CDN 配置文件中,然后单击Review + Create 。标签就像可以附加到任何 Azure 服务的标签,以帮助你管理和跟踪资源成本。
然后,检查输入的信息并单击“创建” 。部署 CDN 后,您将看到“您的部署已完成”消息。单击“转到资源” 。
访问端点
在新创建的 CDN 配置文件中,端点“reservation-api”已成功启用和配置。我们将对路线和始发地组进行一些更改以实现我们的目标。
路由选项配置
在重定向器设置图中,我们提到客户端到 Azure CDN 的通信是通过端口 443 上的 HTTPS 进行的。原因是 Azure CDN 重定向器需要使用 SSL 进行加密流量。另一方面,CDN通过端口80上的HTTP与C2服务器通信。
现在我们已经创建了 CDN,客户端将在端口 443 上与其通信。但是,为了使 CDN 能够在端口 80 上与 C2 服务器通信,我们需要更新端点的路由设置。
为此,请单击“默认路由”,将转发协议从仅 HTTPS更改为仅 HTTP ,然后单击“更新”
来源组配置
源是从Front Door接收传入请求的服务器。default-origin-group是一组特定的源,用作传送内容的主要源。这是当用户请求内容时 CDN 将尝试联系第一组源。对于我们的重定向器,我们在default-origin-group中有 Azure VM。
在本节中,除了取消选中“Session Affinity”和“Health Probes”选项并单击“Update”按钮之外,我们不会修改任何内容。
💡 Session affinity是一项功能,可确保来自特定用户的请求一致定向到同一后端服务器或实例。如果禁用此功能,传入请求将随机定向到任何可用的后端服务器,而无需在整个客户端会话中保持与特定服务器的一致连接。
💡 禁用健康检查有助于减少 CDN 和 C2 服务器之间的额外流量。
CDN 端点
配置过程完成后,您在尝试通过 Curl 或 Web 浏览器访问端点时可能会遇到 405 HTTP 响应,其中包含一条错误消息,指出“我们的服务现在不可用”。发生这种情况是因为需要建立 HTTP 请求的规则。
然而,对于我们的重定向器目标,我们不需要它。payload将正常连接到 CDN 端点并进行回连。
curl -I https://reservation-api-e7fdfyc9cnfvbgc5.z02.azurefd.net
HTTP/2 405
content-length: 22
content-type: text/plain
x-cache: CONFIG_NOCACHE
x-azure-ref: 0yiagZQAAAADpHDPiaxzxRLySP35acrwwTU5aMjIxMDYwNjEyMDM1ADk3ODhmMGY3LWQyNGEtNDMwYi04MTRhLWZkYjFlZGQ5MWI4MA==
date: Thu, 11 Jan 2024 17:35:06 GMT