
클라우드 침투 테스트를 위한 상황 인식 자동화
CloudFox는 낯선 클라우드 환경에서 상황 인식을 얻는 데 도움을 줍니다. 침투 테스터 및 기타 공격적 보안 전문가가 클라우드 인프라에서 악용 가능한 공격 경로를 찾을 수 있도록 설계된 오픈 소스 명령줄 도구입니다.
CLOUDFOX 업데이트 필요: (2025년 12월):
cloudfox를 사용 중이라면 v1.17.0 이상을 사용해야 합니다. 모든 이전 버전은 AWS의 공개 서비스 매핑 파일 형식 변경 후 작동이 중단되었습니다.
개요
RedSec 디스코드 서버에 참여하세요.
CloudFox는 모듈식(한 번에 하나의 명령어 실행 가능)이지만, aws all-checks 명령어를 사용하면 적절한 기본값으로 다른 AWS 명령어를 실행할 수 있습니다:
cloudfox aws --profile [프로필-이름] all-checks

CloudFox는 제한된 읽기 전용 권한을 가진 주체가 실행하도록 설계되었지만, 시뮬레이션된 침해 시나리오(즉, 목표 기반 침투 테스트)에서 악용할 수 있는 공격 경로를 찾는 데 목적이 있습니다.
CloudFox는 weirdAAL 또는 enumerate-iam을 사용하는 방식과 유사하게 "발견된" 자격 증명과 함께 사용할 수 있습니다. 실패한 검사는 조용히 실패하므로 반환된 데이터는 "발견된" 자격 증명이 해당 데이터를 검색하는 데 필요한 액세스 권한을 가지고 있음을 의미합니다.
전체 문서는 위키를 참조하세요.
| 제공자 | CloudFox 명령어 |
|---|---|
| AWS | 34 |
| Azure | 4 |
| GCP | 60 |
| Kubernetes | 지원 예정 |
옵션 1: 플랫폼에 맞는 최신 바이너리 릴리스를 다운로드하세요.
옵션 2: homebrew를 사용하는 경우: brew install cloudfox
옵션 3: Go 설치 후, go install github.com/BishopFox/cloudfox@latest를 사용하여 원격 소스에서 설치하세요.
옵션 4: 개발자 모드:
Go를 설치하고, CloudFox 저장소를 클론한 후 소스에서 컴파일하세요. ```
**Option 5:** 버그 수정 테스트 ```
git clone [email protected]:BishopFox/cloudfox.git
git checkout seth-dev
go build .
./cloudfox [rest of the command options]
-l 플래그를 사용하여 개행으로 구분된 프로필 이름 목록이 포함된 파일 경로를 지정하거나 -a 플래그로 저장된 모든 프로필을 전달할 수 있습니다.SecurityAudit + CloudFox 사용자 정의 정책추가 정책 참고 사항(2022년 9월 기준):
gcloud auth application-default login)최소 권한 (단일 프로젝트):
단일 프로젝트의 기본 열거를 위해 roles/viewer 역할은 대부분의 리소스에 대한 읽기 액세스를 제공합니다 (로깅, 모니터링, 컴퓨팅/네트워크 보기 포함).
포괄적 권한 (조직 전체):
조직 전체의 철저한 보안 평가를 위해:
참고: 기본
roles/viewer역할에는roles/logging.viewer,roles/monitoring.viewer,roles/compute.networkViewer의 권한이 포함되어 있으므로 별도로 부여할 필요가 없습니다.
평가하려는 각 프로젝트에서 API를 활성화해야 합니다. GCP API는 프로젝트 범위로 지정됩니다.
자세한 설정 지침은 GCP 설정 가이드를 참조하세요.
각 GCP 명령어에 대한 자세한 문서는 GCP 명령어 위키를 참조하세요.| Provider | Command Name | Description | - | - | - | | GCP | whoami | 인증된 GCP 사용자/서비스 계정의 ID 컨텍스트 표시 | | GCP | iam | 조직, 폴더, 프로젝트 전반의 GCP IAM 주체 열거 | | GCP | permissions | 각 IAM 엔터티에 대한 모든 권한을 전체 상속 확장으로 열거 | | GCP | serviceaccounts | 보안 분석을 포함한 GCP 서비스 계정 열거 | | GCP | service-agents | Google 관리 서비스 에이전트 열거 | | GCP | keys | 모든 GCP 키(서비스 계정 키, HMAC 키, API 키) 열거 | | GCP | resource-iam | GCP 리소스(버킷, 데이터셋, 시크릿 등)의 IAM 정책 열거 | | GCP | domain-wide-delegation | Google Workspace에 도메인 전체 위임이 설정된 서비스 계정 찾기 | | GCP | privesc | GCP 프로젝트에서 권한 상승 경로 식별 | | GCP | hidden-admins | IAM 정책을 수정할 수 있는 주체(숨겨진 관리자) 식별 | | GCP | identity-federation | Workload Identity Federation(외부 ID) 열거 | | GCP | instances | 보안 구성이 포함된 GCP Compute Engine 인스턴스 열거 | | GCP | gke | 보안 분석이 포함된 GKE 클러스터 열거 | | GCP | cloudrun | 보안 분석이 포함된 Cloud Run 서비스 및 작업 열거 | | GCP | functions | 보안 분석이 포함된 GCP Cloud Functions 열거 | | GCP | app-engine | App Engine 애플리케이션 및 보안 구성 열거 | | GCP | composer | Cloud Composer 환경 열거 | | GCP | | Dataproc 클러스터 열거 | | GCP | | Dataflow 작업 및 파이프라인 열거 | | GCP | | Vertex AI Workbench 노트북 열거 | | GCP | | GKE Workload Identity 및 Workload Identity Federation 열거 | | GCP | | 빠른 리소스 인벤토리 - Cloud Asset API 없이 작동 | | GCP | | 보안 구성이 포함된 GCP Cloud Storage 버킷 열거 | | GCP | | GCS 버킷에서 민감한 파일(자격 증명, 시크릿, 구성) 검색 | | GCP | | 보안 분석이 포함된 GCP BigQuery 데이터셋 및 테이블 열거 | | GCP | | 보안 분석이 포함된 Cloud SQL 인스턴스 열거 | | GCP | | Cloud Spanner 인스턴스 및 데이터베이스 열거 | | GCP | | Cloud Bigtable 인스턴스 및 테이블 열거 | | GCP | | Filestore NFS 인스턴스 열거 | | GCP | | Memorystore(Redis) 인스턴스 열거 | | GCP | | VPC 네트워크 열거 | | GCP | | 보안 분석이 포함된 VPC 네트워크 및 방화벽 규칙 열거 | | GCP | | 로드 밸런서 열거 | | GCP | | 보안 분석이 포함된 Cloud DNS 영역 및 레코드 열거 | | GCP | | IP, 포트, 호스트명을 포함한 모든 네트워크 엔드포인트(외부 및 내부) 열거 | | GCP | | Private Service Connect 엔드포인트 및 서비스 어태치먼트 열거 | | GCP | | VPC 네트워크 토폴로지, 피어링 관계, 신뢰 경계 시각화 | | GCP | | VPC Service Controls 열거 | | GCP | | Access Context Manager 액세스 수준 열거 | | GCP | | Cloud Armor 보안 정책 열거 및 약점 찾기 | | GCP | | Identity-Aware Proxy 구성 열거 | | GCP | | BeyondCorp Enterprise 구성 열거 | | GCP | | 보안 분석이 포함된 Cloud KMS 키 링 및 암호화 키 열거 | | GCP | | 보안 구성이 포함된 GCP Secret Manager 시크릿 열거 | | GCP | | SSL/TLS 인증서 열거 및 만료 또는 잘못 구성된 인증서 찾기 | | GCP | | 조직 정책 열거 및 보안 취약점 식별 | | GCP | | 보안 구성이 포함된 GCP Artifact Registry 및 Container Registry 열거 | | GCP | | Cloud Build 트리거 및 빌드 열거 | | GCP | | Cloud Source Repositories 열거 | | GCP | | 보안 분석이 포함된 Cloud Scheduler 작업 열거 | | GCP | | 보안 분석이 포함된 Pub/Sub 주제 및 구독 열거 | | GCP | | 보안 분석이 포함된 Cloud Logging 싱크 및 메트릭 열거 | | GCP | | GCP 조직 계층 구조 열거 | | GCP | | 선택적 종속성 분석이 포함된 Cloud Asset Inventory 열거 | | GCP | | 백업 정책, 보호된 리소스 열거 및 백업 격차 식별 | | GCP | | 측면 이동 경로, 자격 증명 도용 벡터 및 피벗 기회 매핑 | | GCP | | 데이터 유출 경로, 잠재적 벡터 및 누락된 보안 강화 식별 | | GCP | | 16개 GCP 서비스에서 allUsers/allAuthenticatedUsers 액세스가 있는 리소스 찾기 | | GCP | | 측면 이동을 위한 교차 프로젝트 IAM 바인딩, 로깅 싱크, Pub/Sub 내보내기 분석 | | GCP | | FoxMapper(그래프 기반 IAM 분석) 실행하여 권한 상승 경로 탐색 | | GCP | | Cloud Logging 항목에서 민감한 데이터(자격 증명, 토큰, PII) 스캔 | | GCP | | BigQuery 데이터셋, 테이블, 열에서 민감한 데이터 지표 스캔 | | GCP | | Bigtable 인스턴스, 테이블, 열 패밀리에서 민감한 데이터 지표 스캔 | | GCP | | Spanner 데이터베이스 스키마에서 민감한 테이블 및 열 이름 스캔 |
CloudFox는 ScoutSuite, Prowler, Steampipe의 AWS Compliance Module, AWS Security Hub 등과 어떻게 비교되나요?
CloudFox는 경고나 결과를 생성하지 않으며, 환경이 기준이나 벤치마크를 준수하는지 확인하지 않습니다. 대신, 수동 침투 테스트 활동 중 더 효율적으로 작업할 수 있도록 정보를 제공합니다. 공격 경로가 가능한지 여부를 검증하는 데 필요한 정보를 제공합니다.
일부 CloudFox 명령에서 오류가 발생하는 이유는 무엇인가요?
오류에 대한 자세한 정보는 ~/.cloudfox/cloudfox-error.log 파일에서 확인할 수 있습니다.
endpoints 명령에 대한 영감endpoints 명령에 대한 영감iam-simulator 명령에 대한 영감이자 강력히 권장되는 파트너permissions 명령에 대한 영감instances 명령의 --userdata 기능, permissions 명령 및 기타 여러 기능에 영감을 제공했습니다.inventory 명령과 전반적인 CloudFox에 대한 영감| 정책 | 참고 사항 |
|---|
| CloudFox 사용자 정의 정책 | CloudFox가 사용하는 모든 권한의 전체 목록을 포함하며 그 외에는 아무것도 없음 |
arn:aws:iam::aws:policy/SecurityAudit | 대부분의 CloudFox 검사를 포함하지만 apprunner:*, grafana:*, lambda:GetFunctionURL, lightsail:GetContainerServices와 같은 최신 서비스 또는 권한은 누락됨 |
arn:aws:iam::aws:policy/job-function/ViewOnlyAccess | 대부분의 CloudFox 검사를 포함하지만 AppRunner:*, grafana:*, lambda:GetFunctionURL, lightsail:GetContainerServices와 같은 최신 서비스 또는 권한이 누락되고 iam:SimulatePrincipalPolicy도 누락됨 |
arn:aws:iam::aws:policy/ReadOnlyAccess | AppRunner만 누락되었지만 "s3:Get*"과 같은 항목도 부여하여 과도하게 허용적일 수 있음 |
arn:aws:iam::aws:policy/AdministratorAccess | CloudFox와 함께 사용해도 문제없지만, 침투 테스터로서 이 수준의 액세스 권한을 받았다면 그 자체로 문제가 될 수 있습니다 :) |
| 범위 | 역할 | 목적 |
|---|
| 조직 | roles/resourcemanager.organizationViewer | 조직 구조 및 메타데이터 보기 |
| 조직 | roles/iam.securityReviewer | 조직 전체의 IAM 정책 검토 |
| 조직 | roles/cloudasset.viewer | 모든 리소스에 대한 Cloud Asset Inventory 쿼리 |
| 조직 | roles/cloudidentity.groupsViewer | Google 그룹 및 멤버십 열거 |
| 폴더 | roles/resourcemanager.folderViewer | 폴더 계층 구조 및 메타데이터 보기 |
| 프로젝트 | roles/viewer | 대부분의 프로젝트 리소스에 대한 읽기 액세스 (logging.viewer, monitoring.viewer, compute.viewer 포함) |
| 도구 프로젝트 | roles/serviceusage.serviceUsageAdmin | (선택 사항) CloudFox 작업을 위한 API 할당량 관리 |
| API | 서비스 이름 | 목적 |
|---|
| Cloud Identity API | cloudidentity.googleapis.com | 그룹 열거, 상속된 역할 분석 |
| Cloud Asset API | cloudasset.googleapis.com | 프로젝트 간 리소스 검색 |
| Cloud Resource Manager API | cloudresourcemanager.googleapis.com | 조직 매핑, IAM 열거 |
| IAM API | iam.googleapis.com | IAM 분석, 권한 상승 탐지 |
| Compute Engine API | compute.googleapis.com | 인스턴스 열거, 네트워크 보안 |
| Secret Manager API | secretmanager.googleapis.com | 시크릿 열거 |
| Cloud Functions API | cloudfunctions.googleapis.com | 서버리스 열거 |
| Cloud Run API | run.googleapis.com | 서버리스 열거 |
| Kubernetes Engine API | container.googleapis.com | 컨테이너 보안 분석 |
| BigQuery API | bigquery.googleapis.com | 데이터 보안 분석 |
| 제공자 | 명령어 이름 | 설명 |
|---|
| AWS | all-checks | 합리적인 기본값을 사용하여 다른 모든 명령어를 실행합니다. 각 명령어의 기본값이 아닌 옵션도 확인하는 것이 좋지만, 여기서 시작하기에 좋습니다. |
| AWS | access-keys | 모든 사용자의 활성 액세스 키를 나열합니다. 찾은 키가 어떤 범위 내 계정에 속하는지 상호 참조하는 데 유용합니다. |
| AWS | api-gw | API 게이트웨이 엔드포인트를 나열하고 메타데이터에 저장된 경우 API 토큰을 포함한 사용자 정의 curl 명령어를 제공합니다. |
| AWS | buckets | 계정의 버킷을 나열하고 추가 검사를 위한 편리한 명령어를 제공합니다. |
| AWS | cape | 계정 간 권한 상승 경로를 열거합니다. 먼저 pmapper를 실행해야 합니다. |
| AWS | cloudformation | 계정의 CloudFormation 스택을 나열합니다. 스택 세부 정보, 스택 매개변수, 스택 출력이 포함된 전리품 파일을 생성합니다 - 시크릿을 찾아보세요. |
| AWS | codebuild | CodeBuild 프로젝트 열거 |
| AWS | databases | RDS 데이터베이스 열거. 연결 문자열이 포함된 전리품 파일을 가져옵니다. |
| AWS | ecr | 모든 리포지토리에서 가장 최근에 푸시된 이미지 URI를 나열합니다. 전리품 파일을 사용하여 선택한 이미지를 docker/nerdctl로 내려받아 검사합니다. |
| AWS | ecs-tasks | 모든 ECS 태스크를 나열합니다. ECS 태스크와 연결된 클러스터, 태스크 정의, 컨테이너 인스턴스, 시작 유형 및 연결된 IAM 보안 주체 목록을 반환합니다. |
| AWS | eks | 모든 EKS 클러스터를 나열하고, 엔드포인트를 공개적으로 노출하는지 확인하며, 각 클러스터 또는 노드 그룹에 연결된 IAM 역할을 확인합니다. 각 클러스터에 연결하는 데 필요한 aws eks udpate-kubeconfig 명령어가 포함된 전리품 파일을 생성합니다. |
| AWS | elastic-network-interfaces | 모든 ENI 정보를 나열합니다. ENI ID, 유형, 외부 IP, 개인 IP, VPCID, 연결된 인스턴스 및 설명 목록을 반환합니다. |
| AWS | endpoints | 다양한 서비스의 엔드포인트를 열거합니다. 내부 및 외부 위치에서 이러한 엔드포인트를 스캔하여 인증이 필요하지 않거나 잘못 구성된 항목 등을 찾습니다. |
| AWS | env-vars | 환경 변수가 있는 서비스(App Runner, ECS, Lambda, Lightsail 컨테이너, Sagemaker 지원)에서 환경 변수를 가져옵니다. 중요한 시크릿을 발견하면 cloudfox iam-simulator 및 pmapper를 사용하여 누가 액세스 권한이 있는지 확인합니다. |
| AWS | filesystems | 자격 증명 없이 마운트할 수 있는 EFS 및 FSx 파일 시스템을 열거합니다(적절한 네트워크 액세스 권한이 있는 경우). 예를 들어 ec:RunInstance는 있지만 iam:PassRole은 없을 때 유용합니다. |
| AWS | iam-simulator | pmapper와 유사하지만 IAM 정책 시뮬레이터를 사용합니다. AWS의 평가 로직을 사용하지만, 특히 권한 상승을 통한 전이적 액세스는 고려하지 않으므로 항상 pmapper도 함께 사용해야 합니다. |
| AWS | instances | 모든 리전의 EC2 인스턴스에 대한 유용한 정보(이름, 공개/개인 IP, 인스턴스 프로필)를 열거합니다. nmap 및 기타 도구에 제공하여 서비스 열거를 수행할 수 있는 전리품 파일을 생성합니다. |
| AWS | inventory | 계정의 크기와 선호 리전에 대한 대략적인 이해를 얻습니다. |
| AWS | lambda | 계정의 Lambda 함수를 나열합니다. 여기에는 관리자 역할이 연결된 함수도 포함됩니다. 또한 각 함수를 다운로드하기 위한 편리한 명령어를 제공합니다. |
| AWS | network-ports | 네트워크 서비스를 잠재적으로 노출하는 AWS 서비스를 열거합니다. 각 리소스에 대해 보안 그룹과 네트워크 ACL을 구문 분석하여 잠재적으로 노출된 포트를 확인합니다. |
| AWS | orgs | 조직의 계정 열거 |
| AWS | outbound-assumed-roles | 이 계정의 보안 주체가 가정한 역할을 나열합니다. 다른 계정으로 이어지는 아웃바운드 공격 경로를 찾는 훌륭한 방법입니다. |
| AWS | permissions | 모든 사용자 및 역할과 관련된 IAM 권한을 열거합니다. 이 출력을 grep하여 특정 보안 주체가 가진 권한을 확인할 수 있으며, AWS 콘솔에 로그인하여 각 정책을 하나씩 확장하는 수고를 덜 수 있습니다. |
| AWS | pmapper | 로컬 파일 시스템에 저장된 pmapper 데이터를 찾습니다 (여기에 정의된 위치). pmapper 데이터가 발견되면(이미 pmapper graph create를 실행한 경우), 이 명령어는 이 데이터를 사용하여 CloudFox 메모리에 그래프를 구축하고 누가 관리자로 권한 상승할 수 있는지 알려줍니다. |
| AWS | principals | IAM 사용자 및 역할을 열거하여 데이터를 쉽게 확인할 수 있도록 합니다. |
| AWS | ram | 이 계정에서 다른 계정과 공유된 모든 리소스 또는 다른 계정에서 이 계정과 공유된 리소스를 나열합니다. 계정 간 공격 경로에 유용합니다. |
| AWS | resource-trusts | 리소스 정책을 지원하는 여러 서비스를 살펴보고 과도하게 허용적인 리소스 트러스트를 찾습니다. KMS는 지원되지만 기본적으로 비활성화되어 있습니다. 출력에 KMS 리소스 정책을 포함하려면 명령어에 다음 플래그를 추가하세요: cloudfox aws resource-trusts --include-kms. |
| AWS | role-trusts | IAM 역할 트러스트 정책을 열거하여 과도하게 허용적인 역할 트러스트를 찾거나 특정 서비스를 신뢰하는 역할을 찾습니다. |
| AWS | route53 | 모든 route53 관리 영역의 모든 레코드를 열거합니다. 애플리케이션 및 서비스 열거에 사용합니다. |
| AWS | secrets | SecretsManager 및 SSM의 시크릿을 나열합니다. 목록에서 흥미로운 시크릿을 찾은 다음 cloudfox iam-simulator 및/또는 pmapper를 사용하여 누가 액세스 권한이 있는지 확인합니다. |
| AWS | sns | 이 명령어는 모든 SNS 주제를 열거하고 주제를 구독하거나 주제에 메시지를 보내는 명령어를 제공합니다(필요한 권한이 있는 경우). 이 명령어는 주제만 처리하며 SMS 기능은 처리하지 않습니다. 또한 주제 리소스 정책이 있는 경우 요약을 시도합니다. |
| AWS | sqs | 이 명령어는 모든 SQS 대기열을 열거하고 대기열에서 메시지를 수신하고 대기열에 메시지를 보내는 명령어를 제공합니다(필요한 권한이 있는 경우). 또한 대기열 리소스 정책이 있는 경우 요약을 시도합니다. |
| AWS | tags | 태그가 있는 모든 리소스와 모든 태그를 나열합니다. 이는 인벤토리와 유사하게 계정에 존재하는 리소스 유형을 식별하는 또 다른 방법으로 사용할 수 있습니다. |
| AWS | workloads | 모든 컴퓨팅 워크로드와 그 역할을 나열합니다. 역할이 관리자인지(나쁨) 알려주고, 로컬에 pmapper 데이터가 있으면 역할 중 관리자로 권한 상승할 수 있는 역할이 있는지(또한 나쁨) 알려줍니다. |
| AWS | ds | 모든 AWS 관리형 디렉터리와 그 속성을 나열합니다. 또한 방향과 유형별로 현재 트러스트를 요약합니다. |
| 제공자 | 명령어 이름 | 설명 |
|---|
| Azure | whoami | 현재 Azure CLI 세션에서 사용 가능한 테넌트, 구독 및 리소스 그룹에 대한 정보를 표시합니다. 이는 다른 하위 명령어와 함께 사용할 테넌트 및 구독 ID를 파악하는 데 유용합니다. |
| Azure | inventory | 위치별 모든 리소스의 인벤토리 테이블을 표시합니다. |
| Azure | rbac | 구독 또는 테넌트 수준에서 Azure RBAC 역할 할당을 나열합니다. |
| Azure | storage | storage 명령어는 아직 개발 중입니다. 현재는 스토리지 계정에 대한 제한된 데이터만 표시합니다. |
| Azure | vms | 사용 가능한 모든 리소스 그룹 및 구독의 Compute 인스턴스에 대한 유용한 정보를 열거합니다. |