HardHatC2 跨平台协作命令和控制框架 C2

HardHatC2 跨平台协作命令和控制框架 C2

HardHatC2 跨平台协作命令和控制框架 C2

HardHatC2 简介

HardHat 是一个基于 c# .NET 的多人命令和控制框架(C2)。
旨在帮助红队团队协作和进行渗透测试。
HardHat 旨在通过提供易于使用但仍然强大的 C2 框架来提高渗透测试期间的生活质量因素。
它包含三个主要组件,一个 ASP.NET teamserver,一个 blazor .NET 客户端和基于 c# 的植入程序。

内测版说明

⚠注意:HardHat 处于 Alpha 版本;它会有错误,缺少功能,并且会发生意想不到的事情。感谢您的尝试,请报告任何问题或缺少的功能,以便它们得到解决。

特征

HardHat 包含许多 C2 操作所需的功能。

团队服务器和客户端

  • 具有帐户层的每个操作员帐户允许自定义访问控制和功能,包括仅查看访客模式、团队领导 opsec 批准 (WIP) 和用于一般操作管理的管理员帐户。
  • 管理者(监听器)
  • 动态负载生成(Exe、Dll、shellcode、PowerShell 命令)
  • 在客户端中即时创建和编辑 C2 配置文件
  • 有效载荷生成的定制
    • 睡眠时间/抖动
    • kill date
    • 工作时间
    • 输入(Exe、Dll、Shellcode、ps 命令)
    • 包含的命令(WIP)
    • 运行混淆器的选项
  • 文件上传和下载
  • 图形化
  • 文件浏览器图形用户界面
  • 事件日志
  • 事件和任务的 JSON 日志记录
  • 战利品追踪(积分、下载)
  • IOC追踪
  • 核心代理(SOCKS 4a,端口转发)
  • 凭证商店
  • 自动完成命令历史
  • 详细帮助命令
  • 交互式 bash 终端命令,如果客户端在 linux 上或在 windows 上的 powershell,这允许自动解析和记录终端命令,如 proxychains
  • teamserver 项目的持久数据库存储(用户帐户、管理员、工程师、事件、任务、凭证、下载、上传等)
  • Recon Entity Tracking(跟踪有关用户/设备的信息,根据需要随机元数据)
  • 一些命令的共享文件(有关详细信息,请参阅 teamserver 页面)
  • 用于命令发布的基于选项卡的交互窗口
  • 某些命令(如 ls、ps 等)的基于表的输出选项。
  • 自动解析来自安全带的输出以创建“侦察实体”并填充条目以便稍后轻松参考
  • 黑暗与光明🤮主题

工程师

  • c# .net Windows框架植入设备,目前仅支持 CLR/.NET 4
  • atm 只有一个植入物,但希望添加其他
  • 它可以生成为 EXE、DLL、shellcode 或 PowerShell stager
  • 睡眠时负载内存和堆的 Rc4 加密(仅限 Exe / DLL)
  • 所有网络通讯的AES加密
  • ConfuserEx 混淆集成
  • HTTP、HTTPS、TCP、SMB 通信
    • TCP 和 SMB 可以在绑定或反向设置中工作 P2P
  • 编译时生成的每个植入密钥都是唯一的
  • 多个回调 URI 取决于 C2 配置文件
  • Windows API 调用的 P/Invoke 和 D/Invoke 集成
  • SOCKS 4a 支持
  • 反向端口转发和端口转发
  • 所有命令都作为异步可取消作业运行
    • 如果需要,可以选择运行命令同步
  • 内联汇编执行和内联 shellcode 执行
  • 动态链接库注入
  • 执行组装和 Mimikatz 集成
    • Mimikatz 并未内置于植入物中,而是在发出特定命令时被推送
  • 各种本地主机和网络枚举工具
  • 令牌操作命令
    • 窃取令牌掩码
  • 横向移动命令
    • 跳转(psexec、wmi、wmi-ps、winrm、dcom)
    • 远程执行 (WIP)
  • AMSI 和 ETW 补丁
  • 非托管 Powershell
    • 脚本存储(如果需要可以一次加载多个脚本)
  • 产生并注入
    • Spawn-to 是可配置的
  • 运行、shell和执行

架构截图

HardHatC2 跨平台协作命令和控制框架 C2

入门

设置和安装

先决条件

安装Microsoft 的

.net 7 SDK

安装后,团队服务器和客户端启动

dotnet run

团队服务器

  1. 要配置团队服务器的起始地址(客户端将连接到的地址),请编辑HardHatC2\TeamServer\Properties\LaunchSettings.json更改"applicationUrl": "https://127.0.0.1:5000" 到所需的位置和端口。
  2. 从其顶级文件夹启动团队服务器
dotnet run../HrdHatC2/Teamserver/
Teamserver


默认情况下,teamserver 允许任何 IP 尝试连接到它。建议将其限制在已知良好的 IP 范围内。编辑:应用设置.json在 teamserver 文件夹中,更改 "Whitelist": "*""Whitelist":"10.10.1.0/24"例如,仅允许该子网向 teamserver 发出请求。

⚠默认情况下,TeamServer JWT 签名密钥是硬编码的。它也在应用设置.json文件。编辑此值以帮助保护您的 JWT。

安全帽客户端

  1. 启动客户端以设置目标团队服务器位置时,例如将其包含在命令行中
  2. dotnet run https://127.0.0.1:5000
  3. 打开网络浏览器并导航到https://localhost:7096/如果可行,您应该会看到登录页面
  4. 使用 HardHat_Admin 用户登录
  5. 导航到设置页面并创建一个新用户,如果成功,将出现一条消息,然后您可以使用该帐户登录以访问完整客户端
HardHatC2 跨平台协作命令和控制框架 C2

操作者和认证

帐户创建

第一次启动时,TeamServer 会打印出 HardHat_Admin 账号密码。

创建一个帐户

  1. 登录到 HardHat_Admin 帐户
  2. 导航到设置页面
  3. 以 Operator 或 TeamLead 角色创建帐户
  4. 注销管理员帐户并进入新帐户

HardHat_Admin 的密码仅在团队服务器首次启动时打印,直到再次擦除数据库。确保将其保存在某处,因为在数据库擦除发生之前无法重置它。

HardHatC2 跨平台协作命令和控制框架 C2

操作员

HardHat 允许多个用户通过单个团队服务器连接和共享信息。每个操作员都会用命令行中ts的地址启动HardHat C2客户端进行连接。

连接后,新用户将能够登录。如果这是团队服务器和客户端的首次启动,则使用启动团队服务器时在控制台中打印出的 HardHat_Admin 密码登录。

密码经过唯一的加盐处理和哈希处理,因此即使是相同的两个密码在数据库中也会出现不同的情况。用户登录时仅存储加盐哈希密码。然后在每次登录时对提供的密码进行加盐和哈希处理,以与数据库中的密码进行比较。

HardHat 使用JSON Web 令牌 (JWT)在客户端和团队服务器之间进行身份验证,并在客户端中指示页面视图和访问权限。

每个用户必须有一个唯一的用户名。(用户名不区分大小写)

10 次重复失败的登录尝试将导致强制帐户锁定。如果发生这种情况,管理员用户帐户可以重新启用该帐户。

认证与授权

登录后,用户将自动对他们与之交互的任何页面或 API 端点执行身份验证。如果此交互失败,它将被记录下来。

JWT 存储在本地浏览器存储中,应避免要求在 28 天内多次登录,除非被清除或服务器重新启动。

如果有人在未经身份验证的情况下访问团队服务器,他们将无法与现有的 API 交互,除了从数据库中检索管理以开始允许在用户登录之前从现有植入程序签入的 API 之外。

如果有人访问客户端并试图在没有适当的 JWT 的情况下绕过登录页面,则整个 UI 将被隐藏,并且他们会看到一个将他们重定向到登录页面的弹出窗口。

HardHatC2 跨平台协作命令和控制框架 C2

团队服务器状态

团队服务器状态也显示在客户端的顶部。如果连接良好,它将显示一条绿色消息。否则,它将是橙色或红色。这不是 100% 万无一失的。始终信任但验证。

HardHatC2 跨平台协作命令和控制框架 C2

角色

  • Administrator– 这是一个内置帐户,可以为其他用户提供他们需要的角色并恢复锁定的帐户。admin用户还负责操作管理,如数据库重置、操作重置、日志清除等。
  • Team Lead– 此角色可以执行与操作员角色相同的所有操作,但具有额外的控制权。团队负责人还可以设置命令的 opsec 级别、设置阻止的命令、批准需要授权的命令以及控制操作详细信息页面 (WIP)。
  • Operator– 标准用户帐户模式,此用户可以与客户端/团队服务器交互以创建管理、工程师、发布命令、下载和上传文件以及执行所有其他正常的日常操作需求。
  • Guest– 这是一个只读帐户;他们可以看到一切,但不能与任何事物互动。这对于向正在跟踪的客户、第 3 方或新员工展示一些东西很有用。

权限分配

  • 权限是通过 HardHat 管理员帐户设置页面分配的。
  • 管理员帐户的密码在启动期间生成并显示在 teamserver 控制台上。用户名总是HardHat_Admin
HardHatC2 跨平台协作命令和控制框架 C2

管理者(监听器)

管理人员

管理器是一个监听器,它打开并等待工程师连接到它并发送数据。

管理器有几种形式,即 HTTP、HTTPS、SMB 和 TCP

HTTP 和 HTTPS 绑定到团队服务器上的一个端口,而 TCP 和 SMB 只通知生成的植入程序如何连接回来。

要创建管理,请选择主页上的生成管理按钮或访问导航窗口上的管理页面。

管理表

  • 在管理页面的顶部是一个表格,其中包含有关现有管理的信息
  • 显示:名称、类型、连接地址、连接端口、创建时间和活动状态
  • 可以通过最右侧的选项菜单禁用它
HardHatC2 跨平台协作命令和控制框架 C2

管理创建表格

  • 表格底部是管理创建表格。此表单允许用户填写有关他们想要创建的管理的一些关键信息。
  • 选项卡 1
    • 姓名
      • 管理的姓名必须是唯一的,并显示在植入元数据中
    • 管理类型
      • 设置要使用的通信协议。如果选择 HTTP/HTTPS,则选项卡二上的端口将在团队服务器上打开。
  • 选项卡 2 – 选项取决于所选的管理类型
    • HTTP / HTTPS
      • 连接地址
        • 与该管理进行的地址植入应该回调
      • 连接端口
        • 端口植入应该回调到,也是在ts上打开
      • C2简介
        • C2 配置文件请参阅下面的 C2 配置文件部分以了解详细信息
    • TCP
      • 连接地址 – 仅反向
        • 父工程师托管 TCP 连接以回调和连接的地址
      • 连接端口 – 仅反向
        • 父工程师承载 TCP 连接以回调和连接到的端口
      • 侦听端口 – 仅绑定
        • 打开并等待来自父工程师的传入 TCP 连接的端口。
      • 监听 LocalHost – 仅绑定
        • 一个布尔值。当为真时,植入程序只会为本地主机连接启动 TCP 服务器(例如,在特权升级中很有用)。当为 false 时,它​​将监听它可以监听的每个接口
      • 连接方式
        • 这决定了用这个manager生成的engineer是TCP server(bind),还是TCP client(reverse)
    • 中小型企业
      • 命名管道
        • 相反,这是要尝试连接的管道名称。在绑定中,这是创建和等待传入连接的命名管道
      • 连接地址 – 仅反向
        • 尝试连接到父工程师的地址
      • 连接方式
        • 这确定使用此管理器生成的工程师是 SMB 服务器(绑定)还是 SMB 客户端(反向)
HardHatC2 跨平台协作命令和控制框架 C2

C2 配置文件

HardHat atm 中的 C2 配置文件适用于 HTTP/HTTPS 管理/工程师。创建 HTTP/HTTPS 管理器时,您可以创建或编辑现有的 C2 配置文件以满足您的需要。C2 配置文件允许设置以下内容。

HardHatC2 跨平台协作命令和控制框架 C2
  • 姓名
    • C2 配置文件的名称仅用于跟踪。让它独一无二。
  • 描述
    • 同样只是为了让操作员对配置文件要模仿的内容有一些额外的注释或想法
  • 网址
    • 这是一个以逗号分隔的列表,就像 /index.html,/,/tacotuesday,/hardhat生成的植入程序将在回调期间循环遍历每个 URI,以尝试混合流量。
  • cookie
    • 填写请求的 cookie 头,可以是逗号分隔的列表
  • 请求标头
    • 默认 HTTP 标头已默认删除。标头是逗号分隔的列表。
    • ⚠注意:您必须在标头名称和标头值之间包含关键字。 VALUE这稍后会被剥离,但用于分解字符串。没有它,解析将失败。AcceptVALUEJson/Application,HostVALUEwww.hardhat.com
  • 响应头
    • 响应标头来自响应植入的 Teamserver 管理器。它们是逗号分隔的列表。服务器标头已从 teamserver 中删除,因此建议包含服务器响应标头。
    • ⚠注意:您必须在标头名称和标头值之间包含关键字。VALUE这稍后会被剥离,但用于分解字符串。没有它,解析将失败。ServerVALUEMicrosoft IIS,Cache-ControlVALUEprivate,max-age=0
    • ⚠这也意味着 ATM 标头的值中不能包含逗号。
  • 用户代理
    • 用于填写工程师请求的用户代理标头

C2 配置文件注意事项

其他 C2 框架中的许多其他常见 C2 配置文件选项,例如睡眠、抖动、杀戮日期、窃取令牌掩码、注入技术等,都是每个工程师或每个命令设置,因此可以根据需要自定义或更新它们与被迫经常制作新的 C2 配置文件相比。

工程师创作(植入物)

工程师

工程师是一种植入物,旨在部署在目标系统上以进行妥协后的利用、枚举和横向移动。

所有工程师有效载荷都是无阶段的,因为 PowerShell 命令下载整个托管植入程序并执行它。

可以通过客户端中的工程师页面跟踪和创建工程师,并通过交互页面进行交互。这允许有更大的专用空间与工程师进行交互。

目前,工程师们只针对 .net 4 x64,.net CORE 和其他一些植入类型正在开发中

工程师页面

工程师表

HardHatC2 跨平台协作命令和控制框架 C2

工程师表是操作员可以看到所有回电的现任和老工程师的地方。该表显示了植入物的一些通用元数据。

  • 完整性级别图标
    • 表格的最左端是一个计算机图标,根据 int 级别进行颜色编码。低 = 绿色,中 = 蓝色,高 = 橙色,红色 = 系统。
  • 外部地址
    • 这是网络流量进入团队服务器的地址,因此如果您使用重定向器,这应该与重定向器地址匹配。
  • 管理
    • 该工程师设置使用的管理器配置回调地址和 C2 配置文件。
  • 连接类型
    • 工程师类型(HTTP、HTTPS、TCP、SMB)
  • 地址
    • 植入物的内部地址
  • 主机名
    • 计算机名称
  • 用户名
    • 用户的完整用户名,包括域或主机名,具体取决于它是本地帐户还是域帐户
  • 过程
    • 工程师正在运行的进程的名称
  • PID
    • 当前运行进程的进程id
  • 正直
    • 植入物的当前完整性级别(SYSTEM、HIGH、MEDIUM、LOW)
  • Arch
    • 流程的架构
  • 睡觉时间
    • 当前睡眠时间设置
  • 最后一次露面
    • 自上次检查植入物以来已有多长时间
  • 选项菜单
    • 允许交互、删除、添加注释或使用特定颜色突出显示该行

工程师创建表格

HardHatC2 跨平台协作命令和控制框架 C2
  • 管理姓名
    • 一个下拉列表,用于选择您希望工程师基于的管理
  • 连接尝试
    • 如果在退出之前无法连接到团队服务器,工程师应该尝试的连接次数,例如,睡眠时间为 5 秒,并且 1000 次尝试将花费 5000 秒才能停止尝试重新连接。
  • 睡觉时间
    • 植入物应该休眠的秒数。如果需要,稍后可以使用 sleep 命令更改此设置。
  • 工作时间 –可选
    • 设置植入程序应在 UTC 时间戳中执行例行签到的时间,例如13:00:00-16:00:00UTC 意味着植入程序只会在这些时间签到,一旦命中,16:00:01它将休眠到13:00:00第二天。 ⚠注意不要将其设置为像 EST 这样的本地时区,因为它是根据 UTC 计算的,这将导致植入程序在与您预期的时间不同的时间停止。
  • 编译类型
    • 这是工程师的输出格式(EXE、Service EXE、DLL、SHELLCODE、PS Command)
    • ps 命令编译选项将填充powershell commnad 表格底部的框。它还将包含命令的 ps1 文件上传到 teamserver Web 服务器根文件夹。请参阅上传文件部分以获取有关访问它的信息以及到团队服务器上主 HardHatC2 文件夹的副本。这包含一个要运行的命令,该命令将从团队服务器下载托管的 ps 文件并运行它。这不是舞台表演者。下载并执行整个工程师字节数组。

工程师编译

工程师在团队服务器上动态编译,从创建表单中获取信息,并使用 Roslyn .NET 编译器构建。然后,所有需要的 DLL 都默认合并到程序集中(FastJSON),使用 ilrepacking 创建最终的植入文件。

编译后,工程师将保存在团队服务器上的主要 HardHatC2 文件夹中,以供任何团队成员快速访问。默认情况下,名称是Engineer_Managername这样一个名为 demo 的管理器的工程师 EXE 将具有文件名 Engineer_Demo.exe

shellcode 选项使用 Donut 将 EXE 转换为 shellcode。然后 shellcode 也被传递给sgn以获得编码版本。笔记:

⚠目前,HardHat 使用 Donut 1.0 的标准版本,它将在最终的 shellcode 中包含一些指标。

图形视图

图形视图

可以在客户端的“工程师”页面下访问图表视图。这将为表中的每个工程师加载一个节点。如果您只想显示活跃的工程师,请确保使用工程师表主选项卡上的切换。

  • 视图的最左侧是具有当前 ts 地址的 teamserver。与此相关的是当前查看的每个植入物。植入物将包含一个彩色图标、一个交互按钮以及底部的一些信息,其中包含主机名、用户名和 pid@address 信息。
  • 计算机图标的颜色有以下含义:
    • 灰色:离线
    • 绿色:低完整性
    • 蓝色:中等完整性
    • 黄色/橙色:高完整性
    • 红色:系统完整
  • 节点也有显示连接方向和类型的箭头。如果箭头指向 teamserver,则为反向连接(所有 HTTP/HTTPS),如果箭头指向远离 ts/parent 节点,则为绑定连接。颜色显示类型。
    • 绿色:HTTP/HTTPS
    • 红色:TCP
    • 蓝色:SMB
  • 操作员可以缩放、平移、拖动甚至删除节点。由于每个用户都有自己的图表,这不会影响其他人的视图,因此可以根据需要随意删除和移动它们。
  • 的⚠有时节点会开始堆叠在一起,将它们隔开的逻辑是自定义编写的,虽然可以,但并不完美。
HardHatC2 跨平台协作命令和控制框架 C2
一个 HTTP 植入程序的图形视图,具有到离线 TCP 植入程序的绑定连接

已知错误

⚠图形视图确实包含一个错误,有时当项目失去焦点并且用户缩放时,这会破坏视图。

script.js and script.min.js我在名为 的客户端文件夹中包含了 Blazor.Diagrams 文件的固定副本GraphViewFix。获取这些文件,找到 NuGet 包下载,如果这对您来说是个问题,则覆盖脚本文件。

互动页面

如何互动

要开始与工程师互动,请访问工程师页面,然后从右侧的选项下拉列表中选择互动

HardHatC2 跨平台协作命令和控制框架 C2

这将加载交互页面,当前选项卡是交互的工程师。您开始与之交互的每个工程师都会打开一个选项卡。如果您关闭了一个选项卡,您可以通过与植入物交互来重新打开它。

所有命令都从团队服务器发送到所有客户端,因此当您开始与植入物交互时,如果它有以前的命令,它们将被填充。

HardHatC2 跨平台协作命令和控制框架 C2

每个选项卡的底部是命令窗口,您可以在其中输入命令,客户端具有自动完成功能和帮助菜单。

下面是工程师元数据。由于工程师表位于工程师页面上,因此在此处复制表条目以帮助跟踪工程师所需的元数据。

了解命令

命令的结构方式在 HardHat 中有点独特。 例如,一个典型的命令结构如下CommandName /Key VALUE /Key VALUE .... Inlineassembly /file c:\rubeus.exe /args createnetonly /program:"C:\Windows\System32\cmd.exe" /show /username:USERNAME /domain:DOMAIN /password:PASSWORD

HardHatC2 跨平台协作命令和控制框架 C2

HardHat 客户端程序跟踪所有命令及其相应的键。这意味着如果提供了不存在的命令,它将拒绝输入。它还将验证提供的密钥并在缺少所需密钥时给出错误,例如/file来自 cat 命令。

在任何时候,您都可以运行帮助命令来查看可用的键或使用自动完成功能,它会添加所有可能的键,然后您可以删除不想包含在命令中的键。自动填充时,必填键的值为Value,可选键的值为optionalValue

HardHatC2 跨平台协作命令和控制框架 C2

命令也不区分大小写,因此InLiNeAsSeMbLy inlineAssembly are 有效

HardHatC2 跨平台协作命令和控制框架 C2

任务

一旦命令被发送到团队服务器,它就变成了由工程师运行的任务,除了帮助的情况,这是操作员客户端本地的。

除非提供标志,否则所有命令都作为异步作业执行/method sync,请确保在要按顺序运行的所有命令上提供它。

注意:同步方法执行是一个阻塞动作

在执行期间,可以通过 UI 取消任何命令。在执行过程中,客户端将有一个

❌向植入程序发送取消命令请求的图标。虽然可以取消任何命令,但这实际上只会影响运行时间较长的任务,例如 InlineAssembly

帮助命令

help 命令仅在您的本地客户端上运行,不会复制到其他客户端。此命令为您提供可搜索的表输出,其中包含有关命令、设置的操作级别、Mitre ATT&CK 映射、密钥等的信息。所以不要担心;您可以在不烦扰队友的情况下运行它。

文件浏览器

GUI 文件浏览器

  • 第二个选项卡位于“交互”页面上,是文件浏览器。文件浏览器允许操作员搜索文件系统,而不必总是自己发出 ls 命令。
HardHatC2 跨平台协作命令和控制框架 C2

浏览器中的每个选项卡都针对每个主机

操作员从下拉菜单中选择将进行浏览的植入程序

  • 下拉列表显示主机名、用户名、pid、地址、完整性和睡眠时间

用户可以选择过滤列表以仅在当前机器上植入,并从列表中显示或隐藏离线植入

操作员可以选择在 ls 命令期间包含项目计数和 ACL 信息

  • file count 将获取所列文件夹内所有文件夹中的项目数,例如, ls C:\ /getCount true可能显示C:\Users\其中有 5 个项目,而C:\Empty有 0 个,即C:\noAccess-1,这意味着我们当前用户无法访问它。
  • ⚠ACL信息收集不完善;通常,当从medium int(非管理员)执行时,植入异常会被抛出,因为这些用户通常无权随意枚举 ACL 信息。这可能会导致返回的数据出现问题。

要浏览,只需确保在下拉列表中选择植入物,选择所需的收集选项,然后单击浏览器侧栏中的文件夹,或在侧栏中输入路径,ls 命令将填充到交互中植入物的窗口,以便以后可以参考,并被其他人跟踪。

正常的 ls 命令也会填充文件浏览器供以后查看。

所有文件浏览器数据都跨客户端复制并保存在团队服务器中,因此当其他人浏览到某个位置时,每个人的浏览器都会更新,如果关闭了一个选项卡,则在主机上打开另一个选项卡将从您离开的地方继续。

  • 在文件浏览器侧边栏上,带有打开图标(金色边框,但深色中心)的文件夹是您浏览过并查看过其中数据的文件夹。那些带有关闭图标但金色的图标具有来自其他用户或发出的 ls 命令的数据,并且具有等待查看的数据。

目录

HardHatC2 跨平台协作命令和控制框架 C2

文件浏览器使用与 ls 命令相同的显示表。可以搜索、排序和过滤此表。它包含文件类型、文件名、大小、所有者、项目计数、重要日期和 ACL 信息的图标。

它分为多个页面以便于查看,默认情况下,每页最多 10 个项目。

客户端交互终端

互动终端

HardHatC2 跨平台协作命令和控制框架 C2

交互式终端是操作员执行终端命令并由 C2 对其进行时间戳、处理和记录的一种方式

终端与 C2 客户端应用程序在同一台机器上运行

在 Windows 上,它会启动 PowerShell。在 Linux 上,它启动 bash

操作员可以根据需要创建任意数量的终端窗口,这在需要多个终端进行中继攻击时非常有用

同时数据在所有客户端之间复制,允许其他操作员轻松查看代理命令和工具。用户不能向其他用户的终端发送命令

当与反向端口转发或 socks 结合时,这允许 C2 记录诸如代理命令之类的事情。它允许更详细地记录这些命令,例如 impacket 的代理链。

终端是持久的和交互式的。因此命令可以引用变量或导出项,例如导出的 TGT

侦察中心

侦察中心

  • 侦察中心允许操作员在操作期间对项目的任意元数据进行跟踪。
  • 侦察中心拥有“实体”,而实体只是具有名称和描述的任何东西,例如,用户、主机、域、防火墙或其他任何东西
  • 操作员可以随时创建实体,然后向其添加属性。属性只是一个带有名称、值和可选注释的项目。例如,这可能是用户的 Kerberos 票证、密码、主机的 IP 地址信息,或者您想要保存的任何内容。
  • 所有实体和属性都被复制到每个客户端,以便轻松共享元数据/注释。
HardHatC2 跨平台协作命令和控制框架 C2
侦察中心宿主实体的 SS
HardHatC2 跨平台协作命令和控制框架 C2
SS 显示数据可以是用户想要保存的任何内容

安全带集成

  • 虽然仍处于流程的早期阶段,侦察中心可以解析 Seatbelt 的输出,自动创建实体和属性,例如,以下屏幕截图显示了一个 corp\vin 用户,该用户具有来自 Seatbelt 的两个令牌组属性,正在域中的两台不同机器上运行.
HardHatC2 跨平台协作命令和控制框架 C2

IOCs(侵害指标)跟踪

IOCs(侵害指标)跟踪

侦察中心页面还具有 IOC 跟踪选项卡。

目前,此页面跟踪上传到目标的文件。该表是可排序和可搜索的

这包括

  • 文件名
  • 目标主机
  • 完整上传路径
  • 上传时间
  • MD5哈希
HardHatC2 跨平台协作命令和控制框架 C2

Opsec 和 MITRE 跟踪

工具箱页面

  • 工具箱页面允许 TeamLead 用户设置命令的 Opsec 状态。
  • 选项是
    • 低的
    • 缓和
    • 高的
    • 需要授权
    • 封锁
  • RequiresLeadAuthorization 尚未实现,但一旦实现,当操作员运行具有此 opsec 级别的命令需要 TeamLead 用户批准命令使用时,它将导致弹出窗口。
  • 该页面还尝试提供有关植入物内置命令的可能 Mitre ATT&CK 映射的信息
HardHatC2 跨平台协作命令和控制框架 C2

枢轴代理

枢轴代理

  • 此页面提供有关当前在植入物上运行的socks和反向端口转发的信息。
  • 它提供
    • 植入物编号
    • 绑定端口 – 设置连接的植入机器/团队服务器上的端口
    • Fwd host – 转发的目标,或者 socks 客户端所在的机器 IP
    • fwd port – 数据的目标端口(仅适用于端口转发)
    • 枢轴类型 – socks或端口向前
    • 枢轴方向 – 数据流
HardHatC2 跨平台协作命令和控制框架 C2

socks和端口转发作为来自交互页面的命令启动

事件历史

事件历史页面

事件历史页面跟踪 C2 记录的事件。它是彩色的,带有时间戳,方向设置也可以更改。

HardHatC2 跨平台协作命令和控制框架 C2
  • 它将跟踪各种事物,例如
  • 新种植体检查
  • 发出命令
  • 命令成功或错误状态
  • 团队服务器上的错误
  • 创建管理和工程师
  • 创建枢轴
  • 保存的积分
  • ETC。

JSON 记录

记录

操作期间采取的操作记录到两组日志文件中。第一个文件跟踪 C2 上的事件,例如新植入物签入、各种元数据的创建、错误等。第二个文件跟踪命令和输出。这包括通过客户端上的交互式终端发出的命令。

这些文件位于日志文件夹下的团队服务器上。

所有带时间戳的事件均采用 UTC。

JSON 是行分隔的。将它发送到像 jq 这样的程序会得到一个漂亮的打印

凭证商店

凭证页

C2 凭证页面允许用户跟踪在操作过程中发现的凭证。

  • 用户可以输入凭证
  • 用户也可以编辑已经提交的凭证。
  • Creds 也从 Mimikatz 和 Rubeus 命令中解析出来。这并不完美,所以一定要确保你仔细检查重要的凭证是否被保存
  • 提交新的凭证时,用户需要提供
    • 用户名
    • 域 – 可选
    • 凭证值
    • 类型
      • hash
      • 票据
      • 密码
HardHatC2 跨平台协作命令和控制框架 C2


⚠已知错误:有时 cred store 会将相同的 cred 加载到表中两次

下载

下载页面

  • 下载页面跟踪下载到团队服务器的所有文件
  • 然后操作员可以选择文件并单击保存将它们保存到本地客户端
  • 页面跟踪一些重要的元数据
    • 姓名
    • 主持人
    • 原始路径
    • 保存位置
    • 下载时间
HardHatC2 跨平台协作命令和控制框架 C2

托管文件

托管文件页面

  • 操作员可以托管文件以供植入程序下载
  • 注意:目前,没有对谁可以下载托管文件执行过滤
  • 文件托管在任何活动管理器的端口,例如,监听端口 8080 的管理器,用户将浏览以teamserverIP:8080\fileName下载目标文件
HardHatC2 跨平台协作命令和控制框架 C2

设置页面

  • 目前设置页面仅用于切换深色/浅色主题

指导文档

https://docs.hardhat-c2.net/

下载地址

①GitHub:

github.com/DragoQCC/HardHatC2/v0.1.1-Alpha.zip

②云中转网盘:

yunzhongzhuan.com/#sharefile=16nu6kTW_159210

解压密码:www.ddosi.org

项目地址

GitHub:
https://github.com/DragoQCC/HardHatC2

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注