GCP - Compute Enum
Reading time: 7 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
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 또는 인스턴스의 메타데이터를 수정하여 권한을 상승시키는 방법에 대해 이 페이지를 확인하세요:
GCP - local privilege escalation ssh pivoting
권한 상승
다음 페이지에서 컴퓨트 권한을 남용하여 권한을 상승시키는 방법을 확인할 수 있습니다:
인증되지 않은 열거
GCP - Compute Unauthenticated Enum
포스트 익스플로잇
GCP - Compute Post Exploitation
지속성
직렬 콘솔 로그
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에서 일관된 소프트웨어 구성을 유지하기 위해 guest policies를 사용해야 합니다.
OS 구성 관리 기능을 사용하면 설치해야 할 소프트웨어 패키지, 활성화해야 할 서비스 및 VM에 존재해야 할 파일 또는 구성을 지정하는 구성 정책을 정의할 수 있습니다. VM의 소프트웨어 구성을 관리하는 선언적 접근 방식을 사용하여 구성 관리 프로세스를 보다 쉽게 자동화하고 확장할 수 있습니다.
이것은 IAM 권한을 통해 인스턴스에 로그인할 수 있게 하므로 권한 상승 및 피벗에 매우 유용합니다.
warning
전체 프로젝트 또는 인스턴스에서 os-config를 활성화하려면 원하는 수준에서 메타데이터 키 **enable-oslogin
**을 **true
**로 설정하기만 하면 됩니다.
또한, 2fa를 활성화하려면 메타데이터 **enable-oslogin-2fa
**를 **true
**로 설정할 수 있습니다.
인스턴스를 생성할 때 이를 활성화하면 메타데이터 키가 자동으로 설정됩니다.
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>
이미지
사용자 정의 이미지
사용자 정의 컴퓨트 이미지는 민감한 세부정보 또는 당신이 악용할 수 있는 다른 취약한 구성을 포함할 수 있습니다.
이미지가 생성될 때 3가지 유형의 암호화를 선택할 수 있습니다: Google 관리 키(기본값), KMS의 키, 또는 클라이언트가 제공한 원시 키.
열거
다음 명령어로 프로젝트의 비표준 이미지 목록을 쿼리할 수 있습니다:
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
권한 상승
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]
어떤 디스크가 새로운 이미지를 사용하고 있는지 아는 것은 흥미로울 수 있지만, 이러한 템플릿은 일반적으로 민감한 정보를 포함하지 않습니다.
스냅샷
스냅샷은 디스크의 백업입니다. 이는 디스크를 복제하는 것(또 다른 사용 가능한 기능)과는 다릅니다.
스냅샷은 스냅샷이 생성된 디스크와 동일한 암호화를 사용합니다.
열거
gcloud compute snapshots list
gcloud compute snapshots describe <snapshot>
gcloud compute snapshots get-iam-policy <snapshot>
권한 상승
Compute Instances 권한 상승 섹션을 확인하세요.
참고자료
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.