GCP - Compute Enum

HackTricks 지원하기

GCP VPC & Networking

다음에서 작동 방식에 대해 알아보세요:

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를 사용하여 쉽게 열린 firewall 규칙이 있는 compute instances를 찾을 수 있습니다.

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

Privilege Escalation

다음 페이지에서 컴퓨팅 권한을 악용하여 권한을 상승시키는 방법을 확인할 수 있습니다:

GCP - Compute Privesc

Unauthenticated Enum

GCP - Compute Unauthenticated Enum

Post Exploitation

GCP - Compute Post Exploitation

Persistence

GCP - Compute Persistence

Serial Console Logs

Compute Engine Serial Console Logs는 가상 머신 인스턴스의 부팅 및 운영 체제 로그를 보고 진단할 수 있는 기능입니다.

Serial Console Logs는 인스턴스의 부팅 과정에 대한 저수준의 뷰를 제공하며, 여기에는 커널 메시지, 초기화 스크립트 및 부팅 중 발생하는 기타 시스템 이벤트가 포함됩니다. 이는 부팅 문제를 디버깅하거나, 잘못된 구성 또는 소프트웨어 오류를 식별하거나, 네트워크 연결 문제를 해결하는 데 유용할 수 있습니다.

이 로그는 시스템 로그에서 저권한 사용자가 일반적으로 볼 수 없는 민감한 정보를 노출할 수 있지만, 적절한 IAM 권한이 있으면 읽을 수 있습니다.

다음 gcloud 명령어를 사용하여 시리얼 포트 로그를 쿼리할 수 있습니다 (필요한 권한은 compute.instances.getSerialPortOutput입니다):

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

Startup Scripts output

VM에서 실행되는 시작 스크립트의 출력을 확인할 수 있습니다:

sudo journalctl -u google-startup-scripts.service

OS Configuration Manager

OS 구성 관리 서비스를 사용하여 VM 인스턴스(VM)에 대해 일관된 구성(원하는 상태 및 소프트웨어)을 배포, 쿼리 및 유지 관리할 수 있습니다. Compute Engine에서는 VM에서 일관된 소프트웨어 구성을 유지하기 위해 guest policies를 사용해야 합니다.

OS 구성 관리 기능을 통해 설치해야 할 소프트웨어 패키지, 활성화해야 할 서비스, VM에 있어야 할 파일 또는 구성을 지정하는 구성 정책을 정의할 수 있습니다. 선언적 접근 방식을 사용하여 VM의 소프트웨어 구성을 관리할 수 있으며, 이를 통해 구성 관리 프로세스를 더 쉽게 자동화하고 확장할 수 있습니다.

이 기능은 IAM 권한을 통해 인스턴스에 로그인할 수 있게 하므로, privesc 및 pivoting에 매우 유용합니다.

프로젝트 전체 또는 인스턴스에서 os-config를 활성화하려면 원하는 수준에서 메타데이터 키 **enable-oslogin**을 **true**로 설정하기만 하면 됩니다. 또한, 메타데이터 **enable-oslogin-2fa**를 **true**로 설정하여 2fa를 활성화할 수 있습니다.

인스턴스를 생성할 때 이를 활성화하면 메타데이터 키가 자동으로 설정됩니다.

OS-config에서 2fa에 대해 더 알아보면, 사용자가 사용자일 경우에만 적용되며, 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

Custom compute images may contain sensitive details or other vulnerable configurations that you can exploit.

이미지를 생성할 때 3가지 암호화 유형을 선택할 수 있습니다: Google managed key (기본값), KMS의 키, 또는 클라이언트가 제공한 raw key.

Enumeration

다음 명령어를 사용하여 프로젝트의 비표준 이미지를 나열할 수 있습니다:

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

다음으로 export the virtual disks를 여러 형식으로 어떤 이미지에서든 할 수 있습니다. 다음 명령어는 qcow2 형식으로 test-image 이미지를 export하여 파일을 다운로드하고 추가 조사를 위해 로컬에서 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

Privilege Escalation

Compute Instances 권한 상승 섹션을 확인하세요.

Custom Instance Templates

instance template 는 인스턴스 속성을 정의하여 일관된 구성을 배포하는 데 도움을 줍니다. 이러한 템플릿에는 실행 중인 인스턴스의 사용자 지정 메타데이터와 동일한 유형의 민감한 데이터가 포함될 수 있습니다. 다음 명령어를 사용하여 조사할 수 있습니다:

# List the available templates
gcloud compute instance-templates list

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

새 이미지가 어떤 디스크를 사용하는지 아는 것은 흥미로울 수 있지만, 이러한 템플릿에는 일반적으로 민감한 정보가 포함되지 않습니다.

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