GCP - Compute Enum

Support HackTricks

GCP VPC & Networking

Learn about how this works in:

GCP - VPC & Networking

Enumeration

# List networks
gcloud compute networks list
gcloud compute networks describe <network>

# List subnetworks
gcloud compute networks subnets list
gcloud compute networks subnets get-iam-policy <name> --region <region>
gcloud compute networks subnets describe <name> --region <region>

# List FW rules in networks
gcloud compute firewall-rules list --format="table(
name,
network,
direction,
priority,
sourceRanges.list():label=SRC_RANGES,
destinationRanges.list():label=DEST_RANGES,
allowed[].map().firewall_rule().list():label=ALLOW,
denied[].map().firewall_rule().list():label=DENY,
sourceTags.list():label=SRC_TAGS,
sourceServiceAccounts.list():label=SRC_SVC_ACCT,
targetTags.list():label=TARGET_TAGS,
targetServiceAccounts.list():label=TARGET_SVC_ACCT,
disabled
)"

# List Hierarchical Firewalls
gcloud compute firewall-policies list  (--folder <value>| --organization <value>)
gcloud compute firewall-policies describe <fw_policy>
gcloud compute firewall-policies list-rules <fw_policy>

# Get Firewalls of each region
gcloud compute network-firewall-policies list
## Get final FWs applied in a region
gcloud compute network-firewall-policies get-effective-firewalls --network=<vpc_name> --region <region>

Ви легко знайдете обчислювальні інстанси з відкритими правилами брандмауера за допомогою https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Обчислювальні інстанси

Це спосіб, яким ви можете запускати віртуальні машини всередині GCP. Перевірте цю сторінку для отримання додаткової інформації:

GCP - Compute Instances

Перерахування

# Get list of zones
# It's interesting to know which zones are being used
gcloud compute regions list | grep -E "NAME|[^0]/"

# List compute instances & get info
gcloud compute instances list
gcloud compute instances describe <instance name>
gcloud compute instances get-iam-policy <instance> --zone=ZONE
gcloud compute instances get-screenshot <instance name> # Instace must have "Display Device" enabled
gcloud compute instances os-inventory list-instances # Get OS info of instances (OS Config agent is running on instances)


# Enumerate disks
gcloud compute disks list
gcloud compute disks describe <disk>
gcloud compute disks get-iam-policy <disk>

Для отримання додаткової інформації про те, як SSH або змінити метадані екземпляра для підвищення привілеїв, перегляньте цю сторінку:

GCP - local privilege escalation ssh pivoting

Підвищення привілеїв

На наступній сторінці ви можете перевірити, як зловживати правами обчислень для підвищення привілеїв:

GCP - Compute Privesc

Неавтентифікований Enum

GCP - Compute Unauthenticated Enum

Після експлуатації

GCP - Compute Post Exploitation

Постійність

GCP - Compute Persistence

Журнали серійної консолі

Журнали серійної консолі Compute Engine - це функція, яка дозволяє вам переглядати та діагностувати журнали завантаження та операційної системи ваших віртуальних машин.

Журнали серійної консолі надають низькорівневий огляд процесу завантаження екземпляра, включаючи повідомлення ядра, скрипти ініціалізації та інші системні події, які відбуваються під час завантаження. Це може бути корисно для налагодження проблем із завантаженням, виявлення неправильних налаштувань або помилок програмного забезпечення, або усунення проблем з підключенням до мережі.

Ці журнали можуть розкрити чутливу інформацію з системних журналів, яку користувач з низькими привілеями зазвичай не бачить, але з відповідними правами IAM ви можете мати можливість їх прочитати.

Ви можете використовувати наступну команду gcloud для запиту журналів серійного порту (необхідне право - compute.instances.getSerialPortOutput):

gcloud compute instances get-serial-port-output <instance-name>

Startup Scripts output

Можна побачити вихідні дані скриптів запуску з ВМ, що виконується:

sudo journalctl -u google-startup-scripts.service

OS Configuration Manager

Ви можете використовувати службу управління конфігурацією ОС для розгортання, запиту та підтримки послідовних конфігурацій (бажаного стану та програмного забезпечення) для вашого екземпляра VM (віртуальної машини). На Compute Engine ви повинні використовувати гостьові політики для підтримки послідовних конфігурацій програмного забезпечення на VM.

Функція управління конфігурацією ОС дозволяє вам визначати політики конфігурації, які вказують, які пакети програмного забезпечення повинні бути встановлені, які служби повинні бути активовані та які файли або конфігурації повинні бути присутніми на ваших VM. Ви можете використовувати декларативний підхід до управління конфігурацією програмного забезпечення ваших VM, що дозволяє вам автоматизувати та масштабувати процес управління конфігурацією простіше.

Це також дозволяє входити в екземпляри через дозволи IAM, тому це дуже корисно для privesc і pivoting.

Щоб увімкнути os-config у всьому проекті або в екземплярі, вам просто потрібно встановити ключ метаданих enable-oslogin на true на бажаному рівні. Більше того, ви можете встановити метадані enable-oslogin-2fa на true, щоб увімкнути 2fa.

Коли ви увімкнете це під час створення екземпляра, ключі метаданих будуть автоматично встановлені.

Більше про 2fa в OS-config, це застосовується лише якщо користувач є користувачем, якщо це SA (як обчислювальний SA), це не вимагатиме нічого додаткового.

Enumeration

gcloud compute os-config patch-deployments list
gcloud compute os-config patch-deployments describe <patch-deployment>

gcloud compute os-config patch-jobs list
gcloud compute os-config patch-jobs describe <patch-job>

Images

Custom Images

Користувацькі обчислювальні образи можуть містити чутливі дані або інші вразливі конфігурації, які ви можете експлуатувати.

Коли образ створюється, ви можете вибрати 3 типи шифрування: Використовуючи ключ, керований Google (за замовчуванням), ключ з KMS або сирий ключ, наданий клієнтом.

Enumeration

Ви можете запитати список нестандартних образів у проекті за допомогою наступної команди:

gcloud compute machine-images list
gcloud compute machine-images describe <name>
gcloud compute machine-images get-iam-policy <name>

Ви можете потім експортувати віртуальні диски з будь-якого образу в кількох форматах. Наступна команда експортує образ test-image у форматі qcow2, що дозволяє вам завантажити файл і створити ВМ локально для подальшого розслідування:

gcloud compute images export --image test-image \
--export-format qcow2 --destination-uri [BUCKET]

# Execute container inside a docker
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

Підвищення Привілеїв

Перевірте розділ підвищення привілеїв Compute Instances.

Користувацькі Шаблони Екземплярів

Шаблон екземпляра визначає властивості екземпляра для допомоги в розгортанні послідовних конфігурацій. Вони можуть містити ті ж типи чутливих даних, що й користувацькі метадані працюючого екземпляра. Ви можете використовувати наступні команди для розслідування:

# List the available templates
gcloud compute instance-templates list

# Get the details of a specific template
gcloud compute instance-templates describe [TEMPLATE NAME]

Цікаво було б дізнатися, який диск використовують нові образи, але ці шаблони зазвичай не містять чутливої інформації.

Snapshots

Снапшоти - це резервні копії дисків. Зверніть увагу, що це не те ж саме, що клонування диска (інша доступна функція). Снапшот використовуватиме таке ж шифрування, як і диск, з якого він зроблений.

Enumeration

gcloud compute snapshots list
gcloud compute snapshots describe <snapshot>
gcloud compute snapshots get-iam-policy <snapshot>

Підвищення Привілеїв

Перевірте розділ підвищення привілеїв Compute Instances.

Посилання

Підтримати HackTricks

Last updated