C2简介

发布时间 2023-05-29 18:50:39作者: gvpn

C2简介

学习命令与控制的基本知识,帮助您成为更好的红队队员并简化您的下一次红队评估!

thm:https://tryhackme.com/room/introtoc2

介绍

命令与控制 ( C2 ) 框架是红队队员和高级对手战术手册的重要组成部分。它们使在交战期间管理受损设备变得容易,并且通常有助于横向移动。

目标

  • 命令和控制框架如何运作
  • 您可能使用的各种组件。
  • 如何建立一个基本的命令和控制框架
  • 使用 Armitage或 Metasploit 来熟悉命令和控制框架
  • 如何管理命令和控制框架
  • 管理命令和控制框架时的OPSEC考虑因素
  • 以及更多!

命令和控制框架

什么是命令和控制框架

在尝试消化C2框架的各种组件时,它可能会令人生畏。然而,他们不必如此。为了更好地理解什么是最基本的 C2 框架,请考虑一个 Netcat 侦听器(C2 服务器),它能够一次处理许多反向 shell 回调(C2 代理)。它是一个服务器,但用于反向 shell。与 Netcat 不同,几乎所有 C2 框架都需要一个特殊的有效负载生成器。这通常是框架本身内置的功能。例如,Metasploit 是一个 C2 框架,它有自己的有效负载生成器 MSFVenom。


上图描绘了三个受感染的客户端回调C2服务器。

命令和控制结构

C2服务器

为了理解命令和控制框架,我们必须首先了解C2服务器的各种组件。让我们从最重要的组件开始——C2 服务器本身。C2服务器充当代理回拨的中心。代理将定期与 C2 服务器联系并等待操作员的命令。

Agents / Payloads
代理是由C2框架生成的程序,它回调 C2 服务器上的侦听器。大多数时候,与标准反向 shell 相比,此代理启用特殊功能。大多数 C2 框架都实施伪命令,以使 C2 操作员的工作更轻松。这方面的一些示例可能是将文件下载或上传到系统的伪命令。重要的是要知道代理可以是高度可配置的,可以调整 C2 代理向 C2 服务器上的侦听器发送信标的时间等等。

Listeners
在最基本的层面上,侦听器是在C2服务器上运行的应用程序,它等待通过特定端口或协议的回调。这方面的一些示例是 DNS、HTTP 和/或 HTTPS。

信标
Beacon 是C2 Agent 回调运行在 C2 Server 上的监听器的过程。

混淆代理回调

Sleep Timers

一些安全分析师、防病毒软件和下一代防火墙在尝试识别命令和控制流量时寻找的一个关键因素是信标和设备向C2服务器发出信标的速率。假设防火墙观察到的流量看起来像这样

  • TCP/443 - 会话持续时间 3 秒,发送 55 个数据包,10:00:05.000
  • TCP/443 - 会话持续时间 2 秒,发送 33 个数据包,10:00:10.000
  • TCP/443 - 会话持续时间 3 秒,发送 55 个数据包,10:00:15.000
  • TCP/443 - 会话持续时间 1 秒,发送 33 个数据包,10:00:20.000
  • TCP/443 - 会话持续时间 3 秒,发送 55 个数据包,10:00:25.000

一种模式开始形成。代理每 5 秒发出一次信标;这意味着它有一个 5 秒的睡眠定时器。

Jitter

抖动采用睡眠定时器并为其添加一些变化;我们的C2信标现在可能会表现出一种奇怪的模式,该模式可能显示更接近普通用户的活动:

  • TCP/443 - 会话持续时间 3 秒,发送 55 个数据包,10:00:03.580
  • TCP/443 - 会话持续时间 2 秒,发送 33 个数据包,10:00:13.213
  • TCP/443 - 会话持续时间 3 秒,发送 55 个数据包,10:00:14.912
  • TCP/443 - 会话持续时间 1 秒,发送 33 个数据包,10:00:23.444
  • TCP/443 - 会话持续时间 3 秒,发送 55 个数据包,10:00:27.182

信标现在设置为半不规则模式,这使得在常规用户流量中识别起来稍微困难一些。在更高级的C2框架中,可能会改变各种其他参数,例如“文件”抖动或将垃圾数据添加到有效载荷或正在传输的文件中,使其看起来比实际更大。

有效载荷类型

与常规的反向 Shell 非常相似,您可以在C2框架中使用两种主要类型的有效载荷;分阶段和无阶段有效载荷。

无阶段有效载荷

Stageless Payloads 是两者中最简单的;它们包含完整的C2代理并将回调到 C2 服务器并立即开始发送信标。您可以参考下图以更好地了解 Stageless 有效负载的运行方式。

使用 Stageless 有效载荷建立C2信标的步骤如下:

  • 1.受害者下载并执行Dropper
  • 2.开始 向C2服务器发送信标

分阶段有效载荷

分阶段有效载荷需要回调到C2服务器以下载 C2 代理的其他部分。这通常被称为“Dropper”,因为它被“Dropped”到受害机器上以下载我们暂存的 payload 的第二阶段。这是优于无阶段负载的首选方法,因为需要编写少量代码来从 C2 服务器检索 C2 代理的其他部分。它还可以更轻松地混淆代码以绕过防病毒程序。

使用分阶段有效载荷建立C2信标的步骤如下:

  • 1.受害者下载并执行Dropper
  • 2.Dropper回调C2 Server进行Stage 2
  • 3.C2服务器将阶段 2 发送回受害者工作站
  • 4.阶段 2 被加载到受害者工作站的内存中
  • 5.C2信标初始化,红队/威胁行为者可以与 C2 服务器上的受害者交战。

有效载荷格式

您可能知道,Windows PE 文件(可执行文件)并不是在系统上执行代码的唯一方式。一些C2框架支持各种其他格式的有效负载,例如:

PowerShell脚本
    其中可能包含 C# 代码,并且可以使用 Add-Type commandlet 进行编译和执行
HTA Files
JScript Files
Visual Basic 应用程序/脚本
微软办公文件

参考:https://www.cnblogs.com/-Lucky-/p/17411865.html

模块

模块是任何C2框架的核心组件,它们增加了使代理和C2服务器更加灵活的能力。根据C2框架,脚本必须用不同的语言编写。Cobalt Strike有“Aggressor Scripts”,它们是用“Aggressor Scripting Language”编写的。PowerShell Empire支持多种语言,Metasploit的模块是用Ruby编写的,许多其他模块则用许多其他语言编写。

后期开发模块

Post Exploitation 模块只是在初始妥协点之后处理任何事情的模块,这可能像运行 SharpHound.ps1 一样简单以查找横向移动路径,也可能像转储 LSASS 和解析内存中的凭据一样复杂。

旋转模块

C2框架的最后一个主要组件之一是其枢轴模块,这使得访问 C2 框架内的受限网络段变得更加容易。如果您在系统上具有管理权限,则可以打开“SMB 信标”,它可以使机器通过 SMB 协议充当代理。这可能允许受限网段中的机器与您的 C2 服务器通信。


该图描述了多个受害者,他们使用 SMB 枢轴回调C2服务器。

上图显示了受限网段内的主机如何回调C2 Server:

  1. Victims 回调到非受限网段中另一个 Victim 上的 SMB 命名管道。
  2. 非受限网段的Victim通过标准beacon回调C2 Server。
  3. C2 服务器然后将命令发回非受限网段中的受害者。
  4. 非受限网段的Victim再将C2指令转发给受限网段的主机。

面向世界

所有红队队员必须克服的一个重要障碍是将基础设施置于清晰可见的位置。有许多不同的方法可以做到这一点;最流行的方法之一称为“域前端”。

域名前端

Domain Fronting 使用已知的好主机(例如)Cloudflare。Cloudflare 经营的业务提供有关HTTP连接详细信息的增强指标以及缓存 HTTP 连接请求以节省带宽。红队队员可以滥用这一点,使工作站或服务器看起来正在与已知的、可信的 IP 地址进行通信。地理位置结果将显示最近的 Cloudflare 服务器所在的位置,IP 地址将显示为 Cloudflare 的所有权。

上图描述了域前端的工作原理:

  1. C2 Operator有一个通过 Cloudflare 代理所有请求的域。
  2. 受害者向C2域发送信标。
  3. Cloudflare 代理请求,然后查看主机标头并将流量中继到正确的服务器。
  4. C2服务器随后使用 C2 命令响应 Cloudflare。
  5. 受害者随后收到来自 Cloudflare 的命令。

由于 HTTPS 请求已加密,因此可能无法提取特定标头(例如:X- C2 -Server 或主机)。通过使用 C2 配置文件,我们可以隐藏我们的 C2 服务器以防安全分析师窥探。有关 C2 配置文件如何强大的更多信息,请参阅这篇关于了解 Cobalt Strike 的可延展 C2 配置文件的博文。

通用 C2 框架

通用C2框架

在整个旅程中,您可能会遇到许多不同的C2框架;我们将讨论一些被红队和对手广泛使用的流行 C2 框架。我们将把它分成两部分:

  • 自由的
  • 付费

您可能会问一些问题,例如“我为什么要使用高级或付费C2框架?”,这是一个很好的问题。高级/付费 C2 框架通常不太可能被反病毒供应商检测到。这并不是说不可能被检测到,只是开源的C2项目一般都很好理解,并且可以很容易地开发签名。

通常,高级C2框架通常具有更高级的后开发模块、枢轴功能,甚至是开源软件开发人员有时可能无法满足的功能请求。例如,Cobalt Strike 提供的一项功能是大多数其他 C2 框架所不具备的,即能够从信标打开 VPN 隧道。如果代理在您的特定情况下不能很好地工作,这可能是一个很棒的功能。您必须进行研究以找出最适合您的团队的方法。

免费的c2框架

Metasploit

由 Rapid7 开发和维护的Metasploit Framework是最流行的利用和利用后利用框架 ( C2 ) 之一,它是公开可用的,并且安装在大多数渗透测试发行版上。

root@kali$ msfconsole

Armitage

Armitage 是 Metasploit 框架的扩展——它添加了一个图形用户界面并用 Java 编写,与 Cobalt Strike 非常相似。这是因为它们都是由 Raphael Mudge 开发的。Armitage 提供了一种简单的方法来枚举和可视化您的所有目标。除了看起来很像 Cobalt Strike,它甚至提供了一些独特的功能。最受欢迎的一种可以在“攻击”菜单中找到;此功能称为 Hail Mary 攻击,它会尝试对特定工作站上运行的服务运行所有攻击。Armitage 真的是“快速而简单的黑客”。

Powershell Empire/Starkiller

Powershell Empire和Starkiller是另一个非常受欢迎的C2,最初由 Veris Group 的 Harmjoy、Sixdub 和 Enigma0x3 创建。目前,该项目已经停止并被 BC 安全团队(Cx01N、Hubbl3 和 _Vinnybod)接管。Empire 的特点是使用多种语言编写的代理,与多种平台兼容,使其成为一个用途广泛的 C2。

Covenant

Ryan Cobb 的Covenant是我们将要介绍的最后一个免费C2框架——到目前为止,它是用 C# 编写的最独特的 C2 框架之一。与 Metasploit/Armitage 不同,它主要用于具有高度可定制代理的 HTTP、HTTPS 和 SMB 侦听器的后期开发和横向移动 。

Sliver

Bishop Fox的Sliver是一个高级的、高度可定制的多用户、基于 CLI 的C2框架。Sliver 是用 Go 语言编写的,这使得 C2“植入物”的逆向工程变得异常困难。它支持用于 C2 通信的各种协议,例如 WireGuard、mTLS、HTTP(S)、DNS 等等。此外,它还支持用于附加功能的 BOF 文件、用于屏蔽 C2 通信的 DNS 金丝雀域、用于 HTTPS 信标的自动 Let's Encrypt 证书生成等等。

付费C2框架

Cobalt Strike

Help Systems 的Cobalt Strike(以前由 Raphael Mudge 创建)可以说是仅次于 Metasploit 的最著名的命令和控制框架之一。与 Artimage 非常相似,它是用 Java 编写的,并且设计得尽可能灵活。

Brute Ratel

Chetan Nayak 或 Paranoid Ninja 的Brute Ratel是一个命令和控制框架,作为“可定制的命令和控制中心”或“C4”框架销售,它作为一个独特的 C2 框架提供真正的模拟对手体验。有

C2的操作基础

访问在本地侦听的远程C2服务器

通过 SSH 端口转发安全地访问您的C2服务器;如果您之前使用 SSH 进行端口转发,请随意跳过本节,您可能不会学到任何新东西。对于那些不熟悉的人,SSH 端口转发允许我们通过将本地端口转发到远程服务器来托管远程机器上的资源,或者允许我们访问我们正在连接的远程机器上的本地资源。在某些情况下,这可能是为了绕过防火墙。

或者,在我们的例子中,出于操作安全原因,可以这样做。

现在我们已经更好地理解了为什么我们想要 SSH 端口转发,让我们来看看如何做。

端口转发