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環境を監査するためには、どのサービスが使用されているか、何が公開されているか、誰が何にアクセスできるか、そして内部AWSサービスと外部サービスがどのように接続されているかを知ることが非常に重要です。
レッドチームの観点から、AWS環境を侵害するための最初のステップは、いくつかの資格情報を取得することです。以下はその方法のいくつかです:
GitHub(または類似のもの)での漏洩 - OSINT
ソーシャルエンジニアリング
パスワードの再利用(パスワード漏洩)
AWSホストアプリケーションの脆弱性
サーバーサイドリクエストフォージェリでメタデータエンドポイントへのアクセス
ローカルファイル読み取り
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
第三者の侵害
内部従業員
Cognito資格情報
または、認証されていないサービスを侵害することによって:
または、レビューを行っている場合は、これらの役割で資格情報を要求することができます:
資格情報を取得した後は、それらの資格情報が誰に属しているか、および何にアクセスできるかを知る必要があるため、いくつかの基本的な列挙を行う必要があります:
AWS内のマシンでSSRFを見つけた場合は、以下のページでトリックを確認してください:
最初に知っておくべきことの一つは、あなたが誰であるか(どのアカウントにいるか、AWS環境に関する他の情報)です:
企業はカナリアトークンを使用してトークンが盗まれ使用されているときに特定することがあります。使用する前にトークンがカナリアトークンであるかどうかを確認することをお勧めします。 詳細についてはこのページを確認してください。
十分な権限がある場合、AWSアカウント内の各エンティティの権限を確認することは、あなたや他のアイデンティティが何をできるか、そして権限を昇格させる方法を理解するのに役立ちます。
IAMを列挙するための十分な権限がない場合、ブルートフォースで盗むことができます。 列挙とブルートフォースの方法については以下を確認してください:
資格情報に関する情報を持っている(そして、もしあなたがレッドチームであれば、希望的には検出されていない)今、環境で使用されているサービスを特定する時です。 次のセクションでは、一般的なサービスを列挙する方法を確認できます。
AWSには驚くべき数のサービスがあります。次のページでは、基本情報、列挙のチートシート**、**検出を回避する方法、持続性を取得する方法、およびそれらのいくつかに関する他のポストエクスプロイトのトリックを見つけることができます:
すべての作業を手動で行う必要はないことに注意してください。以下の投稿では、自動ツールに関するセクションを見つけることができます。
さらに、この段階で認証されていないユーザーに公開されているサービスを発見するかもしれません。これらを悪用できるかもしれません:
異なるリソースに対して少なくとも自分の権限を確認できる場合、さらに権限を取得できるかどうかを確認することができます。少なくとも以下に示す権限に焦点を当てるべきです:
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 Shadow Adminsを含みます。powershellを使用します。Check-PrivilegedPolicy
関数内で特権ポリシーの定義を見つけることができます。https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1。
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)