Covenant C2 füllt die Lücke, die von Empire PowerShell hinterlassen wurde
Jan 27, 2023
Post-Exploitation-Tools werden von Bedrohungsakteuren verwendet, um sich seitlich in einem Netzwerk zu bewegen und ihre Privilegien zu eskalieren, um Daten zu stehlen, Malware freizusetzen, Backdoors zu erstellen und mehr. Rote Teams und ethische Hacker nutzen diese Tools ebenfalls; tatsächlich spielt die Simulation der Bemühungen von Gegnern eine Schlüsselrolle bei der Implementierung effektiver Kontrollen zur Sicherung von Systemen, Anwendungen und Dateien.
Bis vor kurzem war eines der am weitesten verbreiteten Post-Exploitation-Frameworks PowerShell Empire (PSEmpire). Es ermöglichte Angreifern, PowerShell- und Python-Agenten zu verwenden, um schädliche Elemente von Keyloggern bis hin zu mimikatz in Windows-, Linux- und macOS-Umgebungen einzusetzen, während sie der Erkennung entgingen. Jedoch wurde 2019 auf der Empire GitHub Projektseite veröffentlicht, dass PowerShell Empire nicht länger unterstützt wird. Dies war wahrscheinlich auf die Tatsache zurückzuführen, dass Endpoint Detection and Response (EDR)-Tools immer effektiver darin wurden, bösartige PowerShell-Nutzung zu erkennen.
Dementsprechend sind viele Angreifer und Cybersicherheitsprofis gleichermaßen zu Next-Generation Open-Source-C2-Frameworks übergegangen. Dieser Artikel untersucht eines dieser Post-Exploitation-Tools: Covenant C2.
Ausgewählte verwandte Inhalte:
Über Covenant C2
Covenant C2 ist ein Command-and-Control (C&C)-Framework, das das Ausnutzen von Webanwendungen und deren unterstützenden Netzwerkumgebungen erleichtert. Dieses hoch skalierbare, Open-Source-Framework ist auf GitHub verfügbar. Es lässt sich innerhalb von Minuten implementieren, auch für diejenigen mit minimaler C2-Framework-Erfahrung, und bietet eine intuitive webbasierte Schnittstelle (siehe Abbildung 1), die es einfach macht, neue Agenten, Datenquellen und Integrationen hinzuzufügen und Daten sowie Anmeldeinformationen zu extrahieren.
Abbildung 1. Covenant-Dashboard (Quelle: GitHub)
Architektur
Covenant basiert auf einer hoch skalierbaren Architektur, die in C# geschrieben ist und es Entwicklern ermöglicht, problemlos Integrationen mit dem Framework zu erstellen. Es unterstützt Multi-User-Profile mit Authentifizierung und verwendet leichte, zuverlässige Datenbanken wie SQLLite und PostgreSQL. Die Multi-Plattform-Unterstützung umfasst Windows, macOS und Linux-Distributionen wie Kali.
Der Covenant Server führt Command-and-Control-Funktionalitäten aus, die es Benutzern ermöglichen, kollaborativ miteinander zu arbeiten. Er verwendet grunts — Agenten, die sich ähnlich wie die einfachen Soldaten im antiken Krieg verhalten, die als Kanonenfutter eingesetzt wurden. Diese grunts kommunizieren mit dem Covenant Server, während sie ihre zugewiesenen Aufgaben ausführen und Entdeckung vermeiden.
Implementierung von Covenant
Ein Covenant-Server kann innerhalb weniger Minuten einsatzbereit sein. Unter Windows ist die einzige Voraussetzung das .NET Core SDK. Um die Covenant ASP .NET Core-Anwendung zu erstellen und zu starten, führen Sie einfach die folgenden Befehle aus:
git clone --recurse-submodules https://github.com/cobbr/Covenant
cd Covenant/Covenant
dotnet build
dotnet run
Alternativ können Sie einen Docker container verwenden.
Navigieren Sie dann zum Localhost-Computer über den Port 7443, und Sie können die Covenant UI mit Ihrem bevorzugten Browser verwenden.
Mit Covenant
Die erste Aufgabe besteht darin, einen Listener einzurichten, wie hier beschrieben. Anschließend erstellen Sie eine Nutzlast, um Ihre Grunts auf entfernten Maschinen zu verteilen, wo sie eine Kommunikation mit dem Covenant-Server herstellen werden.
Dann können Sie die folgenden Seiten in der Covenant UI verwenden, um Aufgaben zu erstellen, auszuführen und zu überprüfen.
Grunts Page
Verwenden Sie die Grunts page zur Überprüfung Ihrer Grunts und um ihnen Aufgaben zur Ausführung zu geben.
Abbildung 2. Detailseite von Grunt (Quelle: GitHub)
Beispiel: Mimikatz implementieren
Zum Beispiel veranschaulicht das Video unten, wie man einen Grunt verwendet, um mimikatz zu deployen:
Abbildung 3. Verwendung eines Grunt zur Bereitstellung von Mimikatz
Sie können das Ergebnis der ausgeführten Aufgabe über die Browser-Oberfläche überprüfen.
Abbildung 4. Überprüfung des Ergebnisses einer von einem Grunt ausgeführten Aufgabe
Aufgabenseite
Die Tasks page bietet eine sortierbare und durchsuchbare Liste aller verfügbaren Aufgaben, die Sie Ihren Grunts zuweisen können.
Abbildung 5. Aufgabenseite
Aufgabenseite
Die Taskings-Seite zeigt die Aufgaben, die Sie Grunts zugewiesen haben, und deren Status.
Abbildung 6. Aufgabenseite
Datenseite
Der Zweck von Aufgaben besteht darin, Daten zu erfassen, die auf der Data Page zusammengefasst werden. Der Indikatoren-Tab bietet eine Nachverfolgung der Aktivitäten, die Sie an Ihr Blue Team weitergeben können, um deren Sicherheitsbemühungen zu verstärken.
Abbildung 7. Daten-Seite
Conclusion
Covenant C2 ist ein hervorragendes Beispiel dafür, wie Open-Source-C2-Nach-Exploitation-Projekte den Staffelstab von PowerShell Empire übernommen haben, um Red Teams zu stärken. Es beinhaltet viele beeindruckende Funktionen, die es ideal für kollaborative ethische Hacking-Bemühungen machen. Es gibt viele großartige Ressourcen auf dem Covenant GitHub, um Ihnen den Einstieg zu erleichtern. Wenn das Covenant-Framework für Sie neu ist, ist es an der Zeit, es sich anzusehen.
Teilen auf
Erfahren Sie mehr
Über den Autor
Joe Dibley
Sicherheitsforscher
Security Researcher bei Netwrix und Mitglied des Netwrix Security Research Teams. Joe ist ein Experte für Active Directory, Windows und eine Vielzahl von Unternehmenssoftwareplattformen und -technologien. Joe erforscht neue Sicherheitsrisiken, komplexe Angriffstechniken sowie zugehörige Milderungs- und Erkennungsmaßnahmen.
Erfahren Sie mehr zu diesem Thema
Beispiel für Risikoanalyse: Wie man Risiken bewertet
Das CIA-Dreieck und seine Anwendung in der realen Welt
Erstellen Sie AD-Benutzer in Massen und senden Sie deren Anmeldeinformationen per E-Mail mit PowerShell
So fügen Sie AD-Gruppen hinzu und entfernen Objekte in Gruppen mit PowerShell
Active Directory-Attribute: Letzte Anmeldung