AWS Pentesting
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
AWS環境のペンテストを開始する前に、AWSの動作について知っておくべき基本的なことがいくつかあります。これにより、何をすべきか、誤設定を見つける方法、そしてそれをどのように悪用するかを理解するのに役立ちます。
組織の階層、IAM、その他の基本的な概念については、以下で説明されています:
AWS - Basic Information攻撃をシミュレートするためのツール:
AWS環境を監査するためには、どのサービスが使用されているか、何が公開されているか、誰が何にアクセスできるか、そして内部AWSサービスと外部サービスがどのように接続されているかを知ることが非常に重要です。
レッドチームの観点から、AWS環境を侵害するための最初のステップは、いくつかの資格情報を取得することです。以下はその方法のいくつかのアイデアです:
GitHub(または類似のもの)での漏洩 - OSINT
ソーシャルエンジニアリング
パスワードの再利用(パスワード漏洩)
AWSホストアプリケーションの脆弱性
サーバーサイドリクエストフォージェリでメタデータエンドポイントへのアクセス
ローカルファイルの読み取り
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
第三者の侵害
内部従業員
Cognitoの資格情報
または、認証されていないサービスを侵害することによって:
AWS - Unauthenticated Enum & Accessまたは、レビューを行っている場合は、これらの役割で資格情報を要求することができます:
AWS - Permissions for a Pentest資格情報を取得した後は、その資格情報が誰に属しているか、何にアクセスできるかを知る必要があるため、いくつかの基本的な列挙を行う必要があります:
AWS内のマシンでSSRFを見つけた場合は、以下のページでトリックを確認してください:
最初に知っておくべきことの一つは、あなたが誰であるか(どのアカウントにいるか、AWS環境に関する他の情報)です:
企業はカナリアトークンを使用してトークンが盗まれ使用されているかどうかを特定する場合があります。使用する前にトークンがカナリアトークンであるかどうかを確認することをお勧めします。 詳細についてはこのページを確認してください。
十分な権限がある場合、AWSアカウント内の各エンティティの権限を確認することは、あなたや他のアイデンティティが何をできるか、そして権限を昇格させる方法を理解するのに役立ちます。
IAMを列挙するための十分な権限がない場合、ブルートフォースで盗むことができます。 列挙とブルートフォースの方法については以下を確認してください:
AWS - IAM, Identity Center & SSO Enum資格情報に関する情報を持っている(そして、もしあなたがレッドチームであれば、幸運にも検出されていないことを願っています)。環境で使用されているサービスを特定する時が来ました。 次のセクションでは、一般的なサービスを列挙する方法を確認できます。
AWSには驚くべき数のサービスがあります。次のページでは、基本情報、列挙のチートシート**、**検出を回避する方法、永続性を取得する方法、およびそれらのいくつかに関する他のポストエクスプロイトのトリックを見つけることができます:
AWS - Servicesすべての作業を手動で行う必要はないことに注意してください。以下の投稿には、自動ツールに関するセクションがあります。
さらに、この段階で認証されていないユーザーに公開されているサービスを発見するかもしれません。これらを悪用できるかもしれません:
AWS - Unauthenticated Enum & Access異なるリソースに対して少なくとも自分の権限を確認できる場合、さらに権限を取得できるかどうかを確認できます。少なくとも以下に示す権限に焦点を当てるべきです:
AWS - Privilege EscalationAWSサービスを列挙しているときに、いくつかのサービスがインターネットに要素を公開しているのを見つけたかもしれません(VM/コンテナのポート、データベースやキューサービス、スナップショットやバケットなど)。 ペンテスター/レッドチームのメンバーとして、これらに機密情報/脆弱性がないか常に確認すべきです。これにより、AWSアカウントへのさらなるアクセスが得られるかもしれません。
この本では、公開されているAWSサービスを見つける方法とそれらを確認する方法に関する情報を見つけることができます。公開されているネットワークサービスの脆弱性を見つける方法については、特定のサービスを以下で検索することをお勧めします:
管理アカウントが組織内に新しいアカウントを作成すると、新しいアカウントに新しいロールが作成され、デフォルトで**OrganizationAccountAccessRole
と名付けられ、管理アカウントに新しいアカウントにアクセスするためのAdministratorAccess**ポリシーが付与されます。
したがって、子アカウントに管理者としてアクセスするには、次のことが必要です:
管理アカウントを妥協し、子アカウントのIDとロールの名前(デフォルトではOrganizationAccountAccessRole)を見つけて、管理アカウントが管理者としてアクセスできるようにします。
子アカウントを見つけるには、AWSコンソールの組織セクションに移動するか、aws organizations list-accounts
を実行します。
ロールの名前を直接見つけることはできないため、すべてのカスタムIAMポリシーを確認し、以前に発見した子アカウントに対するsts:AssumeRole
を許可するものを検索します。
子アカウントのロールに対するsts:AssumeRole
権限を持つ管理アカウントのプリンシパルを妥協します(管理アカウントから誰でもなりすますことを許可している場合でも、外部アカウントであるため、特定のsts:AssumeRole
権限が必要です)。
aws-recon:Rubyで書かれたマルチスレッドのAWSセキュリティに特化したインベントリ収集ツール。
cloudlist: Cloudlistは、クラウドプロバイダーからアセット(ホスト名、IPアドレス)を取得するためのマルチクラウドツールです。
cloudmapper: CloudMapperは、Amazon Web Services(AWS)環境を分析するのに役立ちます。現在、セキュリティ問題の監査を含む、はるかに多くの機能が含まれています。
cartography: Cartographyは、インフラストラクチャ資産とそれらの関係を、Neo4jデータベースによって強化された直感的なグラフビューに統合するPythonツールです。
starbase: Starbaseは、クラウドインフラストラクチャ、SaaSアプリケーション、セキュリティコントロールなどのサービスやシステムから資産と関係を収集し、Neo4jデータベースに基づいた直感的なグラフビューに表示します。
aws-inventory: (python2を使用) これは、アカウント内で作成されたすべてのAWSリソースを発見しようとするツールです。
aws_public_ips: これは、AWSアカウントに関連付けられたすべてのパブリックIPアドレス(IPv4/IPv6の両方)を取得するツールです。
SkyArk: スキャンされたAWS環境で最も特権のあるユーザーを発見します。AWSシャドウ管理者を含みます。powershellを使用します。特権ポリシーの定義は、https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1の**Check-PrivilegedPolicy
**関数内にあります。
pacu: Pacuは、クラウド環境に対する攻撃的セキュリティテストのために設計されたオープンソースのAWSエクスプロイトフレームワークです。列挙、ミスコンフィギュレーションの発見、そしてそれらをエクスプロイトすることができます。特権の定義は、**user_escalation_methods
**辞書内のhttps://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134で見つけることができます。
pacuは自分のプライベスパスのみをチェックします(アカウント全体ではありません)。
PMapper: Principal Mapper (PMapper) は、AWS アカウントまたは AWS 組織の AWS Identity and Access Management (IAM) の設定におけるリスクを特定するためのスクリプトおよびライブラリです。これは、アカウント内の異なる IAM ユーザーとロールを有向グラフとしてモデル化し、特権昇格のチェックや、攻撃者が AWS 内のリソースやアクションにアクセスするために取る可能性のある代替経路を確認できるようにします。privesc パスを見つけるために使用される権限は、https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing の _edges.py
で終わるファイル名にあります。
cloudsplaining: Cloudsplainingは、最小特権の違反を特定し、リスク優先のHTMLレポートを生成するAWS IAMセキュリティ評価ツールです。 それは、潜在的に過剰な権限を持つ顧客、インラインおよびaws ポリシー、およびそれらにアクセスできるプリンシパルを示します。(それは権限昇格だけでなく、他の興味深い権限もチェックするため、使用を推奨します)。
cloudjack: CloudJackは、分離されたRoute53とCloudFrontの構成の結果として、AWSアカウントのサブドメインハイジャック脆弱性を評価します。
ccat: ECRリポジトリのリスト -> ECRリポジトリをプル -> バックドアを仕掛ける -> バックドアを仕掛けたイメージをプッシュ
Dufflebag: Dufflebagは、公開されたElastic Block Storage(EBS)スナップショットを通じて、偶然に残された可能性のある秘密を検索するツールです。
cloudsploit: AquaのCloudSploitは、Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform (GCP)、Oracle Cloud Infrastructure (OCI)、およびGitHubを含むクラウドインフラストラクチャアカウントのセキュリティリスクを検出するために設計されたオープンソースプロジェクトです(ShadowAdminsは探しません)。
Prowler: Prowlerは、AWSのセキュリティベストプラクティスの評価、監査、インシデントレスポンス、継続的な監視、ハードニング、およびフォレンジック準備を行うためのオープンソースのセキュリティツールです。
CloudFox: CloudFoxは、未知のクラウド環境での状況認識を高めるのに役立ちます。これは、ペネトレーションテスターや他の攻撃的セキュリティ専門家がクラウドインフラストラクチャ内の悪用可能な攻撃経路を見つけるために作成されたオープンソースのコマンドラインツールです。
ScoutSuite: Scout Suiteは、クラウド環境のセキュリティ姿勢評価を可能にするオープンソースのマルチクラウドセキュリティ監査ツールです。
cs-suite: クラウドセキュリティスイート(python2.7を使用し、メンテナンスされていないようです)
Zeus: ZeusはAWS EC2 / S3 / CloudTrail / CloudWatch / KMSのベストハードニングプラクティスのための強力なツールです(メンテナンスされていないようです)。システム内のデフォルト設定されたクレデンシャルのみをチェックします。
cloud-custodian: Cloud Custodianは、パブリッククラウドアカウントとリソースを管理するためのルールエンジンです。ユーザーは適切に管理されたクラウドインフラストラクチャを有効にするためのポリシーを定義できます。これは、組織が持つ多くのアドホックスクリプトを軽量で柔軟なツールに統合し、統一されたメトリクスとレポートを提供します。
pacbot: コードとしてのポリシーボット(PacBot)は、クラウドのための継続的なコンプライアンス監視、コンプライアンスレポート、およびセキュリティ自動化のプラットフォームです。PacBotでは、セキュリティとコンプライアンスのポリシーがコードとして実装されます。PacBotによって発見されたすべてのリソースは、これらのポリシーに対して評価され、ポリシーの適合性が測定されます。PacBotの自動修正フレームワークは、事前定義されたアクションを実行することによってポリシー違反に自動的に対応する能力を提供します。
streamalert: StreamAlertはサーバーレスのリアルタイムデータ分析フレームワークであり、データを取り込み、分析し、アラートを出すことを可能にします。定義したデータソースとアラートロジックを使用します。コンピュータセキュリティチームは、StreamAlertを使用して毎日テラバイトのログデータをスキャンし、インシデントの検出と対応を行います。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)