一个C#命令与控制框架
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/DragoQCC/HardHatC2
HardHat C2
一个跨平台的、协作的、基于C#编写的命令与控制框架,旨在为红队行动和渗透测试提供便利和易用性。

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的输出,创建“侦察实体”并填充条目以便稍后轻松地引用
- 暗黑和明亮主题。


工程师
- 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

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