Covenant C2 comble le vide laissé par Empire PowerShell
Jan 27, 2023
Les outils de post-exploitation sont utilisés par les acteurs de la menace pour se déplacer latéralement à l'intérieur d'un réseau et élever leurs privilèges afin de voler des données, déclencher des malwares, créer des portes dérobées et plus encore. Les équipes rouges et les hackers éthiques utilisent également ces outils ; en effet, simuler les efforts des adversaires joue un rôle clé dans la mise en œuvre de contrôles efficaces pour sécuriser les systèmes, les applications et les fichiers.
Jusqu'à récemment, l'un des cadres de post-exploitation les plus largement utilisés était PowerShell Empire (PSEmpire). Il permettait aux adversaires d'utiliser des agents PowerShell et Python pour déployer des éléments malveillants, allant des enregistreurs de frappe à mimikatz, dans des environnements Windows, Linux et macOS tout en échappant à la détection. Cependant, en 2019, la page du projet Empire GitHub a annoncé que PowerShell Empire n'était plus pris en charge. Cela était probablement dû au fait que les outils de détection et de réponse aux points de terminaison (EDR) sont devenus plus efficaces pour détecter l'utilisation malveillante de PowerShell.
En conséquence, de nombreux attaquants et professionnels de la cybersécurité ont adopté des cadres de commande et de contrôle (C2) open source de nouvelle génération. Cet article explore l'un de ces outils de post-exploitation : Covenant C2.
À propos de Covenant C2
Covenant C2 est un cadre de commande et de contrôle (C&C) qui facilite l'exploitation des applications web et de leurs environnements réseau associés. Ce cadre open source hautement évolutif est disponible sur GitHub. Il se met en place en quelques minutes, même pour ceux ayant une expérience minimale des cadres C2, et offre une interface web intuitive (voir Figure 1) qui simplifie l'ajout de nouveaux agents, sources de données et intégrations, ainsi que l'extraction de données et de justificatifs d'identité.
Figure 1. Tableau de bord Covenant (source : GitHub)
Architecture
Covenant est construit sur une architecture hautement évolutive écrite en C# qui permet aux développeurs de construire facilement des intégrations avec le cadre. Il prend en charge plusieurs profils d'utilisateurs avec authentification et utilise des bases de données légères et fiables telles que SQLLite et PostgreSQL. Son support multi-plateforme inclut Windows, macOS et des distributions Linux telles que Kali.
Le serveur Covenant exécute une fonctionnalité de commandement et de contrôle, permettant aux utilisateurs de travailler en collaboration les uns avec les autres. Il utilise des grunts — des agents qui se comportent beaucoup comme les soldats de base dans l'ancienne guerre qui étaient utilisés comme chair à canon. Ces grunts communiquent avec le serveur Covenant pendant qu'ils exécutent leurs tâches assignées et évitent d'être détectés.
Mise en œuvre de Covenant
Un serveur Covenant peut être opérationnel en quelques minutes. Sur Windows, la seule condition préalable est le .NET Core SDK. Pour construire et démarrer l'application Covenant ASP .NET Core, exécutez simplement les commandes suivantes :
git clone --recurse-submodules https://github.com/cobbr/Covenant
cd Covenant/Covenant
dotnet build
dotnet run
Alternativement, vous pouvez utiliser un Docker container.
Ensuite, naviguez vers la machine localhost en utilisant le port 7443, et vous pouvez commencer à utiliser l'interface utilisateur Covenant avec votre navigateur préféré.
Utilisation de Covenant
La première tâche consiste à mettre en place un écouteur, comme détaillé ici. Ensuite, créez un payload pour déployer vos grunts sur des machines distantes où ils établiront des communications avec le serveur Covenant.
Ensuite, vous pouvez utiliser les pages suivantes dans l'interface utilisateur de Covenant pour créer, exécuter et examiner les tâches.
Page des Grunts
Utilisez la page Grunts pour examiner vos grunts et les faire exécuter des tâches.
Figure 2. Page de détail de Grunt (source : GitHub)
Exemple : Déploiement de mimikatz
Par exemple, la vidéo ci-dessous illustre comment utiliser un Grunt pour déployer mimikatz :
Figure 3. Utilisation d'un grunt pour déployer mimikatz
Vous pouvez examiner le résultat de la tâche exécutée en utilisant l'interface du navigateur.
Figure 4. Examen du résultat d'une tâche effectuée par un subalterne
Page des tâches
La page Tasks page fournit une liste triable et recherchable de toutes les tâches disponibles que vous pouvez assigner à vos Grunts.
Figure 5. Page des tâches
Page des tâches
La page des tâches affiche les tâches que vous avez assignées aux grunts et leur statut.
Figure 6. Page des tâches
Page de données
Le but des tâches est de capturer des données, qui sont résumées sur la Data Page. L'onglet Indicateurs fournit une piste d'audit de l'activité, que vous pouvez transmettre à votre équipe bleue pour renforcer leurs efforts de sécurité.
Figure 7. Page de données
Conclusion
Covenant C2 est un excellent exemple de la manière dont les projets open-source C2 de post-exploitation ont repris le flambeau de PowerShell Empire pour renforcer les équipes rouges. Il comprend de nombreuses fonctionnalités impressionnantes qui le rendent idéal pour les efforts de piratage éthique collaboratifs. Il existe de nombreuses ressources de qualité sur le Covenant GitHub pour vous aider à démarrer. Si le cadre Covenant vous est nouveau, il est temps de le découvrir.
Partager sur
En savoir plus
À propos de l'auteur
Joe Dibley
Chercheur en sécurité
Chercheur en sécurité chez Netwrix et membre de l'équipe de recherche en sécurité de Netwrix. Joe est un expert en Active Directory, Windows et une grande variété de plateformes logicielles d'entreprise et de technologies, Joe étudie les nouveaux risques de sécurité, les techniques d'attaque complexes, ainsi que les atténuations et détections associées.
En savoir plus sur ce sujet
Exemple d'analyse des risques : Comment évaluer les risques
Le Triangle CIA et son application dans le monde réel
Créez des utilisateurs AD en masse et envoyez leurs identifiants par e-mail à l'aide de PowerShell
Comment ajouter et supprimer des groupes AD et des objets dans des groupes avec PowerShell
Attributs Active Directory : Dernière connexion