mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-01 18:44:56 -07:00
Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## 基本情報
|
||||
|
||||
**AWS** 環境の **ペンテスト** を開始する前に、AWS の仕組みについて知っておくべき **基本的なこと** がいくつかあります。これにより、何をすべきか、誤設定を見つける方法、そしてそれをどのように悪用するかを理解するのに役立ちます。
|
||||
**AWS** 環境の **ペンテスト** を開始する前に、AWS の仕組みについて知っておくべき **基本的なこと** がいくつかあります。これにより、何をすべきか、誤設定をどのように見つけるか、そしてそれをどのように悪用するかを理解するのに役立ちます。
|
||||
|
||||
組織の階層、IAM、その他の基本的な概念については、以下で説明されています:
|
||||
|
||||
@@ -36,22 +36,22 @@ AWS 環境を監査するためには、どの **サービスが使用されて
|
||||
- github(または類似のもの)での **漏洩** - OSINT
|
||||
- **ソーシャル** エンジニアリング
|
||||
- **パスワード** の再利用(パスワード漏洩)
|
||||
- AWS ホストアプリケーションの脆弱性
|
||||
- [**サーバーサイドリクエストフォージェリ**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) メタデータエンドポイントへのアクセス
|
||||
- AWS ホスティングアプリケーションの脆弱性
|
||||
- [**サーバーサイドリクエストフォージェリ**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) メタデータエンドポイントへのアクセス
|
||||
- **ローカルファイル読み取り**
|
||||
- `/home/USERNAME/.aws/credentials`
|
||||
- `C:\Users\USERNAME\.aws\credentials`
|
||||
- 第三者の **侵害**
|
||||
- **内部** 従業員
|
||||
- [**Cognito** ](aws-services/aws-cognito-enum/#cognito)資格情報
|
||||
- [**Cognito** ](aws-services/aws-cognito-enum/index.html#cognito)資格情報
|
||||
|
||||
または、**認証されていないサービス** を侵害することによって:
|
||||
または **認証されていないサービス** を侵害することによって:
|
||||
|
||||
{{#ref}}
|
||||
aws-unauthenticated-enum-access/
|
||||
{{#endref}}
|
||||
|
||||
または、**レビュー** を行っている場合は、これらの役割で **資格情報を要求する** ことができます:
|
||||
または **レビュー** を行っている場合は、これらの役割で **資格情報を要求する** ことができます:
|
||||
|
||||
{{#ref}}
|
||||
aws-permissions-for-a-pentest.md
|
||||
@@ -67,7 +67,7 @@ aws-permissions-for-a-pentest.md
|
||||
AWS 内のマシンで SSRF を見つけた場合は、トリックについてはこのページを確認してください:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### Whoami
|
||||
@@ -100,9 +100,9 @@ aws-services/aws-organizations-enum.md
|
||||
|
||||
### IAMの列挙
|
||||
|
||||
十分な権限がある場合は、**AWSアカウント内の各エンティティの権限を確認すること**が、あなたや他のアイデンティティが何をできるか、また**権限を昇格させる方法**を理解するのに役立ちます。
|
||||
十分な権限がある場合、**AWSアカウント内の各エンティティの権限を確認すること**は、あなたや他のアイデンティティが何をできるか、また**権限を昇格させる方法**を理解するのに役立ちます。
|
||||
|
||||
IAMを列挙するための十分な権限がない場合は、**ブルートフォースで盗む**ことでそれらを特定できます。\
|
||||
IAMを列挙するための十分な権限がない場合、**ブルートフォースで盗む**ことでそれらを特定できます。\
|
||||
**列挙とブルートフォースの方法**については以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
@@ -110,7 +110,7 @@ aws-services/aws-iam-enum.md
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> 現在、**あなたの資格情報に関する情報を持っている**(そして、もしあなたがレッドチームであれば、幸運にも**検出されていない**ことを願っています)。環境で使用されているサービスを特定する時が来ました。\
|
||||
> 現在、**あなたの資格情報に関する情報を持っている**(そして、もしあなたがレッドチームであれば、**検出されていないことを願っています**)。環境で使用されているサービスを特定する時が来ました。\
|
||||
> 次のセクションでは、**一般的なサービスを列挙する方法**をいくつか確認できます。
|
||||
|
||||
## サービスの列挙、ポストエクスプロイト & 永続性
|
||||
@@ -121,9 +121,9 @@ AWSには驚くべき数のサービスがあり、以下のページでは**基
|
||||
aws-services/
|
||||
{{#endref}}
|
||||
|
||||
すべての作業を**手動で**行う必要はないことに注意してください。この投稿の下部には、[**自動ツール**](./#automated-tools)に関する**セクション**があります。
|
||||
手動で**すべての作業を行う必要はありません**。以下の投稿では、[**自動ツール**](#automated-tools)に関する**セクション**を見つけることができます。
|
||||
|
||||
さらに、この段階で**認証されていないユーザーに公開されているサービスが**見つかるかもしれません。これらを悪用できるかもしれません:
|
||||
さらに、この段階で**認証されていないユーザーに公開されているサービスを**発見したかもしれません。それらを悪用できるかもしれません:
|
||||
|
||||
{{#ref}}
|
||||
aws-unauthenticated-enum-access/
|
||||
@@ -131,7 +131,7 @@ aws-unauthenticated-enum-access/
|
||||
|
||||
## 権限昇格
|
||||
|
||||
異なるリソースに対して**少なくとも自分の権限を確認できる**場合、**さらに権限を取得できるかどうかを確認できます**。少なくとも以下に示す権限に焦点を当てるべきです:
|
||||
異なるリソースに対して**少なくとも自分の権限を確認できる**場合、**さらに権限を取得できるかどうかを確認できます**。少なくとも以下の権限に焦点を当てるべきです:
|
||||
|
||||
{{#ref}}
|
||||
aws-privilege-escalation/
|
||||
@@ -140,12 +140,12 @@ aws-privilege-escalation/
|
||||
## 公開されたサービス
|
||||
|
||||
AWSサービスを列挙しているときに、いくつかのサービスが**インターネットに要素を公開している**のを見つけたかもしれません(VM/コンテナのポート、データベースやキューサービス、スナップショットやバケットなど)。\
|
||||
ペンテスター/レッドチームとして、これらに**機密情報や脆弱性**がないか常に確認するべきです。これにより、**AWSアカウントへのさらなるアクセス**が得られるかもしれません。
|
||||
ペンテスター/レッドチームとして、**機密情報や脆弱性**を見つけられるかどうかを常に確認すべきです。これにより、**AWSアカウントへのさらなるアクセス**が得られるかもしれません。
|
||||
|
||||
この本では、**公開されたAWSサービスを見つける方法とそれを確認する方法**に関する**情報**が見つかるはずです。**公開されたネットワークサービスの脆弱性を見つける方法**については、特定の**サービス**を以下で**検索**することをお勧めします:
|
||||
この本では、**公開されたAWSサービスを見つける方法とそれを確認する方法**に関する**情報**を見つけることができるはずです。**公開されたネットワークサービスの脆弱性を見つける方法**については、特定の**サービス**を以下で**検索**することをお勧めします:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/
|
||||
https://book.hacktricks.wiki/
|
||||
{{#endref}}
|
||||
|
||||
## 組織の侵害
|
||||
@@ -161,13 +161,13 @@ https://book.hacktricks.xyz/
|
||||
- **管理**アカウントを**侵害**し、**子アカウントのID**と**ロールの名前**(デフォルトでOrganizationAccountAccessRole)を見つけて、管理アカウントが管理者としてアクセスできるようにします。
|
||||
- 子アカウントを見つけるには、AWSコンソールの組織セクションに移動するか、`aws organizations list-accounts`を実行します。
|
||||
- ロールの名前を直接見つけることはできないため、すべてのカスタムIAMポリシーを確認し、**以前に発見した子アカウントに対する`sts:AssumeRole`を許可するもの**を検索します。
|
||||
- **管理アカウント内の**`sts:AssumeRole`権限を持つ**プリンシパル**を**子アカウントのロールに対して**侵害します(管理アカウントから誰でもなりすますことを許可している場合でも、外部アカウントであるため、特定の`sts:AssumeRole`権限が必要です)。
|
||||
- **管理アカウント内の**`sts:AssumeRole`権限を持つ**プリンシパル**を**侵害**し、子アカウントのロールに対して**`sts:AssumeRole`権限を持つ**(管理アカウントから誰でもなりすますことを許可している場合でも、外部アカウントであるため、特定の`sts:AssumeRole`権限が必要です)。
|
||||
|
||||
## 自動ツール
|
||||
|
||||
### リコン
|
||||
|
||||
- [**aws-recon**](https://github.com/darkbitio/aws-recon): Rubyで書かれたマルチスレッドのAWSセキュリティに特化した**インベントリ収集ツール**です。
|
||||
- [**aws-recon**](https://github.com/darkbitio/aws-recon): Rubyで書かれたマルチスレッドのAWSセキュリティに特化した**インベントリ収集ツール**。
|
||||
```bash
|
||||
# Install
|
||||
gem install aws_recon
|
||||
@@ -239,8 +239,8 @@ AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-p
|
||||
|
||||
### Privesc & Exploiting
|
||||
|
||||
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** スキャンされたAWS環境で最も特権のあるユーザーを発見します。AWS Shadow Adminsを含みます。powershellを使用します。特権ポリシーの**定義**は、[https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1)の**`Check-PrivilegedPolicy`**関数内にあります。
|
||||
- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacuは、クラウド環境に対する攻撃的セキュリティテストのために設計されたオープンソースの**AWSエクスプロイトフレームワーク**です。**列挙**、**ミスコンフィギュレーション**の発見、そしてそれらを**エクスプロイト**することができます。特権の**定義**は、**`user_escalation_methods`**辞書内の[https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134)で見つけることができます。
|
||||
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** スキャンされたAWS環境で最も特権のあるユーザーを発見します。AWS Shadow Adminsを含みます。powershellを使用します。**`Check-PrivilegedPolicy`**関数内で**特権ポリシーの定義**を見つけることができます。[https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1)。
|
||||
- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacuは、クラウド環境に対する攻撃的セキュリティテストのために設計されたオープンソースの**AWSエクスプロイトフレームワーク**です。**列挙**、**ミスコンフィギュレーションの発見**、およびそれらの**エクスプロイト**が可能です。**`user_escalation_methods`**辞書内で[https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134)に**特権権限の定義**があります。
|
||||
- pacuは**自分のプライベートパスのみをチェックします**(アカウント全体ではありません)。
|
||||
```bash
|
||||
# Install
|
||||
@@ -255,7 +255,7 @@ pacu
|
||||
> exec iam__enum_permissions # Get permissions
|
||||
> exec iam__privesc_scan # List privileged permissions
|
||||
```
|
||||
- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper)は、AWSアカウントまたはAWS組織のAWS Identity and Access Management (IAM)の設定におけるリスクを特定するためのスクリプトおよびライブラリです。これは、アカウント内の異なるIAMユーザーとロールを有向グラフとしてモデル化し、**特権昇格**のチェックや、攻撃者がAWS内のリソースやアクションにアクセスするために取る可能性のある代替パスを確認できるようにします。**privesc**パスを見つけるために使用される**権限**は、[https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing)の`_edges.py`で終わるファイル名にあります。
|
||||
- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper)は、AWSアカウントまたはAWS組織のAWS Identity and Access Management (IAM)の設定におけるリスクを特定するためのスクリプトとライブラリです。これは、アカウント内の異なるIAMユーザーとロールを有向グラフとしてモデル化し、**特権昇格**のチェックや、攻撃者がAWS内のリソースやアクションにアクセスするために取る可能性のある代替パスを確認できるようにします。**privesc**パスを見つけるために使用される**権限**は、[https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing)の`_edges.py`で終わるファイル名にあります。
|
||||
```bash
|
||||
# Install
|
||||
pip install principalmapper
|
||||
@@ -291,12 +291,12 @@ cloudsplaining download --profile dev
|
||||
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
|
||||
```
|
||||
- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJackは、分離されたRoute53とCloudFrontの構成の結果として、AWSアカウントの**サブドメインハイジャック脆弱性**を評価します。
|
||||
- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): ECRリポジトリのリスト -> ECRリポジトリをプル -> バックドアを仕掛ける -> バックドア付きイメージをプッシュ
|
||||
- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebagは、公開されたElastic Block Storage(**EBS)スナップショット**を通じて、偶然に残された可能性のある秘密を**検索**するツールです。
|
||||
- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): ECRリポジトリのリスト -> ECRリポジトリをプル -> バックドアを仕掛ける -> バックドアを仕掛けたイメージをプッシュ
|
||||
- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebagは、公開されたElastic Block Storage (**EBS**)スナップショットを**検索**して、誤って残された可能性のある秘密を探すツールです。
|
||||
|
||||
### 監査
|
||||
|
||||
- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** AquaのCloudSploitは、Amazon Web Services(AWS)、Microsoft Azure、Google Cloud Platform(GCP)、Oracle Cloud Infrastructure(OCI)、およびGitHubを含む**クラウドインフラストラクチャ**アカウントの**セキュリティリスク**を検出するために設計されたオープンソースプロジェクトです(ShadowAdminsは探しません)。
|
||||
- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** AquaのCloudSploitは、Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform (GCP)、Oracle Cloud Infrastructure (OCI)、およびGitHubを含む**クラウドインフラストラクチャ**アカウントの**セキュリティリスク**を検出するために設計されたオープンソースプロジェクトです(ShadowAdminsは探しません)。
|
||||
```bash
|
||||
./index.js --csv=file.csv --console=table --config ./config.js
|
||||
|
||||
@@ -314,11 +314,11 @@ prowler -v
|
||||
prowler <provider>
|
||||
prowler aws --profile custom-profile [-M csv json json-asff html]
|
||||
```
|
||||
- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFoxは、未知のクラウド環境での状況認識を高めるのに役立ちます。これは、ペネトレーションテスターや他の攻撃的セキュリティ専門家がクラウドインフラストラクチャ内の悪用可能な攻撃経路を見つけるために作成されたオープンソースのコマンドラインツールです。
|
||||
- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFoxは、未知のクラウド環境での状況認識を得るのに役立ちます。これは、ペネトレーションテスターや他の攻撃的セキュリティ専門家がクラウドインフラストラクチャ内の悪用可能な攻撃経路を見つけるために作成されたオープンソースのコマンドラインツールです。
|
||||
```bash
|
||||
cloudfox aws --profile [profile-name] all-checks
|
||||
```
|
||||
- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suiteは、クラウド環境のセキュリティ姿勢評価を可能にするオープンソースのマルチクラウドセキュリティ監査ツールです。
|
||||
- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suiteは、クラウド環境のセキュリティポスチャー評価を可能にするオープンソースのマルチクラウドセキュリティ監査ツールです。
|
||||
```bash
|
||||
# Install
|
||||
virtualenv -p python3 venv
|
||||
@@ -329,16 +329,16 @@ scout --help
|
||||
# Get info
|
||||
scout aws -p dev
|
||||
```
|
||||
- [**cs-suite**](https://github.com/SecurityFTW/cs-suite): クラウドセキュリティスイート(python2.7を使用し、メンテナンスされていないようです)
|
||||
- [**Zeus**](https://github.com/DenizParlak/Zeus): Zeusは、AWS EC2 / S3 / CloudTrail / CloudWatch / KMSのベストハードニングプラクティスのための強力なツールです(メンテナンスされていないようです)。システム内のデフォルト設定されたクレデンシャルのみをチェックします。
|
||||
- [**cs-suite**](https://github.com/SecurityFTW/cs-suite): Cloud Security Suite (python2.7を使用し、メンテナンスされていないようです)
|
||||
- [**Zeus**](https://github.com/DenizParlak/Zeus): ZeusはAWS EC2 / S3 / CloudTrail / CloudWatch / KMSのベストハードニングプラクティスのための強力なツールです(メンテナンスされていないようです)。システム内のデフォルト設定されたクレデンシャルのみをチェックします。
|
||||
|
||||
### 定常監査
|
||||
### Constant Audit
|
||||
|
||||
- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodianは、パブリッククラウドアカウントとリソースを管理するためのルールエンジンです。ユーザーは、**適切に管理されたクラウドインフラストラクチャを有効にするためのポリシーを定義**できます。これは、組織が持つ多くのアドホックスクリプトを軽量で柔軟なツールに統合し、統一されたメトリクスとレポートを提供します。
|
||||
- [**pacbot**](https://github.com/tmobile/pacbot)**: コードとしてのポリシーボット(PacBot)**は、**クラウドのための継続的なコンプライアンス監視、コンプライアンスレポート、およびセキュリティ自動化のプラットフォーム**です。PacBotでは、セキュリティとコンプライアンスのポリシーがコードとして実装されます。PacBotによって発見されたすべてのリソースは、これらのポリシーに対して評価され、ポリシーの適合性が測定されます。PacBotの**自動修正**フレームワークは、事前定義されたアクションを実行することによってポリシー違反に自動的に対応する能力を提供します。
|
||||
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlertは、サーバーレスの**リアルタイム**データ分析フレームワークであり、**データを取り込み、分析し、アラートを出す**ことを可能にします。これは、あなたが定義するデータソースとアラートロジックを使用します。コンピュータセキュリティチームは、StreamAlertを使用して、インシデント検出と対応のために毎日テラバイトのログデータをスキャンします。
|
||||
- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodianは、パブリッククラウドアカウントとリソースを管理するためのルールエンジンです。ユーザーは**適切に管理されたクラウドインフラストラクチャを有効にするポリシーを定義**することができます。これは、組織が持つ多くのアドホックスクリプトを軽量で柔軟なツールに統合し、統一されたメトリクスとレポートを提供します。
|
||||
- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)**は、**クラウドのための継続的なコンプライアンス監視、コンプライアンス報告、およびセキュリティ自動化のプラットフォーム**です。PacBotでは、セキュリティおよびコンプライアンスポリシーがコードとして実装されます。PacBotによって発見されたすべてのリソースは、これらのポリシーに対して評価され、ポリシーの適合性が測定されます。PacBotの**自動修正**フレームワークは、事前定義されたアクションを実行することによってポリシー違反に自動的に対応する能力を提供します。
|
||||
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlertは、サーバーレスの**リアルタイム**データ分析フレームワークであり、**定義したデータソースとアラートロジックを使用して、任意の環境からデータを取り込み、分析し、アラートを出す**ことを可能にします。コンピュータセキュリティチームは、StreamAlertを使用して、インシデント検出と対応のために毎日テラバイトのログデータをスキャンします。
|
||||
|
||||
## DEBUG: AWS cliリクエストをキャプチャする
|
||||
## DEBUG: Capture AWS cli requests
|
||||
```bash
|
||||
# Set proxy
|
||||
export HTTP_PROXY=http://localhost:8080
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
SAMLに関する情報は以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
|
||||
{{#endref}}
|
||||
|
||||
**SAMLを通じたアイデンティティフェデレーション**を構成するには、**名前**とすべてのSAML構成(**エンドポイント**、**公開鍵を含む証明書**)を含む**メタデータXML**を提供するだけです。
|
||||
**SAMLを通じたアイデンティティフェデレーション**を構成するには、**名前**とすべてのSAML構成を含む**メタデータXML**(**エンドポイント**、**公開鍵**を持つ**証明書**)を提供するだけです。
|
||||
|
||||
## OIDC - Github Actions Abuse
|
||||
|
||||
@@ -20,7 +20,7 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
2. _プロバイダーURL_に`https://token.actions.githubusercontent.com`を入力します。
|
||||
3. _サムプリントを取得_をクリックしてプロバイダーのサムプリントを取得します。
|
||||
4. _オーディエンス_に`sts.amazonaws.com`を入力します。
|
||||
5. githubアクションが必要とする**権限**を持つ**新しいロール**を作成し、次のようにプロバイダーを信頼する**信頼ポリシー**を設定します:
|
||||
5. githubアクションが必要とする**権限**を持つ**新しいロール**を作成し、次のようなプロバイダーを信頼する**信頼ポリシー**を設定します:
|
||||
- ```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -44,9 +44,9 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
]
|
||||
}
|
||||
```
|
||||
6. 前のポリシーでは、特定の**トリガー**で**組織**の**リポジトリ**の**ブランチ**のみが承認されていることに注意してください。
|
||||
6. 前述のポリシーでは、特定の**トリガー**で**組織**の**リポジトリ**の**ブランチ**のみが承認されていることに注意してください。
|
||||
7. githubアクションが**なりすます**ことができる**ロール**の**ARN**は、githubアクションが知っておく必要がある「秘密」になるため、**環境**内の**シークレット**に**保存**します。
|
||||
8. 最後に、ワークフローで使用するAWSクレデンシャルを構成するためにgithubアクションを使用します:
|
||||
8. 最後に、ワークフローで使用するAWSクレデンシャルを設定するためにgithubアクションを使用します:
|
||||
```yaml
|
||||
name: "test AWS Access"
|
||||
|
||||
@@ -88,7 +88,7 @@ eksctl create cluster --name demo --fargate
|
||||
# Create an Identity Provider for an EKS cluster
|
||||
eksctl utils associate-iam-oidc-provider --cluster Testing --approve
|
||||
```
|
||||
**EKS** クラスターで **OIDC プロバイダー** を生成することは、クラスターの **OIDC URL** を **新しい Open ID アイデンティティプロバイダー** として設定するだけで可能です。これは一般的なデフォルトポリシーです:
|
||||
**OIDCプロバイダー**を**EKS**クラスターで生成することは、クラスターの**OIDC URL**を**新しいOpen IDアイデンティティプロバイダー**として設定するだけで可能です。これは一般的なデフォルトポリシーです:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -110,7 +110,7 @@ eksctl utils associate-iam-oidc-provider --cluster Testing --approve
|
||||
```
|
||||
このポリシーは、**id** `20C159CDF6F2349B68846BEC03BE031B` を持つ **EKS クラスター** のみがロールを引き受けることができることを正しく示しています。しかし、どのサービスアカウントがそれを引き受けることができるかは示されていないため、**ウェブアイデンティティトークンを持つ任意のサービスアカウント** がロールを **引き受けることができる** ことになります。
|
||||
|
||||
**どのサービスアカウントがロールを引き受けることができるかを指定するためには、** **サービスアカウント名が指定される** **条件** を指定する必要があります。
|
||||
**どのサービスアカウントがロールを引き受けることができるかを指定するためには、** **サービスアカウント名が指定される条件** を指定する必要があります。
|
||||
```bash
|
||||
"oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account",
|
||||
```
|
||||
|
||||
+22
-22
@@ -1,10 +1,10 @@
|
||||
# AWS - EC2, EBS, SSM & VPC ポストエクスプロイテーション
|
||||
# AWS - EC2, EBS, SSM & VPC ポストエクスプロイト
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## EC2 & VPC
|
||||
|
||||
詳細については、次を確認してください:
|
||||
詳細については、以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
### **悪意のあるVPCミラー -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
|
||||
|
||||
VPCトラフィックミラーリングは、**VPC内のEC2インスタンスのために、インバウンドおよびアウトバウンドトラフィックを複製します**。これは、インスタンス自体に何もインストールする必要がありません。この複製されたトラフィックは、一般的にネットワーク侵入検知システム(IDS)などに送信され、分析および監視されます。\
|
||||
VPCトラフィックミラーリングは、**VPC内のEC2インスタンスのインバウンドおよびアウトバウンドトラフィックを複製**し、インスタンス自体に何もインストールする必要がありません。この複製されたトラフィックは、一般的にネットワーク侵入検知システム(IDS)などに送信され、分析および監視されます。\
|
||||
攻撃者はこれを悪用して、すべてのトラフィックをキャプチャし、そこから機密情報を取得することができます:
|
||||
|
||||
詳細については、このページを確認してください:
|
||||
@@ -23,7 +23,7 @@ aws-malicious-vpc-mirror.md
|
||||
|
||||
### 実行中のインスタンスのコピー
|
||||
|
||||
インスタンスには通常、何らかの機密情報が含まれています。内部に入る方法はいくつかあります([EC2特権昇格トリック](../../aws-privilege-escalation/aws-ec2-privesc.md)を確認してください)。ただし、含まれているものを確認する別の方法は、**AMIを作成し、それから新しいインスタンスを実行することです(自分のアカウントであっても)**:
|
||||
インスタンスには通常、何らかの機密情報が含まれています。内部に入る方法はいくつかあります([EC2特権昇格トリック](../../aws-privilege-escalation/aws-ec2-privesc.md)を確認してください)。ただし、含まれている内容を確認する別の方法は、**AMIを作成し、それから新しいインスタンスを実行することです(自分のアカウントであっても)**:
|
||||
```shell
|
||||
# List instances
|
||||
aws ec2 describe-images
|
||||
@@ -49,7 +49,7 @@ aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west
|
||||
```
|
||||
### EBSスナップショットダンプ
|
||||
|
||||
**スナップショットはボリュームのバックアップ**であり、通常は**機密情報**を含むため、これを確認することでこの情報が明らかになるはずです。\
|
||||
**スナップショットはボリュームのバックアップ**であり、通常は**機密情報**を含むため、これを確認することでこの情報が明らかになる可能性があります。\
|
||||
**スナップショットのないボリューム**を見つけた場合は、**スナップショットを作成**して次のアクションを実行するか、単に**アカウント内のインスタンスにマウント**することができます:
|
||||
|
||||
{{#ref}}
|
||||
@@ -63,7 +63,7 @@ aws-ebs-snapshot-dump.md
|
||||
EC2をロックダウンしてトラフィックが外に出られないようにしても、**DNS経由で流出する**可能性があります。
|
||||
|
||||
- **VPCフローログはこれを記録しません**。
|
||||
- AWS DNSログへのアクセスはありません。
|
||||
- AWS DNSログにアクセスできません。
|
||||
- 次のコマンドで "enableDnsSupport" を false に設定することで無効にします:
|
||||
|
||||
`aws ec2 modify-vpc-attribute --no-enable-dns-support --vpc-id <vpc-id>`
|
||||
@@ -79,23 +79,23 @@ EC2をロックダウンしてトラフィックが外に出られないよう
|
||||
aws ec2 authorize-security-group-ingress --group-id <sg-id> --protocol tcp --port 80 --cidr 0.0.0.0/0
|
||||
# Or you could just open it to more specific ips or maybe th einternal network if you have already compromised an EC2 in the VPC
|
||||
```
|
||||
### ECSへの権限昇格
|
||||
### Privesc to ECS
|
||||
|
||||
EC2インスタンスを実行し、それをECSインスタンスを実行するために登録し、その後ECSインスタンスのデータを盗むことが可能です。
|
||||
EC2インスタンスを実行し、ECSインスタンスを実行するために登録し、その後ECSインスタンスのデータを盗むことが可能です。
|
||||
|
||||
For [**more information check this**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
|
||||
|
||||
### VPCフローログの削除
|
||||
### Remove VPC flow logs
|
||||
```bash
|
||||
aws ec2 delete-flow-logs --flow-log-ids <flow_log_ids> --region <region>
|
||||
```
|
||||
### SSMポートフォワーディング
|
||||
### SSM ポートフォワーディング
|
||||
|
||||
必要な権限:
|
||||
|
||||
- `ssm:StartSession`
|
||||
|
||||
コマンド実行に加えて、SSMはトラフィックトンネリングを許可しており、これを悪用してセキュリティグループやNACLのためにネットワークアクセスがないEC2インスタンスからピボットすることができます。この機能が役立つシナリオの一つは、[Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/)からプライベートEKSクラスターへのピボットです。
|
||||
コマンド実行に加えて、SSMはトラフィックトンネリングを許可しており、これを悪用してセキュリティグループやNACLのためにネットワークアクセスがないEC2インスタンスからピボットすることができます。この機能が役立つシナリオの一つは、[Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) からプライベートEKSクラスターへのピボットです。
|
||||
|
||||
> セッションを開始するには、SessionManagerPluginをインストールする必要があります: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
|
||||
|
||||
@@ -104,18 +104,18 @@ aws ec2 delete-flow-logs --flow-log-ids <flow_log_ids> --region <region>
|
||||
```shell
|
||||
aws ssm start-session --target "$INSTANCE_ID"
|
||||
```
|
||||
3. [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) スクリプトを使用して、Bastion EC2 AWS 一時資格情報を取得します
|
||||
3. [AWS EC2 環境での SSRF の悪用](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#abusing-ssrf-in-aws-ec2-environment) スクリプトを使用して、Bastion EC2 AWS 一時資格情報を取得します
|
||||
4. 資格情報を `$HOME/.aws/credentials` ファイルに `[bastion-ec2]` プロファイルとして自分のマシンに転送します
|
||||
5. Bastion EC2 として EKS にログインします:
|
||||
```shell
|
||||
aws eks update-kubeconfig --profile bastion-ec2 --region <EKS-CLUSTER-REGION> --name <EKS-CLUSTER-NAME>
|
||||
```
|
||||
6. `$HOME/.kube/config` ファイルの `server` フィールドを `https://localhost` にポイントするように更新します
|
||||
7. 次のようにSSMトンネルを作成します:
|
||||
6. `$HOME/.kube/config` ファイルの `server` フィールドを `https://localhost` に更新します
|
||||
7. 次のように SSM トンネルを作成します:
|
||||
```shell
|
||||
sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"host":["<TARGET-IP-OR-DOMAIN>"],"portNumber":["443"], "localPortNumber":["443"]}' --region <BASTION-INSTANCE-REGION>
|
||||
```
|
||||
8. `kubectl` ツールからのトラフィックは、Bastion EC2 を介して SSM トンネルを通じて転送されており、次のコマンドを実行することで自分のマシンからプライベート EKS クラスターにアクセスできます:
|
||||
8. `kubectl`ツールからのトラフィックは、Bastion EC2を介してSSMトンネルを通じて転送されており、次のコマンドを実行することで自分のマシンからプライベートEKSクラスターにアクセスできます:
|
||||
```shell
|
||||
kubectl get pods --insecure-skip-tls-verify
|
||||
```
|
||||
@@ -139,7 +139,7 @@ aws ec2 modify-snapshot-attribute --snapshot-id <snapshot_ID> --create-volume-pe
|
||||
|
||||
S3のポストエクスプロイテーションノートで示されたランサムウェアデモに似た概念実証。KMSは、さまざまなAWSサービスを暗号化するために使用するのが非常に簡単であることから、Ransomware Management Service(RMS)に改名されるべきです。
|
||||
|
||||
まず、「攻撃者」のAWSアカウントから、KMSにカスタマーマネージドキーを作成します。この例では、AWSがキーのデータを管理しますが、現実的なシナリオでは悪意のあるアクターがAWSの管理外でキーのデータを保持します。キーのポリシーを変更して、任意のAWSアカウントのPrincipalがキーを使用できるようにします。このキーのポリシーでは、アカウント名は「AttackSim」で、すべてのアクセスを許可するポリシールールは「Outside Encryption」と呼ばれています。
|
||||
まず、'attacker' AWSアカウントからKMSにカスタマーマネージドキーを作成します。この例では、AWSがキーのデータを管理しますが、現実的なシナリオでは悪意のあるアクターがAWSの管理外でキーのデータを保持します。キーのポリシーを変更して、任意のAWSアカウントのPrincipalがキーを使用できるようにします。このキーのポリシーでは、アカウント名は'AttackSim'で、すべてのアクセスを許可するポリシールールは'Outside Encryption'と呼ばれています。
|
||||
```
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -239,17 +239,17 @@ S3のポストエクスプロイテーションノートで示されたランサ
|
||||
- `kms:GenerateDataKeyWithoutPlainText`
|
||||
- `kms:ReEncrypt`
|
||||
|
||||
次に、公開アクセス可能なキーを使用します。暗号化されていない EBS ボリュームがアタッチされた EC2 インスタンスを持つ「被害者」アカウントを使用できます。この「被害者」アカウントの EBS ボリュームが暗号化のターゲットです。この攻撃は、高特権の AWS アカウントが侵害されていると仮定しています。
|
||||
次に、公開アクセス可能なキーを使用します。暗号化されていない EBS ボリュームがアタッチされた EC2 インスタンスを持つ「被害者」アカウントを使用できます。この「被害者」アカウントの EBS ボリュームが暗号化のターゲットです。この攻撃は、高権限の AWS アカウントが侵害されていると仮定しています。
|
||||
|
||||
 
|
||||
|
||||
S3 ランサムウェアの例と同様に、この攻撃はアタッチされた EBS ボリュームのコピーをスナップショットを使用して作成し、「攻撃者」アカウントからの公開利用可能なキーを使用して新しい EBS ボリュームを暗号化し、元の EBS ボリュームを EC2 インスタンスからデタッチして削除し、最後に新しく暗号化された EBS ボリュームを作成するために使用されたスナップショットを削除します。 
|
||||
|
||||
これにより、アカウントに残るのは暗号化された EBS ボリュームのみになります。
|
||||
これにより、アカウントに残るのは暗号化された EBS ボリュームのみとなります。
|
||||
|
||||

|
||||
|
||||
また、スクリプトは元の EBS ボリュームをデタッチして削除するために EC2 インスタンスを停止しました。元の暗号化されていないボリュームはもうありません。
|
||||
また、スクリプトは元の EBS ボリュームをデタッチして削除するために EC2 インスタンスを停止しました。元の暗号化されていないボリュームは現在存在しません。
|
||||
|
||||

|
||||
|
||||
@@ -324,15 +324,15 @@ S3 ランサムウェアの例と同様に、この攻撃はアタッチされ
|
||||
]
|
||||
}
|
||||
```
|
||||
新しく設定されたキー ポリシーが伝播するのを少し待ちます。その後、「被害者」アカウントに戻り、新しく暗号化された EBS ボリュームのいずれかをアタッチしようとします。ボリュームをアタッチできることがわかります。
|
||||
しばらく待って、新しく設定されたキー ポリシーが伝播するのを待ちます。その後、「被害者」アカウントに戻り、新しく暗号化された EBS ボリュームのいずれかをアタッチしようとします。ボリュームをアタッチできることがわかります。
|
||||
|
||||
 
|
||||
|
||||
しかし、暗号化された EBS ボリュームで EC2 インスタンスを実際に再起動しようとすると、失敗し、「保留中」状態から「停止」状態に永遠に戻ります。これは、アタッチされた EBS ボリュームがキーを使用して復号化できないため、キー ポリシーがもはやそれを許可しないからです。
|
||||
しかし、暗号化された EBS ボリュームで EC2 インスタンスを実際に再起動しようとすると、単に失敗し、「保留中」状態から「停止」状態に永遠に戻ります。これは、アタッチされた EBS ボリュームがキー ポリシーがもはや許可していないため、キーを使用して復号化できないからです。
|
||||
|
||||
 
|
||||
|
||||
これが使用される Python スクリプトです。これは、「被害者」アカウントの AWS クレデンシャルと、暗号化に使用されるキーの公開利用可能な AWS ARN 値を取得します。このスクリプトは、ターゲット AWS アカウント内のすべての EC2 インスタンスにアタッチされているすべての利用可能な EBS ボリュームの暗号化されたコピーを作成し、その後、すべての EC2 インスタンスを停止し、元の EBS ボリュームをデタッチし、それらを削除し、最終的にプロセス中に使用されたすべてのスナップショットを削除します。これにより、ターゲットの「被害者」アカウントには暗号化された EBS ボリュームのみが残ります。このスクリプトはテスト環境でのみ使用してください。これは破壊的であり、すべての元の EBS ボリュームを削除します。使用された KMS キーを使用してそれらを復元し、スナップショットを介して元の状態に戻すことができますが、これは最終的にはランサムウェアの PoC であることを認識しておいてください。
|
||||
これが使用される Python スクリプトです。これは、「被害者」アカウントの AWS クレデンシャルと、暗号化に使用されるキーの公開利用可能な AWS ARN 値を取得します。このスクリプトは、ターゲット AWS アカウント内のすべての EC2 インスタンスにアタッチされているすべての利用可能な EBS ボリュームの暗号化されたコピーを作成し、その後、すべての EC2 インスタンスを停止し、元の EBS ボリュームをデタッチし、それらを削除し、最後にプロセス中に使用されたすべてのスナップショットを削除します。これにより、ターゲットの「被害者」アカウントには暗号化された EBS ボリュームのみが残ります。このスクリプトはテスト環境でのみ使用してください。これは破壊的であり、すべての元の EBS ボリュームを削除します。使用された KMS キーを使用してそれらを復元し、スナップショットを介して元の状態に戻すことができますが、これは最終的にはランサムウェアの PoC であることを認識しておいてください。
|
||||
```
|
||||
import boto3
|
||||
import argparse
|
||||
|
||||
+3
-3
@@ -46,15 +46,15 @@ aws ecr get-download-url-for-layer \
|
||||
--registry-id 653711331788 \
|
||||
--layer-digest "sha256:edfaad38ac10904ee76c81e343abf88f22e6cfc7413ab5a8e4aeffc6a7d9087a"
|
||||
```
|
||||
画像をダウンロードした後は、**機密情報を確認する**必要があります:
|
||||
画像をダウンロードした後は、**機密情報を確認する必要があります**:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.html
|
||||
{{#endref}}
|
||||
|
||||
### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage`
|
||||
|
||||
これらの権限を持つ攻撃者は、**リポジトリ内のすべての画像を削除するライフサイクルポリシーを作成または変更**し、その後**ECRリポジトリ全体を削除**することができます。これにより、リポジトリに保存されているすべてのコンテナ画像が失われます。
|
||||
これらの権限を持つ攻撃者は、**リポジトリ内のすべての画像を削除するライフサイクルポリシーを作成または変更し、**その後**ECRリポジトリ全体を削除することができます**。これにより、リポジトリに保存されているすべてのコンテナ画像が失われます。
|
||||
```bash
|
||||
bashCopy code# Create a JSON file with the malicious lifecycle policy
|
||||
echo '{
|
||||
|
||||
+10
-10
@@ -1,34 +1,34 @@
|
||||
# AWS - ECS ポストエクスプロイテーション
|
||||
# AWS - ECS Post Exploitation
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## ECS
|
||||
|
||||
詳細については、以下を確認してください:
|
||||
詳細については、次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-ecs-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### ホスト IAM ロール
|
||||
### ホストIAMロール
|
||||
|
||||
ECS では、**IAM ロールがコンテナ内で実行されているタスクに割り当てられる**ことがあります。**もし**タスクが**EC2**インスタンス内で実行されている場合、**EC2 インスタンス**には**別の IAM**ロールが付与されます。\
|
||||
つまり、ECS インスタンスを**侵害**することができれば、**ECR および EC2 インスタンスに関連付けられた IAM ロールを取得する**可能性があります。これらの資格情報を取得する方法については、以下を確認してください:
|
||||
ECSでは、**IAMロールはコンテナ内で実行されているタスクに割り当てることができます**。**もし**タスクが**EC2**インスタンス内で実行されている場合、**EC2インスタンス**には**別のIAM**ロールが付与されます。\
|
||||
つまり、ECSインスタンスを**侵害**することに成功すれば、**ECRおよびEC2インスタンスに関連付けられたIAMロールを取得する可能性があります**。これらの資格情報を取得する方法についての詳細は、次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
> [!CAUTION]
|
||||
> EC2 インスタンスが IMDSv2 を強制している場合、[**ドキュメントによると**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html)、**PUT リクエストの応答**には**ホップ制限が 1**があり、EC2 インスタンス内のコンテナから EC2 メタデータにアクセスすることは不可能になります。
|
||||
> EC2インスタンスがIMDSv2を強制している場合、[**ドキュメントによると**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html)、**PUTリクエストの応答**は**ホップ制限が1**となり、EC2インスタンス内のコンテナからEC2メタデータにアクセスすることが不可能になります。
|
||||
|
||||
### ノードへの特権昇格と他のコンテナの資格情報と秘密の盗難
|
||||
### ノードへの特権昇格と他のコンテナの資格情報・秘密の盗難
|
||||
|
||||
さらに、EC2 は ECs タスクを実行するために Docker を使用しているため、ノードにエスケープするか、**Docker ソケットにアクセス**できれば、**他のコンテナ**がどのように実行されているかを**確認**でき、さらには**それらの中に入って**、**付与された IAM ロールを盗む**ことができます。
|
||||
さらに、EC2はECタスクを実行するためにdockerを使用しているため、ノードにエスケープするか、**dockerソケットにアクセス**できれば、**他のコンテナ**がどのように実行されているかを**確認**でき、さらには**それらの中に入って**、**付与されたIAMロールを盗む**ことができます。
|
||||
|
||||
#### 現在のホストでコンテナを実行する
|
||||
|
||||
さらに、**EC2 インスタンスロール**は通常、クラスター内のノードとして使用されている EC2 インスタンスの**コンテナインスタンスの状態を更新する**のに十分な**権限**を持っています。攻撃者は、**インスタンスの状態を DRAINING に変更**することで、ECS は**すべてのタスクをそこから削除**し、**REPLICA**として実行されているタスクは**別のインスタンスで実行される**ことになり、潜在的に**攻撃者のインスタンス内で**実行されるため、**IAM ロールを盗む**ことや、コンテナ内の潜在的な機密情報を**盗む**ことができます。
|
||||
さらに、**EC2インスタンスロール**は通常、クラスター内のノードとして使用されているEC2インスタンスの**コンテナインスタンスの状態を更新する**のに十分な**権限**を持っています。攻撃者は**インスタンスの状態をDRAININGに変更**することができ、その後ECSは**すべてのタスクを削除**し、**REPLICA**として実行されているタスクは**別のインスタンスで実行される**ことになり、潜在的に**攻撃者のインスタンス内**で実行されるため、彼は**それらのIAMロール**やコンテナ内の潜在的な機密情報を**盗む**ことができます。
|
||||
```bash
|
||||
aws ecs update-container-instances-state \
|
||||
--cluster <cluster> --status DRAINING --container-instances <container-instance-id>
|
||||
|
||||
@@ -13,7 +13,7 @@ lambdaに関する詳細情報は以下を参照してください:
|
||||
### `iam:PassRole`, `lambda:CreateFunction`, (`lambda:InvokeFunction` | `lambda:InvokeFunctionUrl`)
|
||||
|
||||
**`iam:PassRole`, `lambda:CreateFunction`, および `lambda:InvokeFunction`** 権限を持つユーザーは、特権を昇格させることができます。\
|
||||
彼らは**新しいLambda関数を作成し、既存のIAMロールを割り当てることができ**、そのロールに関連付けられた権限を関数に付与します。ユーザーはその後、**このLambda関数にコードを書いてアップロードすることができます(例えばrev shellを使用して)**。\
|
||||
彼らは**新しいLambda関数を作成し、既存のIAMロールを割り当てることができ**、そのロールに関連付けられた権限を関数に付与します。ユーザーはその後、**このLambda関数にコードを書いてアップロードすることができます(例えば、rev shellを使用して)**。\
|
||||
関数が設定されると、ユーザーは**その実行をトリガーし**、AWS APIを通じてLambda関数を呼び出すことで意図したアクションを実行できます。このアプローチにより、ユーザーはLambda関数を介して間接的にタスクを実行し、それに関連付けられたIAMロールによって付与されたアクセスレベルで操作することができます。\\
|
||||
|
||||
攻撃者はこれを悪用して**rev shellを取得し、トークンを盗む**ことができます:
|
||||
@@ -79,7 +79,7 @@ cat output.txt
|
||||
|
||||
### `iam:PassRole`, `lambda:CreateFunction`, `lambda:AddPermission`
|
||||
|
||||
前のシナリオと同様に、**`lambda:AddPermission`** の権限があれば、**自分に `lambda:InvokeFunction`** の権限を付与することができます。
|
||||
前のシナリオと同様に、**`lambda:AddPermission`** の権限があれば、自分に **`lambda:InvokeFunction`** の権限を付与することができます。
|
||||
```bash
|
||||
# Check the previous exploit and use the following line to grant you the invoke permissions
|
||||
aws --profile "$NON_PRIV_PROFILE_USER" lambda add-permission --function-name my_function \
|
||||
@@ -99,7 +99,7 @@ aws lambda create-function --function-name my_function \
|
||||
--handler lambda_function.lambda_handler \
|
||||
--zip-file fileb://rev.zip
|
||||
```
|
||||
DynamoDBがAWS環境で既にアクティブであれば、ユーザーは**Lambda関数のイベントソースマッピングを設定するだけで済みます**。ただし、DynamoDBが使用されていない場合、ユーザーは**ストリーミングが有効な新しいテーブルを作成する必要があります**:
|
||||
もしDynamoDBがすでにAWS環境でアクティブであれば、ユーザーはLambda関数のために**イベントソースマッピングを設定する必要があります**。しかし、DynamoDBが使用されていない場合、ユーザーは**ストリーミングが有効な新しいテーブルを作成する必要があります**:
|
||||
```bash
|
||||
aws dynamodb create-table --table-name my_table \
|
||||
--attribute-definitions AttributeName=Test,AttributeType=S \
|
||||
@@ -107,7 +107,7 @@ aws dynamodb create-table --table-name my_table \
|
||||
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
|
||||
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES
|
||||
```
|
||||
現在、**イベントソースマッピングを作成することによってLambda関数をDynamoDBテーブルに接続することが可能です**:
|
||||
今、**イベントソースマッピングを作成することによってLambda関数をDynamoDBテーブルに接続することが可能です**:
|
||||
```bash
|
||||
aws lambda create-event-source-mapping --function-name my_function \
|
||||
--event-source-arn <arn_of_dynamodb_table_stream> \
|
||||
@@ -122,7 +122,7 @@ aws dynamodb put-item --table-name my_table \
|
||||
|
||||
### `lambda:AddPermission`
|
||||
|
||||
この権限を持つ攻撃者は**自分自身(または他の人)に任意の権限を付与することができます**(これはリソースベースのポリシーを生成してリソースへのアクセスを付与します):
|
||||
この権限を持つ攻撃者は**自分自身(または他の人)に任意の権限を付与することができます**(これはリソースへのアクセスを付与するためのリソースベースのポリシーを生成します):
|
||||
```bash
|
||||
# Give yourself all permissions (you could specify granular such as lambda:InvokeFunction or lambda:UpdateFunctionCode)
|
||||
aws lambda add-permission --function-name <func_name> --statement-id asdasd --action '*' --principal arn:<your user arn>
|
||||
@@ -139,7 +139,7 @@ aws lambda invoke --function-name <func_name> /tmp/outout
|
||||
# Give everyone the permission lambda:GetLayerVersion
|
||||
aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statement-id xaccount --version-number 1 --principal '*' --action lambda:GetLayerVersion
|
||||
```
|
||||
**潜在的影響:** 機密情報への潜在的アクセス。
|
||||
**潜在的影響:** 機密情報へのアクセスの可能性。
|
||||
|
||||
### `lambda:UpdateFunctionCode`
|
||||
|
||||
@@ -170,7 +170,7 @@ aws --profile none-priv lambda update-function-configuration --function-name <fu
|
||||
他のスクリプト言語には、使用できる他の環境変数があります。詳細については、以下のリンクのスクリプト言語のサブセクションを確認してください。
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
|
||||
https://book.hacktricks.wiki/en/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/index.html
|
||||
{{#endref}}
|
||||
|
||||
#### Lambdaレイヤーを介したRCE
|
||||
@@ -202,20 +202,20 @@ print(json.dumps(sys.path, indent=2))
|
||||
|
||||
#### 悪用
|
||||
|
||||
`lambda:UpdateFunctionConfiguration`の権限を悪用して、**新しいレイヤーを**lambda関数に**追加する**ことが可能です。任意のコードを実行するには、このレイヤーに**lambdaがインポートするライブラリを含める必要があります。lambdaのコードを読むことができれば、これを簡単に見つけることができます。また、lambdaが**すでにレイヤーを使用している**可能性があり、そのレイヤーを**ダウンロード**して**自分のコードを追加**することができるかもしれません。
|
||||
`lambda:UpdateFunctionConfiguration`の権限を悪用して、**新しいレイヤーを**lambda関数に**追加する**ことが可能です。任意のコードを実行するためには、このレイヤーに**lambdaがインポートするライブラリを含める必要があります。lambdaのコードを読むことができれば、これを簡単に見つけることができます。また、lambdaが**すでにレイヤーを使用している**可能性があり、そのレイヤーを**ダウンロード**して**あなたのコードを追加**することができるかもしれません。
|
||||
|
||||
例えば、lambdaがライブラリboto3を使用していると仮定すると、これはライブラリの最新バージョンを持つローカルレイヤーを作成します:
|
||||
```bash
|
||||
pip3 install -t ./lambda_layer boto3
|
||||
```
|
||||
`./lambda_layer/boto3/__init__.py`を開き、**グローバルコードにバックドアを追加**できます(例えば、資格情報を抽出する関数やリバースシェルを取得する関数など)。
|
||||
`./lambda_layer/boto3/__init__.py` を開き、**グローバルコードにバックドアを追加**します(例えば、資格情報を外部に送信する関数やリバースシェルを取得する関数など)。
|
||||
|
||||
次に、その`./lambda_layer`ディレクトリをzip圧縮し、**新しいlambdaレイヤーを**自分のアカウントにアップロードします(または被害者のアカウントにアップロードしますが、その場合は権限がないかもしれません)。\
|
||||
また、/opt/python/boto3を上書きするために、pythonフォルダを作成し、ライブラリをそこに置く必要があります。さらに、レイヤーはlambdaで使用される**pythonバージョンと互換性がある必要があります**。アカウントにアップロードする場合は、**同じリージョン**にある必要があります。
|
||||
次に、その `./lambda_layer` ディレクトリを zip し、**新しいラムダレイヤーを**自分のアカウントにアップロードします(または被害者のアカウントにアップロードしますが、その場合は権限がないかもしれません)。\
|
||||
python フォルダを作成し、ライブラリをそこに置いて /opt/python/boto3 を上書きする必要があることに注意してください。また、レイヤーはラムダで使用されている**Pythonバージョンと互換性がある必要があります**。アカウントにアップロードする場合は、**同じリージョン**にある必要があります。
|
||||
```bash
|
||||
aws lambda publish-layer-version --layer-name "boto3" --zip-file file://backdoor.zip --compatible-architectures "x86_64" "arm64" --compatible-runtimes "python3.9" "python3.8" "python3.7" "python3.6"
|
||||
```
|
||||
アップロードしたlambdaレイヤーを**すべてのアカウントからアクセス可能にする**:
|
||||
今、アップロードしたlambdaレイヤーを**すべてのアカウントからアクセス可能に**します:
|
||||
```bash
|
||||
aws lambda add-layer-version-permission --layer-name boto3 \
|
||||
--version-number 1 --statement-id public \
|
||||
|
||||
@@ -24,7 +24,7 @@ aws --region us-east-1 --profile ad docdb describe-db-cluster-snapshot-attribute
|
||||
DocumentDBはMongoDB互換のデータベースであるため、一般的なNoSQLインジェクション攻撃に対しても脆弱であると考えられます:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
|
||||
{{#endref}}
|
||||
|
||||
### DocumentDB
|
||||
|
||||
@@ -8,23 +8,23 @@
|
||||
|
||||
Amazon DynamoDBは、AWSによって**完全に管理されたサーバーレスのキー・バリューNoSQLデータベース**として提供されており、サイズに関係なく高性能アプリケーションを支えるために特化されています。このサービスは、固有のセキュリティ対策、途切れのないバックアップ、複数のリージョンにわたる自動レプリケーション、統合されたインメモリキャッシング、便利なデータエクスポートユーティリティなど、堅牢な機能を保証します。
|
||||
|
||||
DynamoDBの文脈では、従来のデータベースを構築する代わりに、**テーブルが作成されます**。各テーブルは、**テーブルの主キー**の不可欠な要素として**パーティションキー**の指定を義務付けます。このパーティションキーは、本質的に**ハッシュ値**であり、アイテムの取得とデータのさまざまなホストへの分配の両方において重要な役割を果たします。この分配は、データベースのスケーラビリティと可用性を維持するために重要です。さらに、データの整理をさらに洗練させるために**ソートキー**を組み込むオプションもあります。
|
||||
DynamoDBの文脈では、従来のデータベースを構築する代わりに、**テーブルが作成されます**。各テーブルは、**テーブルの主キー**の不可欠な要素として**パーティションキー**の指定を義務付けています。このパーティションキーは、本質的に**ハッシュ値**であり、アイテムの取得とデータのさまざまなホストへの分配の両方において重要な役割を果たします。この分配は、データベースのスケーラビリティと可用性を維持するために重要です。さらに、データの整理をさらに洗練させるために**ソートキー**を組み込むオプションもあります。
|
||||
|
||||
### 暗号化
|
||||
|
||||
デフォルトでは、DynamoDBは**Amazon DynamoDBに属する**KMSキーを使用します。これは、少なくともあなたのアカウントに属するAWS管理キーではありません。
|
||||
デフォルトでは、DynamoDBは**Amazon DynamoDBに属する**KMSキーを使用しており、少なくともあなたのアカウントに属するAWS管理キーさえも使用していません。
|
||||
|
||||
<figure><img src="https://lh4.googleusercontent.com/JjtNS7aA-_GRMgZb4v93jWEQJi6DQdUPq0FEpzZPdeyCeNoG05p0NJiV9Zs-ULs_-Tfjmx0W1ZgsE2Ui2ljo7D-1a87Xny-gpLVQO0XmXdFoph9ci1RepbVNwaCe9oPruEZSEDxGTxF5dIv6pW1WpT6kWA=s2048" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### バックアップとS3へのエクスポート
|
||||
|
||||
**テーブルバックアップ**の生成を**スケジュール**することや、**オンデマンド**で作成することが可能です。さらに、**テーブルのポイントインタイムリカバリ(PITR)を有効にする**ことも可能です。ポイントインタイムリカバリは、DynamoDBデータの**35日間**の継続的な**バックアップ**を提供し、誤って書き込みや削除操作を行った場合に対する保護を助けます。
|
||||
**テーブルバックアップ**の生成を**スケジュール**することや、**オンデマンド**で作成することが可能です。さらに、**テーブルのポイントインタイムリカバリ(PITR)を有効にする**ことも可能です。ポイントインタイムリカバリは、DynamoDBデータの**35日間**の継続的な**バックアップ**を提供し、偶発的な書き込みや削除操作から保護するのに役立ちます。
|
||||
|
||||
**テーブルのデータをS3にエクスポート**することも可能ですが、テーブルには**PITRが有効**である必要があります。
|
||||
|
||||
### GUI
|
||||
|
||||
[ダイナモDBローカル](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/)、[dynalite](https://github.com/mhart/dynalite)、[localstack](https://github.com/localstack/localstack)などのローカルDynamoサービス用のGUIがあり、役立つ可能性があります: [https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin)
|
||||
[https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin)など、役立つ可能性のある[ダイナモDBローカル](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/)、[dynalite](https://github.com/mhart/dynalite)、[localstack](https://github.com/localstack/localstack)などのローカルDynamoサービス用のGUIがあります。
|
||||
|
||||
### 列挙
|
||||
```bash
|
||||
@@ -84,20 +84,20 @@ aws dynamodb describe-endpoints #Dynamodb endpoints
|
||||
DynamoDB データに **SQL 構文**でアクセスする方法があるため、典型的な **SQL インジェクションも可能**です。
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
|
||||
{{#endref}}
|
||||
|
||||
### NoSQL インジェクション
|
||||
|
||||
DynamoDB では、データを取得するために異なる **条件**を使用できます。一般的な NoSQL インジェクションのように、データを取得するために **複数の条件を連鎖させる**ことが可能であれば、隠されたデータを取得したり(またはテーブル全体をダンプしたり)することができます。\
|
||||
DynamoDB では、データを取得するために異なる **条件**を使用できます。一般的な NoSQL インジェクションのように、データを取得するために **複数の条件を連鎖させる**ことができれば、隠されたデータを取得したり(またはテーブル全体をダンプしたり)することができます。\
|
||||
DynamoDB がサポートする条件はここで確認できます: [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html)
|
||||
|
||||
データが **`query`** または **`scan`** を介してアクセスされる場合、**異なる条件**がサポートされていることに注意してください。
|
||||
|
||||
> [!NOTE]
|
||||
> 実際には、**Query** アクションは **主キー**に **条件 "EQ" (等しい)** を指定する必要があり、これにより **NoSQL インジェクションに対してはるかに脆弱性が低く**(また、操作が非常に制限されることになります)。
|
||||
> 実際には、**Query** アクションは、**主キー**で **条件 "EQ" (等しい)** を指定する必要があり、これにより **NoSQL インジェクションに対してはるかに脆弱性が低く**なり(また、操作が非常に制限されることになります)。
|
||||
|
||||
もし **比較**を変更したり、新しいものを追加したりできれば、より多くのデータを取得することができます。
|
||||
比較を **変更**したり、新しいものを追加したりできれば、より多くのデータを取得できる可能性があります。
|
||||
```bash
|
||||
# Comparators to dump the database
|
||||
"NE": "a123" #Get everything that doesn't equal "a123"
|
||||
@@ -105,7 +105,7 @@ DynamoDB がサポートする条件はここで確認できます: [https://doc
|
||||
"GT": " " #All strings are greater than a space
|
||||
```
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
|
||||
{{#endref}}
|
||||
|
||||
### 生のJsonインジェクション
|
||||
@@ -115,7 +115,7 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
|
||||
**DynamoDB**は、DB内のデータを**検索**するために**Json**オブジェクトを受け入れます。検索に送信されるjsonオブジェクトに書き込むことができる場合、DBのダンプを作成し、すべての内容を取得することができます。
|
||||
|
||||
例えば、次のようなリクエストにインジェクトすることです:
|
||||
例えば、次のようなリクエストに注入することができます:
|
||||
```bash
|
||||
'{"Id": {"ComparisonOperator": "EQ","AttributeValueList": [{"N": "' + user_input + '"}]}}'
|
||||
```
|
||||
@@ -123,7 +123,7 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
|
||||
`1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0`
|
||||
|
||||
ID 1000を検索するための「EQ」条件を修正し、その後、すべてのデータを探します。Id文字列が0より大きいもの、すなわちすべてです。
|
||||
ID 1000を検索するために「EQ」条件を修正し、その後、すべてのデータを取得するためにId文字列が0より大きいものを探します。
|
||||
|
||||
別の**ログインを使用した脆弱な例**は次のようになります:
|
||||
```python
|
||||
@@ -141,7 +141,7 @@ scan_filter = """{
|
||||
|
||||
dynamodb.scan(TableName="table-name", ScanFilter=json.loads(scan_filter))
|
||||
```
|
||||
これに対して脆弱である可能性があります:
|
||||
これに対して脆弱である可能性があります:
|
||||
```
|
||||
username: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none
|
||||
password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none
|
||||
@@ -152,7 +152,7 @@ password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none
|
||||
```java
|
||||
new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap)
|
||||
```
|
||||
DynamoDBでアイテムをスキャンする際に**フィルター式**で属性の**値**を**置き換える**ために検索する場合、トークンは**`:`**文字で**始まる**必要があります。そのため、これらのトークンは実際の**属性値が実行時に置き換えられます**。
|
||||
DynamoDBでアイテムをスキャンする際に**フィルター式**で属性**値**を**置き換える**ために検索する場合、トークンは**`:`**文字で**始まる**必要があります。そのため、これらのトークンは**実行時に実際の属性値に置き換えられます**。
|
||||
|
||||
したがって、前述のようなログインは次のようなものでバイパスできます:
|
||||
```bash
|
||||
|
||||
+10
-10
@@ -12,7 +12,7 @@ aws-vpc-and-networking-basic-information.md
|
||||
|
||||
## EC2
|
||||
|
||||
Amazon EC2は**仮想サーバー**を起動するために利用されます。**セキュリティ**や**ネットワーキング**の設定、**ストレージ**の管理が可能です。Amazon EC2の柔軟性は、リソースを上方および下方にスケールできる能力に明らかであり、要求の変化や人気の急増に効果的に適応します。この機能により、正確なトラフィック予測の必要性が減少します。
|
||||
Amazon EC2は**仮想サーバー**を起動するために利用されます。**セキュリティ**や**ネットワーキング**の設定、**ストレージ**の管理が可能です。Amazon EC2の柔軟性は、リソースを上方および下方にスケールさせる能力に明らかであり、要求の変化や人気の急増に効果的に適応します。この機能により、正確なトラフィック予測の必要性が減少します。
|
||||
|
||||
EC2で列挙するのに興味深い項目:
|
||||
|
||||
@@ -35,10 +35,10 @@ EC2で列挙するのに興味深い項目:
|
||||
|
||||
### メタデータエンドポイント
|
||||
|
||||
AWS EC2メタデータは、Amazon Elastic Compute Cloud (EC2)インスタンスに関する情報で、インスタンスが実行中に利用可能です。このメタデータは、インスタンスID、実行中のアベイラビリティゾーン、インスタンスに関連付けられたIAMロール、インスタンスのホスト名など、インスタンスに関する情報を提供するために使用されます。
|
||||
AWS EC2メタデータは、Amazon Elastic Compute Cloud (EC2)インスタンスにランタイムで利用可能な情報です。このメタデータは、インスタンスID、実行中のアベイラビリティゾーン、インスタンスに関連付けられたIAMロール、インスタンスのホスト名など、インスタンスに関する情報を提供するために使用されます。
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### 列挙
|
||||
@@ -186,9 +186,9 @@ EC2インスタンスでSystems Managerが実行されているかどうかを
|
||||
```bash
|
||||
ps aux | grep amazon-ssm
|
||||
```
|
||||
### Privesc
|
||||
### プライバシー昇格
|
||||
|
||||
次のページでは、**SSMの権限を悪用して特権を昇格させる方法**を確認できます:
|
||||
次のページでは、**SSM権限を悪用して特権を昇格させる方法**を確認できます:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-privilege-escalation/aws-ssm-privesc.md
|
||||
@@ -198,7 +198,7 @@ ps aux | grep amazon-ssm
|
||||
|
||||
**Elastic Load Balancing** (ELB) は、**Amazon Web Services** (AWS) デプロイメントのための**負荷分散サービス**です。ELBは自動的に**受信アプリケーショントラフィックを分散**し、トラフィックの需要に応じてリソースをスケールします。
|
||||
|
||||
### Enumeration
|
||||
### 列挙
|
||||
```bash
|
||||
# List internet-facing ELBs
|
||||
aws elb describe-load-balancers
|
||||
@@ -228,7 +228,7 @@ aws autoscaling describe-load-balancers
|
||||
```
|
||||
## Nitro
|
||||
|
||||
AWS Nitroは、AWS EC2インスタンスの基盤となる**革新的な技術**のスイートです。Amazonによって**セキュリティ、パフォーマンス、信頼性を向上させるために**導入され、Nitroはカスタム**ハードウェアコンポーネントと軽量ハイパーバイザー**を活用しています。従来の仮想化機能の多くを専用のハードウェアとソフトウェアに抽象化し、**攻撃面を最小限に抑え**、リソース効率を改善します。仮想化機能をオフロードすることで、NitroはEC2インスタンスに**ほぼベアメタルのパフォーマンス**を提供し、リソース集約型アプリケーションに特に有益です。さらに、Nitro Security Chipは**ハードウェアとファームウェアのセキュリティ**を特に確保し、その堅牢なアーキテクチャをさらに強化します。
|
||||
AWS Nitroは、AWS EC2インスタンスの基盤となる**革新的な技術**のスイートです。Amazonによって**セキュリティ、パフォーマンス、信頼性を向上させる**ために導入され、Nitroはカスタム**ハードウェアコンポーネントと軽量ハイパーバイザー**を活用しています。従来の仮想化機能の多くを専用のハードウェアとソフトウェアに抽象化し、**攻撃面を最小限に抑え**、リソース効率を改善します。仮想化機能をオフロードすることで、NitroはEC2インスタンスに**ほぼベアメタルのパフォーマンス**を提供し、リソース集約型アプリケーションに特に有益です。さらに、Nitro Security Chipは**ハードウェアとファームウェアのセキュリティ**を特に確保し、その堅牢なアーキテクチャをさらに強化します。
|
||||
|
||||
詳細情報と列挙方法については、以下を参照してください:
|
||||
|
||||
@@ -253,10 +253,10 @@ VPNは、**オンプレミスネットワーク(サイト間VPN)**または*
|
||||
- VPGはVPN接続のAWS側エンドポイントです。
|
||||
- あなたのVPCとオンプレミスネットワーク間の安全な通信を処理します。
|
||||
3. **サイト間VPN接続**:
|
||||
- サイト間VPN接続は、オンプレミスネットワークを安全なIPsec VPNトンネルを介してVPCに接続します。
|
||||
- サイト間VPN接続は、あなたのオンプレミスネットワークを安全なIPsec VPNトンネルを通じてVPCに接続します。
|
||||
- このタイプの接続にはカスタマーゲートウェイと仮想プライベートゲートウェイが必要です。
|
||||
- データセンターやネットワークとAWS環境間の安全で安定した一貫した通信に使用されます。
|
||||
- 通常、定期的で長期的な接続に使用され、接続を介して転送されたデータ量に基づいて請求されます。
|
||||
- 通常、定期的で長期的な接続に使用され、接続を通じて転送されたデータ量に基づいて請求されます。
|
||||
4. **クライアントVPNエンドポイント**:
|
||||
- クライアントVPNエンドポイントは、クライアントVPNセッションを有効にし管理するためにAWSで作成するリソースです。
|
||||
- 個々のデバイス(ラップトップ、スマートフォンなど)がAWSリソースまたはオンプレミスネットワークに安全に接続できるようにするために使用されます。
|
||||
@@ -265,7 +265,7 @@ VPNは、**オンプレミスネットワーク(サイト間VPN)**または*
|
||||
|
||||
[**AWS VPNの利点とコンポーネントについての詳細情報はこちら**](aws-vpc-and-networking-basic-information.md#vpn)。
|
||||
|
||||
### 列挙
|
||||
### Enumeration
|
||||
```bash
|
||||
# VPN endpoints
|
||||
## Check used subnetwork, authentication, SGs, connected...
|
||||
|
||||
+10
-10
@@ -4,7 +4,7 @@
|
||||
|
||||
## 基本情報
|
||||
|
||||
AWSが提供する**リレーショナルデータベースサービス (RDS)**は、**クラウド内のリレーショナルデータベースの展開、運用、スケーリング**を簡素化するように設計されています。このサービスは、コスト効率とスケーラビリティの利点を提供し、ハードウェアのプロビジョニング、データベースの構成、パッチ適用、バックアップなどの労働集約的なタスクを自動化します。
|
||||
AWSが提供する**Relational Database Service (RDS)**は、**クラウド内のリレーショナルデータベースの展開、運用、スケーリング**を簡素化するように設計されています。このサービスは、コスト効率とスケーラビリティの利点を提供し、ハードウェアのプロビジョニング、データベースの構成、パッチ適用、バックアップなどの労働集約的なタスクを自動化します。
|
||||
|
||||
AWS RDSは、MySQL、PostgreSQL、MariaDB、Oracle Database、Microsoft SQL Server、Amazon Auroraなど、広く使用されているさまざまなリレーショナルデータベースエンジンをサポートしており、MySQLとPostgreSQLの両方に互換性があります。
|
||||
|
||||
@@ -12,17 +12,17 @@ RDSの主な機能には以下が含まれます:
|
||||
|
||||
- **データベースインスタンスの管理**が簡素化されています。
|
||||
- 読み取りパフォーマンスを向上させるための**リードレプリカ**の作成。
|
||||
- 高可用性とフェイルオーバー機構を確保するための**マルチアベイラビリティゾーン (AZ) デプロイメント**の構成。
|
||||
- 高可用性とフェイルオーバーメカニズムを確保するための**マルチアベイラビリティゾーン(AZ)デプロイメント**の構成。
|
||||
- 他のAWSサービスとの**統合**、例えば:
|
||||
- AWSアイデンティティおよびアクセス管理 (**IAM**)による堅牢なアクセス制御。
|
||||
- AWS Identity and Access Management (**IAM**)による堅牢なアクセス制御。
|
||||
- AWS **CloudWatch**による包括的な監視とメトリクス。
|
||||
- AWSキー管理サービス (**KMS**)による静止データの暗号化の確保。
|
||||
- AWS Key Management Service (**KMS**)による静止データの暗号化の確保。
|
||||
|
||||
## 認証情報
|
||||
|
||||
DBクラスターを作成する際、マスター**ユーザー名**は設定可能です(デフォルトは**`admin`**)。このユーザーのパスワードを生成するには、次の方法があります:
|
||||
DBクラスターを作成する際、マスター**ユーザー名**は設定可能です(デフォルトは**`admin`**)。このユーザーのパスワードを生成するには、以下の方法があります:
|
||||
|
||||
- 自分で**パスワード**を指定する
|
||||
- **自分で**パスワードを指定する
|
||||
- RDSに**自動生成**させる
|
||||
- RDSに**AWS Secret Manager**でKMSキーで暗号化されたものを管理させる
|
||||
|
||||
@@ -46,14 +46,14 @@ DBインスタンスを公開する代わりに、**RDS Proxy**を作成する
|
||||
|
||||
**暗号化はデフォルトで有効**になっており、AWS管理キーを使用します(代わりにCMKを選択することも可能です)。
|
||||
|
||||
暗号化を有効にすることで、**ストレージ、スナップショット、リードレプリカ、およびバックアップの静止データの暗号化**が有効になります。この暗号化を管理するためのキーは**KMS**を使用して発行できます。\
|
||||
暗号化を有効にすることで、**ストレージ、スナップショット、リードレプリカ、バックアップの静止データの暗号化**が有効になります。この暗号化を管理するためのキーは**KMS**を使用して発行できます。\
|
||||
データベースが作成された後にこのレベルの暗号化を追加することはできません。**作成時に行う必要があります**。
|
||||
|
||||
ただし、**暗号化されていないデータベースを暗号化するための回避策があります**。暗号化されていないデータベースのスナップショットを作成し、そのスナップショットの暗号化されたコピーを作成し、その暗号化されたスナップショットを使用して新しいデータベースを作成することで、最終的にデータベースが暗号化されます。
|
||||
|
||||
#### 透過的データ暗号化 (TDE)
|
||||
|
||||
RDSに内在する暗号化機能に加えて、RDSは静止データを保護するための**追加のプラットフォームレベルの暗号化メカニズム**もサポートしています。これには、OracleおよびSQL Server用の**透過的データ暗号化 (TDE)**が含まれます。ただし、TDEは静止データを暗号化することでセキュリティを強化しますが、**データベースのパフォーマンスに影響を与える可能性がある**ことに注意が必要です。このパフォーマンスへの影響は、MySQLの暗号化関数やMicrosoft Transact-SQLの暗号化関数と併用した場合に特に顕著です。
|
||||
アプリケーションレベルでのRDSに固有の暗号化機能に加えて、RDSは静止データを保護するための**追加のプラットフォームレベルの暗号化メカニズム**もサポートしています。これには、OracleおよびSQL Server用の**透過的データ暗号化 (TDE)**が含まれます。ただし、TDEは静止データを暗号化することでセキュリティを強化しますが、**データベースのパフォーマンスに影響を与える可能性がある**ことに注意が必要です。このパフォーマンスへの影響は、MySQLの暗号化関数やMicrosoft Transact-SQLの暗号化関数と併用した場合に特に顕著です。
|
||||
|
||||
TDEを利用するには、いくつかの前提条件が必要です:
|
||||
|
||||
@@ -62,7 +62,7 @@ TDEを利用するには、いくつかの前提条件が必要です:
|
||||
- ただし、オプショングループは特定のデータベースエンジンとバージョンにのみ利用可能であることに注意が必要です。
|
||||
2. **オプショングループへのTDEの含有**:
|
||||
- オプショングループに関連付けられた後、Oracleの透過的データ暗号化オプションをそのグループに含める必要があります。
|
||||
- TDEオプションがオプショングループに追加されると、それは永久的なものであり、削除することはできません。
|
||||
- TDEオプションがオプショングループに追加されると、それは恒久的なものであり、削除することはできません。
|
||||
3. **TDE暗号化モード**:
|
||||
- TDEは2つの異なる暗号化モードを提供します:
|
||||
- **TDEテーブルスペース暗号化**:このモードは、全体のテーブルを暗号化し、より広範なデータ保護を提供します。
|
||||
@@ -134,7 +134,7 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
|
||||
DynamoDBデータに**SQL構文**でアクセスする方法があるため、典型的な**SQLインジェクションも可能です**。
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
+32
-32
@@ -4,7 +4,7 @@
|
||||
|
||||
## **CloudTrail**
|
||||
|
||||
AWS CloudTrail **は、AWS環境内の活動を記録および監視します**。それは、誰が何を、いつ、どこから行ったかを含む詳細な**イベントログ**をキャプチャします。これにより、変更やアクションの監査証跡が提供され、セキュリティ分析、コンプライアンス監査、およびリソース変更の追跡に役立ちます。CloudTrailは、ユーザーとリソースの動作を理解し、セキュリティ姿勢を強化し、規制遵守を確保するために不可欠です。
|
||||
AWS CloudTrail **は、AWS環境内の活動を記録および監視します**。それは、誰が何を、いつ、どこから行ったかを含む詳細な**イベントログ**をキャプチャします。これにより、変更やアクションの監査証跡が提供され、セキュリティ分析、コンプライアンス監査、およびリソース変更の追跡に役立ちます。CloudTrailは、ユーザーとリソースの行動を理解し、セキュリティ姿勢を強化し、規制遵守を確保するために不可欠です。
|
||||
|
||||
各ログされたイベントには以下が含まれます:
|
||||
|
||||
@@ -21,7 +21,7 @@ AWS CloudTrail **は、AWS環境内の活動を記録および監視します**
|
||||
|
||||
イベントは**約5分ごとにJSONファイルに新しいログファイルとして書き込まれ**、CloudTrailによって保持され、最終的にログファイルは**約15分後にS3に配信されます**。\
|
||||
CloudTrailのログは**アカウント間およびリージョン間で集約できます**。\
|
||||
CloudTrailは**ログファイルの整合性を使用して、CloudTrailがあなたに配信して以来、ログファイルが変更されていないことを確認できるようにします**。それは、ダイジェストファイル内のログのSHA-256ハッシュを作成します。新しいログのsha-256ハッシュは毎時作成されます。\
|
||||
CloudTrailは、**ログファイルの整合性を使用して、CloudTrailが提供した後にログファイルが変更されていないことを確認できるようにします**。これは、ダイジェストファイル内のログのSHA-256ハッシュを作成します。新しいログのsha-256ハッシュは毎時作成されます。\
|
||||
トレイルを作成する際、イベントセレクターを使用して、ログするトレイルを示すことができます:管理、データ、またはインサイトイベント。
|
||||
|
||||
ログはS3バケットに保存されます。デフォルトではサーバーサイド暗号化(SSE-S3)が使用されるため、AWSはアクセス権を持つ人々のためにコンテンツを復号化しますが、追加のセキュリティのためにSSEをKMSおよび独自のキーと共に使用することができます。
|
||||
@@ -32,21 +32,21 @@ CloudTrailは**ログファイルの整合性を使用して、CloudTrailがあ
|
||||
- バケット名は:**`aws-cloudtrail-logs-<accountid>-<random>`**
|
||||
- 例:**`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`**
|
||||
|
||||
各フォルダ内の各ログは**この形式に従った名前を持ちます**:**`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
|
||||
各フォルダ内の各ログは、**この形式に従った名前を持ちます**:**`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
|
||||
|
||||
ログファイル命名規則
|
||||
|
||||
.png>)
|
||||
|
||||
さらに、**ファイル整合性を確認するためのダイジェストファイル**は**同じバケット内に**あります:
|
||||
さらに、**ファイル整合性を確認するためのダイジェストファイル**は、**同じバケット内にあります**:
|
||||
|
||||
.png>)
|
||||
|
||||
### 複数アカウントからのログの集約
|
||||
|
||||
- ログファイルを配信するAWSアカウントにトレイルを作成します
|
||||
- ログファイルを配信するAWSアカウントでトレイルを作成します
|
||||
- CloudTrailのためにクロスアカウントアクセスを許可するように、宛先S3バケットに権限を適用し、アクセスが必要な各AWSアカウントを許可します
|
||||
- 他のAWSアカウントに新しいトレイルを作成し、ステップ1で作成したバケットを使用するように選択します
|
||||
- 他のAWSアカウントで新しいトレイルを作成し、ステップ1で作成したバケットを使用するように選択します
|
||||
|
||||
ただし、すべてのログを同じS3バケットに保存できるとしても、複数のアカウントからのCloudTrailログを単一のAWSアカウントに属するCloudWatch Logsに集約することはできません。
|
||||
|
||||
@@ -77,26 +77,26 @@ CloudTrailがCloudWatchにログを送信できるようにするには、その
|
||||
|
||||
### Event History
|
||||
|
||||
CloudTrail Event Historyでは、記録されたログをテーブルで検査できます:
|
||||
CloudTrail Event Historyでは、記録されたログをテーブルで確認できます:
|
||||
|
||||
.png>)
|
||||
|
||||
### Insights
|
||||
|
||||
**CloudTrail Insights**は自動的に**管理イベントを分析**し、**異常な活動**を**警告**します。例えば、`TerminateInstance`イベントの増加が確立されたベースラインと異なる場合、それはInsightイベントとして表示されます。これらのイベントは、**異常なAPI活動を見つけて対応することをこれまで以上に容易にします**。
|
||||
**CloudTrail Insights**は自動的に**分析**し、CloudTrailトレイルからの書き込み管理イベントを**警告**し、**異常な活動**を通知します。例えば、`TerminateInstance`イベントの増加が確立されたベースラインと異なる場合、それはInsightイベントとして表示されます。これらのイベントは、**異常なAPI活動を見つけて対応することをこれまで以上に容易にします**。
|
||||
|
||||
インサイトはCloudTrailログと同じバケットに保存されます:`BucketName/AWSLogs/AccountID/CloudTrail-Insight`
|
||||
|
||||
### Security
|
||||
|
||||
| CloudTrail Log File Integrity | <ul><li>ログが改ざんされていないか検証する(変更または削除されたか)</li><li><p>ダイジェストファイルを使用する(各ファイルのハッシュを作成)</p><ul><li>SHA-256ハッシュ</li><li>デジタル署名のためのSHA-256とRSA</li><li>Amazonが所有する秘密鍵</li></ul></li><li>ダイジェストファイルを作成するのに1時間かかる(毎時行われる)</li></ul> |
|
||||
| CloudTrail Log File Integrity | <ul><li>ログが改ざんされていないか(変更または削除)を検証</li><li><p>ダイジェストファイルを使用(各ファイルのハッシュを作成)</p><ul><li>SHA-256ハッシュ</li><li>デジタル署名のためのSHA-256とRSA</li><li>Amazonが所有する秘密鍵</li></ul></li><li>ダイジェストファイルの作成には1時間かかる(毎時行われる)</li></ul> |
|
||||
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Stop unauthorized access | <ul><li><p>IAMポリシーとS3バケットポリシーを使用する</p><ul><li>セキュリティチーム —> 管理者アクセス</li><li>監査人 —> 読み取り専用アクセス</li></ul></li><li>ログを暗号化するためにSSE-S3/SSE-KMSを使用する</li></ul> |
|
||||
| Prevent log files from being deleted | <ul><li>IAMとバケットポリシーで削除アクセスを制限する</li><li>S3 MFA削除を構成する</li><li>ログファイル検証で検証する</li></ul> |
|
||||
| Stop unauthorized access | <ul><li><p>IAMポリシーとS3バケットポリシーを使用</p><ul><li>セキュリティチーム —> 管理者アクセス</li><li>監査人 —> 読み取り専用アクセス</li></ul></li><li>SSE-S3/SSE-KMSを使用してログを暗号化</li></ul> |
|
||||
| Prevent log files from being deleted | <ul><li>IAMおよびバケットポリシーで削除アクセスを制限</li><li>S3 MFA削除を構成</li><li>ログファイル検証で検証</li></ul> |
|
||||
|
||||
## Access Advisor
|
||||
|
||||
AWS Access Advisorは、最後の400日間のAWS **CloudTrailログを利用してインサイトを収集します**。CloudTrailは、AWSアカウント内で行われたAWS APIコールと関連イベントの履歴をキャプチャします。Access Advisorはこのデータを利用して**サービスが最後にアクセスされた時期を表示します**。CloudTrailログを分析することで、Access AdvisorはIAMユーザーまたはロールがどのAWSサービスにアクセスしたか、そしてそのアクセスがいつ行われたかを特定できます。これにより、AWS管理者は**権限の洗練**に関する情報に基づいた意思決定を行うことができ、長期間アクセスされていないサービスを特定し、実際の使用パターンに基づいて過度に広範な権限を削減することができます。
|
||||
AWS Access Advisorは、過去400日間のAWS **CloudTrailログを利用してインサイトを収集します**。CloudTrailは、AWSアカウント内で行われたAWS APIコールと関連イベントの履歴をキャプチャします。Access Advisorはこのデータを利用して**サービスが最後にアクセスされた時期を表示します**。CloudTrailログを分析することで、Access AdvisorはIAMユーザーまたはロールがどのAWSサービスにアクセスしたか、そしてそのアクセスがいつ行われたかを特定できます。これにより、AWS管理者は**権限の精緻化**に関する情報に基づいた意思決定を行うことができ、長期間アクセスされていないサービスを特定し、実際の使用パターンに基づいて過度に広範な権限を削減することができます。
|
||||
|
||||
> [!TIP]
|
||||
> したがって、Access Advisorは**ユーザーに与えられている不必要な権限について通知し**、管理者がそれらを削除できるようにします
|
||||
@@ -125,7 +125,7 @@ aws cloudtrail get-query-results --event-data-store <data-source> --query-id <id
|
||||
### **CSVインジェクション**
|
||||
|
||||
CloudTrail内でCSVインジェクションを実行することが可能で、ログがCSV形式でエクスポートされ、Excelで開かれると任意のコードが実行されます。\
|
||||
次のコードは、ペイロードを含む悪いトレイル名のログエントリを生成します:
|
||||
次のコードは、ペイロードを含む悪いトレイル名のログエントリを生成します:
|
||||
```python
|
||||
import boto3
|
||||
payload = "=cmd|'/C calc'|''"
|
||||
@@ -136,33 +136,33 @@ S3BucketName="random"
|
||||
)
|
||||
print(response)
|
||||
```
|
||||
CSVインジェクションに関する詳細は、次のページを確認してください:
|
||||
より詳しい情報はCSVインジェクションについては、ページを確認してください:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/formula-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript-injection.html
|
||||
{{#endref}}
|
||||
|
||||
この特定の技術に関する詳細は、[https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/)を確認してください。
|
||||
この特定の技術についての詳細は[https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/)を確認してください。
|
||||
|
||||
## **検出の回避**
|
||||
|
||||
### HoneyTokens **回避**
|
||||
|
||||
Honeytokensは、**機密情報の流出を検出するために作成されます**。AWSの場合、これらは**使用が監視されるAWSキー**です。そのキーでアクションがトリガーされると、誰かがそのキーを盗んだことになります。
|
||||
Honeytokensは**機密情報の流出を検出するために作成されます**。AWSの場合、これらは**使用が監視されるAWSキー**です。そのキーでアクションがトリガーされると、誰かがそのキーを盗んだことになります。
|
||||
|
||||
しかし、[**Canarytokens**](https://canarytokens.org/generate)**、** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**、** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)によって作成されたHoneytokensは、認識可能なアカウント名を使用するか、すべての顧客に対して同じAWSアカウントIDを使用しています。したがって、Cloudtrailにログを作成させることなくアカウント名やアカウントIDを取得できれば、**そのキーがHoneytokenかどうかを知ることができます**。
|
||||
|
||||
[**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57)には、キーが[**Canarytokens**](https://canarytokens.org/generate)**、** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**、** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**に属するかどうかを検出するためのいくつかのルールがあります:**
|
||||
|
||||
- **`canarytokens.org`**がロール名に表示されるか、エラーメッセージにアカウントID **`534261010715`**が表示される場合。
|
||||
- 最近テストしたところ、アカウント**`717712589309`**を使用しており、名前に**`canarytokens.com`**の文字列がまだ含まれています。
|
||||
- **`canarytokens.org`**がロール名に表示されるか、アカウントID **`534261010715`**がエラーメッセージに表示される場合。
|
||||
- 最近テストしたところ、彼らはアカウント**`717712589309`**を使用しており、名前に**`canarytokens.com`**の文字列がまだ含まれています。
|
||||
- エラーメッセージのロール名に**`SpaceCrab`**が表示される場合。
|
||||
- **SpaceSiren**は、ユーザー名を生成するために**uuids**を使用します:`[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
|
||||
- **名前がランダムに生成されたように見える場合**、それがHoneyTokenである可能性が高いです。
|
||||
- **SpaceSiren**はユーザー名を生成するために**uuids**を使用します:`[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
|
||||
- **名前がランダムに生成されたように見える場合**、それはHoneyTokenである可能性が高いです。
|
||||
|
||||
#### キーIDからアカウントIDを取得する
|
||||
|
||||
**アクセスキー**内に**エンコードされた**アカウントIDを取得することができ、[**ここで説明されているように**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489)Honeytokens AWSアカウントのリストとアカウントIDを確認してください:
|
||||
**アクセスキー**内に**エンコードされた**アカウントIDを取得することができ、[**ここで説明されているように**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489)そのアカウントIDをHoneytokens AWSアカウントのリストと照合してください:
|
||||
```python
|
||||
import base64
|
||||
import binascii
|
||||
@@ -181,34 +181,34 @@ return (e)
|
||||
|
||||
print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56JQ7WML")))
|
||||
```
|
||||
[**元の研究**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489)で詳細を確認してください。
|
||||
Check more information in the [**orginal research**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489).
|
||||
|
||||
#### ログを生成しない
|
||||
|
||||
このための最も効果的な手法は実際にはシンプルです。見つけたキーを使用して、自分の攻撃者アカウント内のサービスにアクセスします。これにより、**CloudTrailはあなた自身のAWSアカウント内にログを生成し、被害者のアカウント内には生成しません**。
|
||||
最も効果的な手法は実際にはシンプルなものです。見つけたキーを使用して、自分の攻撃者アカウント内のサービスにアクセスします。これにより、**CloudTrailはあなた自身のAWSアカウント内にログを生成し、被害者のアカウント内には生成しません**。
|
||||
|
||||
問題は、出力にアカウントIDとアカウント名を示すエラーが表示されるため、**それがハニートークンであるかどうかを確認できることです**。
|
||||
出力には、アカウントIDとアカウント名を示すエラーが表示されるため、**それがHoneytokenであるかどうかを確認できます**。
|
||||
|
||||
#### ログなしのAWSサービス
|
||||
|
||||
過去には、**CloudTrailにログを送信しないAWSサービスがいくつかありました**([ここにリストがあります](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html))。これらのサービスのいくつかは、無許可の者(ハニートークンキー)がアクセスしようとすると、**キー役割のARNを含むエラー**で**応答**します。
|
||||
過去には、**CloudTrailにログを送信しないAWSサービスがいくつかありました**(ここに[リストを見つけてください](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html))。これらのサービスのいくつかは、無許可の者(ハニートークンキー)がアクセスしようとすると、**キー役割のARNを含む**エラーで**応答**します。
|
||||
|
||||
この方法で、**攻撃者はログをトリガーすることなくキーのARNを取得できます**。ARN内で攻撃者は**AWSアカウントIDと名前**を見ることができ、ハニートークンの企業アカウントIDと名前を知るのは簡単です。これにより、攻撃者はトークンがハニートークンであるかどうかを特定できます。
|
||||
この方法で、**攻撃者はログをトリガーすることなくキーのARNを取得できます**。ARNには**AWSアカウントIDと名前**が表示されるため、ハニートークンの企業アカウントIDと名前を知るのは簡単で、攻撃者はトークンがハニートークンであるかどうかを特定できます。
|
||||
|
||||
.png>)
|
||||
|
||||
> [!CAUTION]
|
||||
> CloudTrailログを生成しないことが発見されたすべての公開APIは現在修正されているため、自分で見つける必要があるかもしれません...
|
||||
>
|
||||
> 詳細については、[**元の研究**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/)を確認してください。
|
||||
> 詳細については、[**original research**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/)を確認してください。
|
||||
|
||||
### 第三者インフラへのアクセス
|
||||
|
||||
特定のAWSサービスは、**データベース**や**Kubernetes**クラスター(EKS)などの**インフラを生成します**。ユーザーがこれらのサービス(Kubernetes APIなど)に**直接話しかける**場合、**AWS APIを使用しないため**、CloudTrailはこの通信を確認できません。
|
||||
特定のAWSサービスは、**データベース**や**Kubernetes**クラスター(EKS)などの**インフラを生成します**。ユーザーがこれらのサービス(Kubernetes APIなど)に直接話しかける場合、**AWS APIを使用しないため**、CloudTrailはこの通信を確認できません。
|
||||
|
||||
したがって、EKSにアクセスできるユーザーがEKS APIのURLを発見した場合、ローカルでトークンを生成し、**CloudTrailに検出されることなくAPIサービスに直接話しかけることができます**。
|
||||
|
||||
詳細は以下にあります:
|
||||
詳細は以下に:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-post-exploitation/aws-eks-post-exploitation.md
|
||||
@@ -251,11 +251,11 @@ aws s3api put-bucket-lifecycle --bucket <bucket_name> --lifecycle-configuration
|
||||
- オブジェクトを削除するためにS3バケットにライフサイクルポリシーを追加する
|
||||
- CloudTrailログを暗号化するために使用されるKMSキーを無効にする
|
||||
|
||||
### CloudTrailランサムウェア
|
||||
### Cloudtrailランサムウェア
|
||||
|
||||
#### S3ランサムウェア
|
||||
|
||||
**非対称キーを生成**し、そのキーで**CloudTrailがデータを暗号化**し、**秘密鍵を削除**することで、CloudTrailの内容を回復できなくすることができます。\
|
||||
**非対称キーを生成**し、そのキーで**CloudTrailがデータを暗号化**し、**秘密鍵を削除**することでCloudTrailの内容を回復できなくすることができます。\
|
||||
これは基本的に**S3-KMSランサムウェア**で、以下に説明されています:
|
||||
|
||||
{{#ref}}
|
||||
|
||||
+3
-3
@@ -17,7 +17,7 @@
|
||||
#### SSRF
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### 公開 AMI および EBS スナップショット
|
||||
@@ -37,9 +37,9 @@ aws ec2 describe-images --executable-users all --query 'Images[?contains(ImageLo
|
||||
aws ec2 describe-snapshots --restorable-by-user-ids all
|
||||
aws ec2 describe-snapshots --restorable-by-user-ids all | jq '.Snapshots[] | select(.OwnerId == "099720109477")'
|
||||
```
|
||||
誰でも復元可能なスナップショットを見つけた場合は、スナップショットのダウンロードと略奪に関する指示について[AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump)を確認してください。
|
||||
誰でも復元可能なスナップショットを見つけた場合は、[AWS - EBS Snapshot Dump](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/index.html#ebs-snapshot-dump)を確認して、スナップショットのダウンロードと略奪に関する指示を確認してください。
|
||||
|
||||
#### 公開URLテンプレート
|
||||
#### Public URL template
|
||||
```bash
|
||||
# EC2
|
||||
ec2-{ip-seperated}.compute-1.amazonaws.com
|
||||
|
||||
Reference in New Issue
Block a user