GCP - Compute Enum

HackTricks 지원하기

GCP VPC & 네트워킹

이것이 어떻게 작동하는지 배우기:

열거

# 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 또는 메타데이터 수정을 통해 권한 상승하는 방법에 대해 이 페이지를 확인하세요:

권한 상승

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

인증되지 않은 열거

포스트 익스플로잇

지속성

직렬 콘솔 로그

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

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

이 로그는 민감한 정보를 노출할 수 있습니다. 일반적으로 권한이 낮은 사용자는 볼 수 없지만, 적절한 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에서 일관된 소프트웨어 구성을 유지하기 위해 게스트 정책을 사용해야 합니다.

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

이것은 IAM 권한을 통해 인스턴스에 로그인할 수 있게 하므로 권한 상승 및 피벗에 매우 유용합니다.

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

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

OS-config에서의 2fa에 대한 추가 정보, 사용자가 사용자일 경우에만 적용됩니다, 서비스 계정(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>

이미지

사용자 정의 이미지

사용자 정의 컴퓨트 이미지는 민감한 세부정보 또는 당신이 악용할 수 있는 다른 취약한 구성을 포함할 수 있습니다.

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

열거

다음 명령어로 프로젝트의 비표준 이미지 목록을 쿼리할 수 있습니다:

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

그런 다음 내보낼 수 있습니다 가상 디스크를 여러 형식의 이미지에서 내보낼 수 있습니다. 다음 명령은 이미지를 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]

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

Snapshots

스냅샷은 디스크의 백업입니다. 이는 디스크를 복제하는 것(또 다른 사용 가능한 기능)과는 다릅니다. 스냅샷스냅샷이 생성된 디스크와 동일한 암호화를 사용합니다.

Enumeration

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

권한 상승

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

참고자료

HackTricks 지원하기

Last updated