AWS Pentesting
基本情報
AWS環境のペンテストを開始する前に、AWSの動作についていくつかの基本的なことを知っておく必要があります。これにより、何をすべきか、どのようにミスコンフィギュレーションを見つけ、それをどのように悪用するかを理解するのに役立ちます。
組織の階層、IAMなどの基本的な概念は以下で説明されています:
AWS - Basic Information学習用ラボ
攻撃をシミュレートするツール:
AWSペンテスター/レッドチームの方法論
AWS環境を監査するためには、どのサービスが使用されているか、何が公開されているか、誰が何にアクセスできるか、内部AWSサービスと外部サービスがどのように接続されているかを知ることが非常に重要です。
レッドチームの観点から、AWS環境を侵害する最初のステップは、いくつかのクレデンシャルを取得することです。以下にその方法のいくつかを示します:
github(または類似のもの)でのリーク - OSINT
ソーシャルエンジニアリング
パスワードの再利用(パスワードリーク)
AWSホストアプリケーションの脆弱性
メタデータエンドポイントへのアクセスを持つServer Side Request Forgery
ローカルファイル読み取り
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
サードパーティの侵害
内部従業員
Cognito クレデンシャル
または、公開されている認証されていないサービスを侵害することによって:
AWS - Unauthenticated Enum & Accessまたは、レビューを行っている場合は、これらのロールでクレデンシャルを要求することができます:
AWS - Permissions for a Pentestクレデンシャルを取得した後、それらのクレデンシャルが誰に属しているか、および何にアクセスできるかを知る必要があるため、基本的な列挙を行う必要があります:
基本的な列挙
SSRF
AWS内のマシンでSSRFを見つけた場合、このページでトリックを確認してください:
Whoami
最初に知るべきことの一つは、自分が誰であるか(どのアカウントにいるか、AWS環境に関するその他の情報)です:
企業はcanary tokensを使用してトークンが盗まれて使用されていることを識別する場合があります。使用する前にトークンがcanary tokenかどうかを確認することをお勧めします。 詳細はこのページを参照してください。
Org Enumeration
AWS - Organizations EnumIAM Enumeration
十分な権限がある場合、AWSアカウント内の各エンティティの特権を確認することで、自分や他のアイデンティティが何をできるか、そして特権をエスカレートする方法を理解するのに役立ちます。
IAMを列挙するための十分な権限がない場合、ブルートフォースで盗むことでそれらを把握することができます。 列挙とブルートフォースの方法については以下を参照してください:
AWS - IAM, Identity Center & SSO Enum今、自分の資格情報についての情報を持っている(そして赤チームであれば検出されていないことを願っています)。次は、環境で使用されているサービスを特定する時です。 以下のセクションでは、一般的なサービスを列挙する方法をいくつか確認できます。
Services Enumeration, Post-Exploitation & Persistence
AWSには驚くほど多くのサービスがあります。以下のページでは、基本情報、列挙チートシート、検出を回避する方法、持続性を得る方法、その他のポストエクスプロイトトリックについていくつか紹介しています:
AWS - Servicesすべての作業を手動で行う必要はないことに注意してください。この投稿の下部に自動化ツールについてのセクションがあります:automatic tools。
さらに、この段階で認証されていないユーザーに公開されているサービスを発見したかもしれません。それらを悪用できるかもしれません:
AWS - Unauthenticated Enum & AccessPrivilege Escalation
少なくとも自分の権限をさまざまなリソースに対して確認できる場合、さらに権限を取得できるかどうかを確認することができます。少なくとも以下の権限に焦点を当てるべきです:
AWS - Privilege EscalationPublicly Exposed Services
AWSサービスを列挙している間に、いくつかのサービスがインターネットに要素を公開している(VM/コンテナのポート、データベースやキューサービス、スナップショットやバケットなど)ことを発見したかもしれません。 ペンテスター/赤チームとして、常に機密情報/脆弱性を見つけることができるかどうかを確認するべきです。これらはAWSアカウントへのさらなるアクセスを提供するかもしれません。
この本では、公開されているAWSサービスを見つける方法とそれらを確認する方法についての情報を見つけることができます。公開されているネットワークサービスの脆弱性を見つける方法については、特定のサービスを検索することをお勧めします:
Compromising the Organization
From the root/management account
管理アカウントが組織内に新しいアカウントを作成すると、新しいアカウントに新しいロールが作成され、デフォルトで**OrganizationAccountAccessRole
と名付けられ、管理アカウントが新しいアカウントにアクセスするためのAdministratorAccess**ポリシーが付与されます。
したがって、子アカウントに管理者としてアクセスするには、以下が必要です:
管理アカウントを侵害し、子アカウントのIDとロールの名前(デフォルトではOrganizationAccountAccessRole)を見つけ、管理アカウントが管理者としてアクセスできるようにします。
子アカウントを見つけるには、awsコンソールの組織セクションに移動するか、
aws organizations list-accounts
を実行します。ロールの名前を直接見つけることはできないため、すべてのカスタムIAMポリシーを確認し、
sts:AssumeRole
が前述の子アカウントに対して許可されているものを探します。管理アカウント内の**
sts:AssumeRole
権限を持つプリンシパルを侵害**し、子アカウント内のロールに対して(管理アカウントからの誰でも偽装を許可している場合でも、外部アカウントとして特定のsts:AssumeRole
権限が必要です)。
Automated Tools
Recon
aws-recon: Rubyで書かれたマルチスレッドのAWSセキュリティフォーカスのインベントリ収集ツール。
cloudlist: Cloudlistは、Cloud ProvidersからAssets(Hostnames、IP Addresses)を取得するためのマルチクラウドツールです。
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の両方)を取得するツールです。
Privesc & Exploiting
SkyArk: スキャンされたAWS環境で最も特権のあるユーザーを発見し、AWS Shadow Adminsを含みます。powershellを使用します。特権ポリシーの定義は、関数**
Check-PrivilegedPolicy
**内にあります。https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1で確認できます。pacu: Pacuは、クラウド環境に対する攻撃的なセキュリティテストのために設計されたオープンソースのAWSエクスプロイトフレームワークです。列挙し、ミスコンフィギュレーションを見つけてエクスプロイトすることができます。特権権限の定義は、https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134内の**
user_escalation_methods
**辞書にあります。pacuは自分自身のprivescsパスのみをチェックすることに注意してください(アカウント全体ではありません)。
PMapper: Principal Mapper (PMapper) は、AWS アカウントまたは AWS 組織の AWS Identity and Access Management (IAM) の設定におけるリスクを特定するためのスクリプトおよびライブラリです。アカウント内の異なる IAM ユーザーとロールを有向グラフとしてモデル化し、privilege escalation や攻撃者が AWS 内のリソースやアクションにアクセスするために取る可能性のある代替経路をチェックすることができます。permissions used to find privesc パスを確認するには、https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing の
_edges.py
で終わるファイル名を確認してください。
cloudsplaining: Cloudsplainingは、最小特権の違反を特定し、リスク優先のHTMLレポートを生成するAWS IAMセキュリティ評価ツールです。 これは、潜在的に過剰な権限を持つ顧客、インラインおよびawsのポリシー、およびそれらにアクセスできるプリンシパルを示します。(privescだけでなく、他の興味深い権限もチェックするため、使用を推奨します)。
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: Cloud Security Suite (uses python2.7 and looks unmaintained)
Zeus: Zeus is a powerful tool for AWS EC2 / S3 / CloudTrail / CloudWatch / KMS best hardening practices (looks unmaintained). It checks only default configured creds inside the system.
Constant Audit
cloud-custodian: Cloud Custodianは、パブリッククラウドアカウントとリソースを管理するためのルールエンジンです。ユーザーがセキュアでコスト最適化されたクラウドインフラストラクチャを実現するためのポリシーを定義することを可能にします。多くのアドホックスクリプトを軽量で柔軟なツールに統合し、統一されたメトリクスとレポートを提供します。
pacbot: Policy as Code Bot (PacBot)は、クラウドの継続的なコンプライアンス監視、コンプライアンスレポート、およびセキュリティ自動化のためのプラットフォームです。PacBotでは、セキュリティおよびコンプライアンスのポリシーがコードとして実装されています。PacBotによって発見されたすべてのリソースは、これらのポリシーに対して評価され、ポリシーの準拠度が測定されます。PacBotの自動修正フレームワークは、事前定義されたアクションを実行することでポリシー違反に自動的に対応する機能を提供します。
streamalert: StreamAlertはサーバーレスのリアルタイムデータ分析フレームワークであり、定義したデータソースとアラートロジックを使用して、任意の環境からデータを取り込み、分析し、アラートを発することができます。コンピュータセキュリティチームは、StreamAlertを使用して毎日テラバイトのログデータをスキャンし、インシデントの検出と対応を行います。
DEBUG: Capture AWS cli requests
参考文献
Last updated