GCP - Compute Enum

Підтримайте HackTricks

GCP VPC & Networking

Дізнайтеся, як це працює в:

GCP - VPC & Networking

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

# 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>

Ви легко знайдете compute instances з відкритими правилами firewall за допомогою https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Compute instances

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

GCP - Compute Instances

Enumeration

# 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

Неавтентифікована енумерація

GCP - Compute Unauthenticated Enum

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

GCP - Compute Post Exploitation

Персистентність

GCP - Compute Persistence

Логи серійної консолі

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

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

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

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

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

Вивід Startup Scripts

Можливо побачити вивід startup scripts з VM, виконуючи:

sudo journalctl -u google-startup-scripts.service

OS Configuration Manager

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

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

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

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

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

Більше про 2fa в OS-config, це застосовується лише якщо користувач є користувачем, якщо це SA (наприклад, compute 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

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

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

Enumeration

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

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

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

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]

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

Snapshots

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

Enumeration

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

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

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

Посилання

Підтримайте HackTricks

Last updated