GCP - Compute Enum

支持 HackTricks

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 内运行虚拟机的方式。有关更多信息,请查看此页面:

枚举

# 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修改实例的元数据提升权限的更多信息,请查看此页面:

权限提升

在以下页面中,您可以查看如何滥用计算权限以提升权限

未经身份验证的枚举

利用后

持久性

串行控制台日志

计算引擎串行控制台日志是一个功能,允许您查看和诊断虚拟机实例的启动和操作系统日志

串行控制台日志提供了实例启动过程的低级视图,包括内核消息、初始化脚本和启动过程中发生的其他系统事件。这对于调试启动问题、识别配置错误或软件错误,或排除网络连接问题非常有用。

这些日志可能会暴露敏感信息,低权限用户通常无法看到,但如果拥有适当的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 上,您必须使用 guest policies 来维护虚拟机上的一致软件配置。

操作系统配置管理功能允许您定义配置策略,指定应安装哪些软件包、应启用哪些服务以及应在您的虚拟机上存在哪些文件或配置。您可以使用声明式方法来管理虚拟机的软件配置,这使您能够更轻松地自动化和扩展配置管理过程。

这也允许通过 IAM 权限登录实例,因此对提权和横向移动非常有用

为了在整个项目或实例中启用 os-config,您只需将metadata键**enable-oslogin设置为true,在所需级别。 此外,您可以将元数据enable-oslogin-2fa设置为true**以启用 2fa。

当您在创建实例时启用它时,元数据键将自动设置。

有关OS-config 中的 2fa的更多信息,仅适用于用户,如果是服务账户(如计算服务账户),则不需要任何额外的要求。

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>

您可以从任何镜像以多种格式导出 虚拟磁盘。以下命令将以qcow2格式导出镜像test-image,允许您下载该文件并在本地构建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

权限提升

检查计算实例权限提升部分。

自定义实例模板

一个 实例模板 定义实例属性 以帮助部署一致的配置。这些可能包含与运行实例的自定义元数据相同类型的敏感数据。您可以使用以下命令进行调查:

# List the available templates
gcloud compute instance-templates list

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

了解新镜像使用哪个磁盘可能很有趣,但这些模板通常不会包含敏感信息。

快照

快照是磁盘的备份。请注意,这与克隆磁盘(另一种可用功能)不同。 快照将使用与其来源磁盘相同的加密

枚举

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

权限提升

检查计算实例权限提升部分。

参考文献

支持 HackTricks

Last updated