
Covenantは、.NETの攻撃面を明らかにし、攻撃的な.NETのトレードクラフトの利用を容易にし、レッドチーム向けの共同指揮統制プラットフォームとして機能することを目的とした、.NETベースのコマンド&コントロールフレームワークです。
CovenantはASP.NET Core製のクロスプラットフォームアプリケーションで、Webベースのインターフェースを通じてマルチユーザーでのコラボレーションを可能にします。

クイックスタートガイド
Covenantを使い始めるには、インストールと起動ガイドをご覧ください!
Wikiには、Covenantの主要機能とその使い方のほとんどが記載されています。
機能
Covenantには、他のコマンド&コントロールフレームワークとは一線を画す、いくつかの主要な機能があります。
- 直感的なインターフェース - Covenantは直感的なWebアプリケーションを提供し、共同レッドチーム作戦を簡単に実行できます。
- マルチプラットフォーム - Covenantは.NET Coreをターゲットとしており、マルチプラットフォームに対応しています。これにより、Linux、macOS、Windowsプラットフォームでネイティブに動作します。さらに、Dockerもサポートしており、Dockerがインストールされている任意のシステム上のコンテナ内で実行できます。
- マルチユーザー - Covenantはマルチユーザーコラボレーションをサポートします。コラボレーション能力は、効果的なレッドチーム作戦に不可欠です。複数のユーザーが同じCovenantサーバーとやり取りし、独立して、または協力して操作できます。
- API駆動 - CovenantはAPIによって駆動され、マルチユーザーコラボレーションを可能にし、簡単に拡張できます。さらに、CovenantにはSwagger UIが含まれており、開発とデバッグをより簡単かつ便利にします。
- リスナープロファイル - Covenantはリスナーの「プロファイル」をサポートしており、GruntインプラントとCovenantリスナー間のネットワーク通信がワイヤ上でどのように見えるかを制御します。
- 暗号化鍵交換 - Covenantは、帝国プロジェクトの同様の交換に大きく基づいた、GruntインプラントとCovenantリスナー間の暗号化鍵交換を実装しています。さらに、オプションのSSL暗号化もサポートしています。これにより、Gruntインプラント間の前方秘匿性という暗号特性が実現されます。
- 動的コンパイル - Covenantは動的C#コンパイルにRoslyn APIを使用しています。新しいGruntが生成されるか、新しいタスクが割り当てられるたびに、関連コードが再コンパイルされ、ConfuserExで難読化されます。これにより、完全に静的なペイロードを回避します。Covenantは、以前の投稿で詳しく説明したSharpGenプロジェクトからコンパイルコードの多くを再利用しています。
- インラインC#実行 - CovenantはSharpGenプロジェクトとSharpShellプロジェクトの両方からコードとアイデアを借用し、オペレーターがGruntインプラント上でC#のワンライナーを実行できるようにします。これにより、SharpShellの投稿で説明されている機能と同様の機能が可能になりますが、ワンライナーをリモートインプラント上で実行できます。
- インジケーターの追跡 - Covenantは運用全体の「インジケーター」を追跡し、[インジケーター]メニューにまとめて表示します。これにより、オペレーターは運用全体で追跡されるアクションを実行し、混乱防止および教育目的のために、評価中または評価終了時にそれらのアクションをブルーチームに簡単に要約できます。この機能はまだ初期段階であり、改善の余地があります。
- C#で開発 - 個人的に、私はC#での開発を楽しんでいます。これは、私の最近のブログやツールを読んだ方にとっては驚きではないかもしれません。誰もがC#での開発が理想的だとは思わないかもしれませんが、フレームワークのすべてのコンポーネントが同じ言語で書かれているのは素晴らしいことだと誰もが同意してくれることを願っています。サーバー、クライアント、インプラントをすべて同じ言語で記述できるのは非常に便利だと感じています。これは真の「機能」ではないかもしれませんが、他の人がこのプロジェクトに比較的簡単に貢献できるようになることを願っています。
質問と議論
Covenantについて質問がある場合や、さらにチャットしたい場合は、BloodHound Gang Slack の #Covenant チャンネルに参加してください。