
Covenant 是一个 .NET 命令与控制框架,旨在突出 .NET 的攻击面,使攻击性 .NET 技术的使用更加容易,并作为红队成员的协作型命令与控制平台。
Covenant 是一个基于 ASP.NET Core 的跨平台应用程序,包含一个支持多用户协作的 Web 界面。

快速入门指南
请参阅 安装与启动 指南开始使用 Covenant!
Wiki 文档涵盖了 Covenant 的大部分核心功能及其使用方法。
功能特性
Covenant 拥有若干关键功能,使其有用并区别于其他命令与控制框架:
- 直观的界面 - Covenant 提供了一个直观的 Web 应用程序,可轻松运行协作式红队行动。
- 跨平台 - Covenant 基于 .NET Core,支持跨平台。这使得 Covenant 可以在 Linux、MacOS 和 Windows 平台上原生运行。此外,Covenant 支持 Docker,可在安装了 Docker 的任何系统中于容器内运行。
- 多用户 - Covenant 支持多用户协作。协作能力对于有效的红队行动已变得至关重要。多名用户可以同时与同一个 Covenant 服务器交互,独立或协作地操作。
- API 驱动 - Covenant 由 API 驱动,支持多用户协作且易于扩展。此外,Covenant 包含 Swagger UI,使开发和调试更加便捷。
- 监听器配置文件 - Covenant 支持监听器“配置文件”,用于控制 Grunt 植入体与 Covenant 监听器之间的网络通信在网络上呈现的形态。
- 加密密钥交换 - Covenant 在 Grunt 植入体与 Covenant 监听器之间实现了加密密钥交换,该交换在很大程度上基于 Empire 项目中的类似交换机制,此外还可选 SSL 加密。这实现了 Grunt 植入体之间的前向保密性加密属性。
- 动态编译 - Covenant 使用 Roslyn API 进行动态 C# 编译。每次生成新的 Grunt 或分配新任务时,相关代码都会重新编译并使用 ConfuserEx 进行混淆,从而避免完全静态的有效负载。Covenant 大量复用了 SharpGen 项目中的编译代码,我之前的一篇文章对此有更详细的描述。
- 内联 C# 执行 - Covenant 借鉴了 SharpGen 和 SharpShell 项目的代码和思路,允许操作员在 Grunt 植入体上执行 C# 单行代码。这提供了类似 SharpShell 文章中描述的功能,但允许在远程植入体上执行单行代码。
- 追踪指标 - Covenant 在整个行动中追踪“指标”,并在指标菜单中汇总。这使得操作员能够执行被全程追踪的操作,并在评估期间或结束时轻松地向蓝队总结这些操作,用于化解冲突和教育目的。该功能仍处于初期阶段,仍有改进空间。
- 使用 C# 开发 - 就个人而言,我喜欢用 C# 开发,这对于读过我最新博客或工具的人来说可能并不意外。并非所有人都认同 C# 是理想的开发语言,但希望所有人都认同框架的所有组件用同一种语言编写是件好事。我发现用同一种语言编写服务器、客户端和植入体非常方便。这可能算不上一个真正的“功能”,但希望它能让他人较为容易地参与项目贡献。
问题与讨论
有问题或想进一步讨论 Covenant?加入 BloodHound Gang Slack 的 #Covenant 频道。