GCP Pentesting
기본 정보
GCP 환경을 펜테스팅하기 전에, 작동 방식에 대한 기본적인 사항을 알아야 오류를 찾고 이를 악용하는 방법을 이해하는 데 도움이 됩니다.
조직 계층 구조, 권한 및 기타 기본 개념과 같은 개념은 다음에서 설명됩니다:
GCP - Basic Information학습을 위한 실습
GCP 펜테스터/레드 팀 방법론
GCP 환경을 감사하려면 어떤 서비스가 사용되고 있는지, 무엇이 노출되고 있는지, 누가 무엇에 접근할 수 있는지, 내부 GCP 서비스와 외부 서비스가 어떻게 연결되어 있는지를 아는 것이 매우 중요합니다.
레드 팀 관점에서 GCP 환경을 손상시키는 첫 번째 단계는 자격 증명을 얻는 것입니다. 다음은 그 방법에 대한 몇 가지 아이디어입니다:
github (또는 유사한 곳)에서의 유출 - OSINT
사회 공학 (페이지 Workspace Security 확인)
비밀번호 재사용 (비밀번호 유출)
GCP-호스팅 애플리케이션의 취약점
메타데이터 엔드포인트에 접근할 수 있는 Server Side Request Forgery
로컬 파일 읽기
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
3자 침해
내부 직원
또는 노출된 인증되지 않은 서비스를 손상시켜서:
GCP - Unauthenticated Enum & Access또는 리뷰를 수행하는 경우 다음 역할로 자격 증명을 요청할 수 있습니다:
GCP - Permissions for a Pentest자격 증명을 얻은 후에는 그 자격 증명이 누구의 것인지, 무엇에 접근할 수 있는지를 알아야 하므로 기본적인 열거를 수행해야 합니다:
기본 열거
SSRF
GCP 메타데이터를 열거하는 방법에 대한 자세한 내용은 다음 hacktricks 페이지를 확인하세요:
Whoami
GCP에서 자신이 누구인지 추측하기 위해 여러 옵션을 시도할 수 있습니다:
Org Enumeration
조직 나열
Principals & IAM Enumeration
만약 충분한 권한이 있다면, GCP 계정 내 각 엔티티의 권한을 확인하는 것이 당신과 다른 아이덴티티가 무엇을 할 수 있는지 그리고 권한을 상승시키는 방법을 이해하는 데 도움이 될 것입니다.
만약 IAM을 열거할 충분한 권한이 없다면, 강제로 탈취하여 알아낼 수 있습니다. 열거 및 강제 탈취 방법은 다음을 참조하십시오:
GCP - IAM, Principals & Org Policies Enum이제 자격 증명에 대한 정보를 얻었으므로 (그리고 레드 팀이라면 탐지되지 않았기를 바랍니다). 환경에서 사용되는 서비스를 파악할 시간입니다. 다음 섹션에서는 일반적인 서비스를 열거하는 몇 가지 방법을 확인할 수 있습니다.
Services Enumeration
GCP에는 놀라운 양의 서비스가 있습니다. 다음 페이지에서 기본 정보, 열거 치트시트, 탐지 회피 방법, 지속성 확보 및 기타 사후 익스플로잇 트릭에 대한 정보를 찾을 수 있습니다:
GCP - Services모든 작업을 수동으로 수행할 필요는 없습니다, 이 게시물 아래에서 자동화 도구에 대한 섹션을 찾을 수 있습니다.
또한, 이 단계에서 인증되지 않은 사용자에게 노출된 더 많은 서비스를 발견할 수 있으며, 이를 악용할 수 있습니다:
GCP - Unauthenticated Enum & AccessPrivilege Escalation, Post Exploitation & Persistence
클라우드 자격 증명을 얻었거나 클라우드 내부에서 실행 중인 서비스를 손상시킨 경우 가장 일반적인 방법은 손상된 계정이 가질 수 있는 잘못 구성된 권한을 악용하는 것입니다. 따라서 첫 번째로 해야 할 일은 자신의 권한을 열거하는 것입니다.
또한, 이 열거 중에 권한이 "Organization"의 최고 수준에서 설정될 수 있다는 점을 기억하십시오.
GCP - Privilege EscalationGCP - Post ExploitationGCP - PersistencePublicly Exposed Services
GCP 서비스를 열거하는 동안 인터넷에 노출된 요소들(VM/컨테이너 포트, 데이터베이스 또는 큐 서비스, 스냅샷 또는 버킷...)을 발견할 수 있습니다. 펜테스터/레드 팀으로서 항상 민감한 정보/취약점을 찾을 수 있는지 확인해야 하며, 이는 AWS 계정에 대한 추가 접근을 제공할 수 있습니다.
이 책에서는 노출된 GCP 서비스를 찾고 이를 확인하는 방법에 대한 정보를 찾을 수 있습니다. 노출된 네트워크 서비스의 취약점을 찾는 방법에 대해서는 특정 서비스를 검색하는 것을 권장합니다:
GCP <--> Workspace Pivoting
하나의 플랫폼에서 엔티티를 손상시키는 것이 공격자가 다른 플랫폼을 손상시키는 것을 가능하게 할 수 있습니다. 다음을 참조하십시오:
GCP <--> Workspace PivotingAutomatic Tools
GCloud 콘솔에서, https://console.cloud.google.com/iam-admin/asset-inventory/dashboard에서 프로젝트에서 사용 중인 리소스와 IAM을 볼 수 있습니다.
이 API에서 지원하는 자산을 여기에서 확인할 수 있습니다: https://cloud.google.com/asset-inventory/docs/supported-asset-types
여러 클라우드에서 사용할 수 있는 도구를 확인하십시오.
gcp_scanner: 이는 GCP 리소스 스캐너로, GCP에서 특정 자격 증명이 어떤 수준의 접근 권한을 가지고 있는지 확인하는 데 도움이 됩니다.
gcp_enum: gcloud cli를 사용하여 GCP 환경을 열거하고 결과를 파일에 저장하는 Bash 스크립트.
GCP-IAM-Privilege-Escalation: 높은 IAM 권한을 열거하고 이를 악용하여 GCP에서 권한을 상승시키는 스크립트 (열거 스크립트를 실행할 수 없었습니다).
BF My GCP Permissions: 권한을 brute force하는 스크립트.
gcloud config & debug
gcloud, gsutil... 네트워크 캡처
gcloud
cli에서 --log-http
파라미터를 사용하여 도구가 수행하는 요청을 출력할 수 있습니다. 로그에서 토큰 값을 숨기지 않으려면 gcloud config set log_http_redact_token false
를 사용하세요.
또한, 통신을 가로채려면:
OAuth token configure in gcloud
메타데이터 엔드포인트에서 유출된 서비스 계정 OAuth 토큰을 사용하려면 다음을 수행할 수 있습니다:
참고 자료
Last updated