
Cobalt Strike HTTPS-Beaconing über die Microsoft Graph API

Release-Blog: GraphStrike: Verwendung der Microsoft Graph API, um Beacon-Traffic verschwinden zu lassen
Entwickler-Blog: GraphStrike: Anatomie der Entwicklung von Offensiv-Tools
GraphStrike ist eine Suite von Tools, die es dem HTTPS-Beacon von Cobalt Strike ermöglicht, Microsoft Graph API für die C2-Kommunikation zu nutzen. Der gesamte Beacon-Traffic wird über zwei Dateien übertragen, die auf der SharePoint-Seite des Angreifers erstellt werden, und alle Kommunikationen vom Beacon werden an https://graph.microsoft.com weitergeleitet:

GraphStrike enthält einen Provisioner zur Erstellung der erforderlichen Azure-Assets für Cobalt Strike HTTPS über Graph API:

GraphStrike erstellt keine kostenpflichtigen Assets in Azure, sodass durch die Nutzung von GraphStrike oder seines Provisioners keine zusätzlichen Kosten entstehen.
Es wurden Threat-Intelligence-Informationen zu mehreren verschiedenen APTs veröffentlicht, die Microsoft Graph API und andere Microsoft-Dienste für offensive Kampagnen nutzen:
Bedrohungsakteure nutzen weiterhin legitime Dienste für illegitime Zwecke. Die Verwendung einer hochvertrauenswürdigen Domain wie graph.microsoft.com für C2-Kommunikation ist äußerst effektiv und wünschenswert, aber oft kompliziert und aus Zeit- und Aufwandsgründen hinderlich. Die meisten C2-Frameworks unterstützen keine Methoden zum Abrufen oder Rotieren von Zugriffstoken, was sie daran hindert, Graph API zu verwenden. Dies kann es für Red Teams schwierig machen, diese Techniken zu replizieren, und nimmt Verteidigern die Möglichkeit, diese Art von Aktivitäten zu beobachten und Signaturen zu entwickeln. GraphStrike möchte diese Last verringern und einen zuverlässigen und wiederholbaren Prozess zur Nutzung der Microsoft Graph API bereitstellen, während die Vertrautheit und Zuverlässigkeit der Cobalt Strike-Benutzererfahrung erhalten bleibt.
Technisch gesehen nein. Nachdem bereits ein echter External C2 unter Verwendung von Graph API entwickelt wurde (der Beacon-Traffic als Microsoft Teams-Nachrichten sendete), ist die Last, ein benutzerdefiniertes Implantat zu entwickeln, zu warten und zu integrieren, das die External C2-Spezifikation erfüllt und die Arbeit erledigt, nur allzu vertraut. GraphStrike nutzt stattdessen einen Open-Source-User Defined Reflective Loader(UDRL) namens AceLdr von Kyle Avery (in diesem Projekt als 'GraphLdr' adaptiert), um die WinINet-Bibliotheksaufrufe, die Beacon normalerweise tätigt, zu hooken und sie nach Bedarf zu manipulieren, um Graph API zu verwenden. Es gibt kein benutzerdefiniertes Implantat oder zusätzlichen Prozess – nur den Beacon-Prozess mit ein paar gehookten Windows-APIs. Auf der Serverseite gibt es ein Python3-Programm, das den Traffic des Cobalt Strike Team Servers in Graph API-Traffic übersetzt und umgekehrt.
GraphStrike unterstützt fast alle normalen Cobalt Strike-Aktivitäten, einschließlich:
Dies umfasst auch die Integration der Befehle sleep, exit und remove in GraphStrike, um die Schlafzeiten des GraphStrike-Servers mit denen des Beacons zu synchronisieren sowie Dateien in SharePoint zu löschen, wenn ein Beacon beendet oder entfernt wird.
GraphStrike integriert darüber hinaus alle Funktionen und Möglichkeiten des ursprünglichen AceLdr, wobei zusätzliche APIs hinzugefügt wurden, um auch Call Stack Spoofing zu nutzen.
GraphStrike erfordert Folgendes, bevor Sie beginnen:
Beachten Sie Folgendes, bevor Sie mit dem Einrichtungsprozess fortfahren:
1. Bestimmte Komponenten verwenden relative Pfade, um andere Assets zu finden. Bitte wechseln Sie die Verzeichnisse wie unten angegeben.
2. Das Cobalt Strike-Profil darf NUR VOR Schritt 5 des untenstehenden Einrichtungsprozesses bearbeitet werdenAnmerkung #1.
sudo setup/install_dependencies.sh aus, um die erforderlichen Systemabhängigkeiten zu installieren.python3 -m venv virtual und dann source virtual/bin/activate aus, um die virtuelle Umgebung zu erstellen und zu betreten.pip3 install -r requirements.txt aus../provisioner.py new aus und schließen Sie den Einrichtungsprozess ab.graph.microsoft.com als HTTPS Hosts und HTTPS Host(Stager)-Feldern../GraphStrike.py.