AWS Pentesting
基本情報
AWS 環境の ペンテストを開始する前に、AWSの動作について理解し、ミス構成を見つけて悪用する方法を理解するのに役立つ 基本事項 がいくつかあります。
組織階層、IAMなどの概念は以下で説明されています:
pageAWS - Basic Information学習用ラボ
攻撃をシミュレートするためのツール:
AWS ペンテスター/Red Team 方法論
AWS環境を監査するためには、使用されている サービス、 公開されているもの、誰が 何にアクセス権を持っているか、内部AWSサービスと 外部サービス がどのように接続されているかを知ることが非常に重要です。
Red Teamの観点から、AWS環境を 侵害する最初のステップ はいくつかの 資格情報を取得すること です。以下に、それを行うためのいくつかのアイデアがあります:
github(または類似の)での 情報漏洩 - OSINT
ソーシャル エンジニアリング
パスワードの再利用(パスワードの漏洩)
AWSホストされたアプリケーションの脆弱性
サーバーサイドリクエストフォージェリ メタデータエンドポイントへのアクセス
ローカルファイル読み取り
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
3rd parties 侵害
内部 従業員
Cognito 資格情報
または 認証されていないサービス を侵害することで:
pageAWS - Unauthenticated Enum & Accessまたは レビュー を行っている場合は、次の役割で 資格情報を要求 するだけです:
pageAWS - Permissions for a Pentest資格情報を取得した後、それらの資格情報が 誰に属しているか、および 何にアクセス権を持っているか を知る必要があるため、いくつかの基本的な列挙を実行する必要があります:
基本列挙
SSRF
AWS内のマシンでSSRFを見つけた場合は、トリックについてこのページをチェックしてください:
Whoami
最初に知る必要があることの1つは、自分が誰であるか(どのアカウントにいるか、AWS環境の他の情報など)です:
企業はcanary tokensを使用して、トークンが盗まれ使用されているときを特定する場合があります。トークンを使用する前に、そのトークンがcanary tokenかどうかを確認することをお勧めします。 詳細についてはこのページをご覧ください。
組織の列挙
pageAWS - Organizations EnumIAMの列挙
十分な権限がある場合、AWSアカウント内の各エンティティの特権を確認することで、自分や他のエンティティが何ができるか、どのように特権を昇格できるかを理解するのに役立ちます。
IAMを列挙する権限がない場合、ブルートフォース攻撃を行って特権を特定できます。 列挙とブルートフォース攻撃の方法については、以下を確認してください:
pageAWS - IAM, Identity Center & SSO Enum今、資格情報についての情報を持っている(もしレッドチームであれば、検出されていないことを願います)。環境で使用されているサービスを把握する時がきました。 以下のセクションでは、いくつかの一般的なサービスを列挙する方法を確認できます。
サービスの列挙、ポストエクスプロイテーション&永続性
AWSには驚くほど多くのサービスがあり、以下のページでは、基本情報、列挙のチートシート、検出を回避する方法、永続性を確保する方法、および他のポストエクスプロイテーショントリックについて、いくつかのサービスについて説明しています:
pageAWS - Servicesすべての作業を手動で行う必要はありません。この投稿の下には、自動ツールに関するセクションがあります。
さらに、この段階で認証されていないユーザーに公開されているサービスがさらに見つかるかもしれません。これらを悪用できるかもしれません:
pageAWS - Unauthenticated Enum & Access特権昇格
少なくとも自分の権限をさまざまなリソース上で確認できる場合、さらなる権限を取得できるかどうかを確認できます。少なくとも以下で指定された権限に焦点を当てる必要があります:
pageAWS - Privilege Escalationインターネットに公開されたサービス
AWSサービスを列挙する際に、いくつかのサービスがインターネットに要素を公開していることがわかるかもしれません(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悪用フレームワークです。それは列挙し、誤構成を見つけ、悪用することができます。https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134内の**
user_escalation_methods
辞書内で特権権限の定義**を見つけることができます。pacuは自分自身の特権昇格パスのみをチェックします(アカウント全体ではありません)。
PMapper: Principal Mapper (PMapper)は、AWSアカウントまたはAWS組織のAWS Identity and Access Management (IAM)の構成におけるリスクを特定するためのスクリプトおよびライブラリです。アカウント内の異なるIAMユーザーとロールを有向グラフとしてモデル化し、これにより特権昇格のチェックや、攻撃者がAWSのリソースやアクションにアクセスするために取る可能性のある代替経路をチェックできます。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: Cloud Security Suite(Python2.7を使用し、メンテナンスされていないようです)
Zeus: ZeusはAWS EC2 / S3 / CloudTrail / CloudWatch / KMSの最適なハードニングプラクティスのための強力なツールです(メンテナンスされていないようです)。システム内でデフォルトで構成された認証情報のみをチェックします。
定期的な監査
cloud-custodian: Cloud Custodianはパブリッククラウドアカウントとリソースを管理するためのルールエンジンです。ユーザーは適切に管理されたセキュアでコスト最適化されたクラウドインフラストラクチャを有効にするポリシーを定義できます。これにより、組織が持つ多くのアドホックスクリプトが統合され、統一されたメトリクスとレポーティングを備えた軽量かつ柔軟なツールにまとめられます。
pacbot: ポリシーアズコードボット(PacBot)はクラウドの連続的なコンプライアンス監視、コンプライアンスレポーティング、セキュリティオートメーションのためのプラットフォームです。PacBotでは、セキュリティとコンプライアンスポリシーがコードとして実装されます。PacBotによって発見されたすべてのリソースは、これらのポリシーに対して評価され、ポリシーの遵守度を評価します。PacBotの自動修正フレームワークは、事前に定義されたアクションを取ることでポリシー違反に自動的に対応する機能を提供します。
streamalert: StreamAlertは、あなたが定義するデータソースとアラートロジックを使用して、任意の環境からデータを取り込み、分析し、アラートすることを可能にするサーバーレスのリアルタイムデータ分析フレームワークです。コンピュータセキュリティチームは、StreamAlertを使用して、インシデントの検出と対応のために毎日テラバイトのログデータをスキャンします。
DEBUG: AWS CLIリクエストのキャプチャ
参考文献
最終更新