IAMhounddogはVirtue Securityが提供するオープンソースツールで、AWSアカウント内のIdentity and Access Management(IAM)プリンシパル、ロール、ポリシー、リソース間の関係をマッピングし、二次的な権限昇格の機会を明らかにします。二次的な権限昇格とは、低権限のプリンシパルがサービス間の正当なアクションを連鎖させることで、直接的な一次権限を必要とせずに高権限のターゲットへ到達できるシナリオを指します。IAMhounddogはOpenGraph互換のエクスポートを生成し、BloodHoundなどに取り込むことで、オペレーターが大規模な権限パスを可視化・クエリできるようにします。

なぜ今重要なのか
クラウドのアイデンティティは広く分散しており、リソース間の関係は単一ポリシーの確認だけでは見えない複雑な攻撃経路を生み出します。リレーションシップグラフを生成するツールは、PassRoleの悪用や、特権ロールを持つ修正可能な関数、間接的に利用可能なリソースバウンドロールなどの昇格チェーンの発見を加速します。レッドチームやクラウドリコン担当者にとって、手動でのマッピング作業を大幅に削減し、ハイバリューターゲットや攻撃経路の特定を迅速化します。
特徴
- Lambda、EC2、ECS、RDS、CloudFormation、CodeBuildなど、昇格に関与しやすいサービスを横断して、IAMプリンシパル、アタッチ・インラインポリシー、信頼関係、関連リソースロールを収集します。
- BloodHoundや互換グラフツールへの取り込み用にOpenGraph互換エクスポートを出力します。
- 環境変数または名前付きAWSプロファイル経由での収集に対応。包括的なマッピングにはSecurityAuditやReadOnlyAccessなどの読み取りレベルのプリンシパルが必要です。
- BloodHoundへのバンドルクエリのインポートや、ローカル可視化用のオプション統合手順のためのヘルパーを含みます。
インストール
リポジトリには、プロジェクトREADMEに記載されたシンプルなGoによるインストール方法が提供されています。インストールコマンド(そのまま使用可):
|
go install github.com/VirtueSecurity/IAMhounddog@latest |
使い方
IAMhounddogはモジュール指向で、READMEに典型的な収集・インポートのワークフローが記載されています。READMEからの使用手順(そのまま引用):
|
インストール:go install github.com/VirtueSecurity/IAMhounddog@latest AWS 認証情報を 環境変数 またはAWS プロファイルで設定 ターゲットアカウント/プロファイルに対してツールを実行し、output.jsonを生成 output.jsonをBloodHoundにインポート(Administration>File Ingest) 必要に応じてセットアップヘルパーを実行し、アイコンやバンドルクエリをローカルBloodHoundインスタンスに登録 |
注意: リポジトリREADMEには完全な--help出力は含まれていません。正確なCLIフラグや自動化向け例を記録するには、インストール済みバイナリをローカルで-hまたは--help付きで実行し、その出力をそのまま公開用ドキュメントに貼り付けてください。
ハンズオンウォークスルー
収集とグラフ生成のワークフロー(オペレーター向け簡易手順):
- 認証情報の準備: 収集に使用するプリンシパルが読み取りレベルの権限(例: SecurityAuditやReadOnlyAccess)を持っていることを確認し、
AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYを設定、または名前付きプロファイルを使用します。 - 収集の実行: IAMhounddogを実行し、プリンシパル、ロール、インライン・アタッチポリシー、リソースロールリンクを列挙します。ツールはOpenGraph形式のJSONエクスポートを書き出します。
- BloodHoundへのインポート: BloodHoundを開き、Administration > File IngestからJSONファイルをインポートします。グラフ上にプリンシパル、ロール、リソース関係が表示され、経路探索クエリが可能です。
- 分析: 経路や最短経路クエリを実行し、低権限プリンシパルからAdministratorやOrganizationAccountAccessRoleなどの高権限ロールへのチェーンを可視化します。
権限昇格パスの例
実践的な昇格例をステップで要約:
- 初期侵入: オペレーターが開発者グループのユーザーや、Lambda関数の修正権限を持つプリンシパルの認証情報を所持。
- マッピング: IAMhounddogで、実行ロールが広範な権限を持つLambda関数を発見。開発者グループが関数コードを更新可能と判明。
- 計画: 特定されたチェーンは「開発者プリンシパル → Lambda関数更新 → 特権付きLambda実行ロール → 特権アクション実行」。
- 実行: オペレーターが関数を更新し、必要な特権アクションやシークレットの持ち出しを行う短いタスクを追加して関数をトリガー。
- 運用上の注意: 不要なAPIコールを最小限にし、可能な限りテストアカウントで実施、検証後はアーティファクトを削除。
レッドチームでの有用性とトレードオフ
IAMhounddogは、手作業では時間のかかる連鎖的な権限昇格経路の発見を効率化します。トレードオフとして、包括的なグラフ収集には読み取り権限を持つプリンシパルが必要であり、実行時のコンテキスト制御により利用できないグラフエッジから誤検知が発生するリスクがあります。グラフ結果は仮説として扱い、リソースレベルの検証を経てから実際の攻撃を試みてください。
検知と対策
検知の指針
- Lambda、CloudFormation、CodeBuildなど、コードやロールバインディングを含むリソースの変更イベントをアラート化。
- 導入されたポリシー変更を監視。
iam:PassRole、iam:PutRolePolicyやワイルドカードアクションがロールやグループに付与された場合など。 - 実行ロールやクロスアカウント信頼関係の割り当て・変更APIコールを記録・レビュー。
対策の指針
- 最小権限を徹底し、開発者グループに補完的な制御なしで広範なサービス管理ポリシーを付与しない。
- 本番環境変更操作には署名や承認ゲートを導入し、デプロイパイプラインを強化。
- リソース条件やセッションポリシーを活用し、ロールが実行できるアクションを制限(リソースにアタッチされていても)。
既存ツールとの統合
IAMhounddogはBloodHoundでの可視化分析に対応したOpenGraphスキーマデータを出力します。既にActive Directory向けのグラフ分析を導入しているチームでは、クラウドIAM経路探索・ハンティングにも一貫したモデルを提供します。IAMhounddogのエクスポートを実行時テレメトリやCloudTrail分析と組み合わせ、高信頼かつ実際に悪用可能な経路の優先付けを検討してください。
まとめ
IAMhounddogはIAMとリソースの関係をクエリ可能なグラフデータに変換し、二次的な権限昇格の機会を可視化する実践的なマッピングツールです。レッドチームやクラウドリコン担当者にとって、手動作業を削減し、BloodHound中心の分析ワークフローに自然に組み込めます。自動化やサンプルコマンドを公開する前に、ツールのローカル--help出力を取得し、スクリプト用の正確なフラグを記録してください。
詳細やIAMhounddogのダウンロードはこちら: https://github.com/VirtueSecurity/IAMhounddog
読者とのやりとり
翻訳元: https://www.darknet.org.uk/2025/10/iamhounddog-practical-aws-iam-relationship-mapping-for-red-teams/