一个C#命令与控制框架

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/DragoQCC/HardHatC2

HardHat C2

一个跨平台的、协作的、基于C#编写的命令与控制框架,旨在为红队行动和渗透测试提供便利和易用性。

 

ad1a1b7183172522

 

HardHat是一个基于多人联机的 c# .NET命令与控制框架,旨在辅助红队行动和渗透测试。它通过提供易于使用但仍然健壮的C2框架来改善红队行动中的生活质量因素。它包含三个主要组件,即ASP.NET团队服务器、Blazor .NET客户端和基于c#的植入物。

版本更新跟踪

Alpha Release - 3/29/23 注意:HardHat处于Alpha版发布状态,可能会有错误、缺失功能和意外情况发生。感谢您尝试使用,请报告任何问题或缺失的功能,以便我们解决。

社区

Discord 加入社区,讨论 HardHat C2、编程、红队行动和一般的网络安全事项。Discord社区也是请求帮助、提交新特性、了解最新内容并提交漏洞的好方法。

#功能

团队服务器&客户端

  • 每个操作员账户具有账户层级,允许定制访问控制和功能,包括只读访客模式、团队领导操作安全批准(WIP)以及管理员账户用于一般操作管理。
  • 管理员(监听器)
  • 动态载荷生成(Exe、Dll、Shellcode、PowerShell命令)
  • 客户端内部即时创建和编辑C2档案
  • 载荷生成的自定义设置
    • 睡眠时间/抖动
    • 停止日期
    • 工作时间
    • 类型(Exe、Dll、Shellcode、ps命令)
    • 包含的命令(WIP)
    • 运行混淆器的选项
  • 文件上传和下载
  • 图形视图
  • 文件浏览器GUI
  • 事件日志
  • JSON记录事件和任务
  • 战利品追踪(凭证、下载)
  • IOC跟踪
  • Pivot代理(SOCKS 4a、端口转发)
  • 凭证库
  • 自动完成命令历史记录
  • 详细的help命令
  • 如果客户端在Linux上,则为交互式bash终端命令,如果在Windows上,则为Powershell。这允许自动解析和记录像proxychains这样的终端命令。
  • 团队服务器项目的持久化数据库存储(用户帐户、管理器、工程师、事件、任务、凭证、下载、上传等)
  • 侦察实体跟踪(跟踪关于用户/设备的信息,需要随机元数据)
  • 一些命令的共享文件(请参见团队服务器页面了解详情)
  • 基于选项卡的交互式窗口以发出命令
  • 对于某些命令(如ls、ps等),表格输出选项
  • 自动解析seatbelt的输出,创建“侦察实体”并填充条目以便稍后轻松地引用
  • 暗黑和明亮主题。

 

ad1a1b7183172534

 

ad1a1b7183172551

工程师

  • c# .net框架植入到windows设备,目前只支持CLR/.NET 4
  • 目前只有一个植入程序,但正在考虑添加其他程序
  • 可以生成为EXE、DLL、shellcode或PowerShell加载器
  • 当睡眠时对有效载荷内存和堆进行RC4加密(仅限Exe/DLL)
  • 对所有网络通信使用AES加密
  • 集成ConfuserEx进行混淆
  • HTTP、HTTPS、TCP、SMB通信
    • TCP和SMB可以在绑定或反向设置中P2P工作
  • 在编译时生成的每个植入秘钥都是唯一的
  • 根据C2配置文件的不同,有多个回调URI
  • 集成P/Invoke和D/Invoke进行Windows API调用
  • 支持SOCKS 4a
  • 反向端口转发和端口转发
  • 所有命令均作为异步可取消任务运行
    • 如果需要,可以选择同步运行命令
  • 内联汇编执行和内联shellcode执行
  • DLL注入
  • 执行程序集和Mimikatz集成
  • Mimikatz未内置到植入程序中,而是在特定命令下推送
  • 各种本地主机和网络枚举工具
  • 令牌操作命令
    • 窃取令牌掩码(WIP)
  • 横向移动命令
  • 跳转(psexec、wmi、wmi-ps、winrm、dcom)
  • 远程执行(WIP)
  • AMSI和ETW打补丁
  • 非托管PowerShell
  • 脚本存储(如果需要,可以一次加载多个脚本)
  • 产生并注入
    • 可配置生成到哪里
  • 运行、shell和execute

 

ad1a1b7183180917

文档

文档可在docs找到。

开始

先决条件

  • 安装来自Microsoft的.net 7 SDK
  • 安装完成后,使用"dotnet run"启动teamserver和客户端。

Teamserver

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

HardHat客户端

  1. 在启动客户端时,将目标teamserver位置包含在命令行中,例如:dotnet run https://127.0.0.1:5000
  2. 打开Web浏览器并导航到 https://localhost:7096/。 如果这个网址工作正常,则应该看到登录页面
  3. 使用HardHat_Admin用户登录(密码在第一次TeamServer启动时打印)
  4. 导航到设置页面并创建一个新用户。如果成果,将出现一条消息,然后您可以使用该帐户登录来访问完整的客户端。

标签:工具分享, C2框架