Pentesting Cloud Methodology

Support HackTricks

基本的な方法論

各クラウドには独自の特性がありますが、一般的にクラウド環境をテストする際にペンテスターが確認すべき共通の事項がいくつかあります:

  • ベンチマークチェック

  • これにより、環境の規模使用されているサービスを理解するのに役立ちます。

  • ほとんどのテストを自動化ツールで実行できるため、いくつかの迅速な誤設定を見つけることもできます。

  • サービスの列挙

  • ベンチマークテストを正しく実行していれば、ここで見つかる誤設定はあまりないでしょうが、ベンチマークテストで探されていなかったものが見つかるかもしれません。

  • これにより、クラウド環境で何が正確に使用されているかを知ることができます。

  • 次のステップで大いに役立ちます。

  • 公開されている資産の確認

  • これは前のセクションで行うことができ、インターネットに対して潜在的に公開されているすべてのものを見つけ出し、どのようにアクセスできるかを確認する必要があります。

  • ここでは、手動で公開されたインフラ(ウェブページを持つインスタンスや他のポートが公開されているもの)や、公開されるように設定できる他のクラウド管理サービス(DBやバケットなど)について取り上げています。

  • 次に、そのリソースが公開可能かどうかを確認する必要があります(機密情報?脆弱性?公開されたサービスの誤設定?)。

  • 権限の確認

  • ここでは、クラウド内の各ロール/ユーザーのすべての権限を見つけ出し、それがどのように使用されているかを確認する必要があります。

  • 権限が高すぎる(すべてを制御できる)アカウントが多すぎる?生成されたキーが使用されていない?... これらのチェックのほとんどはすでにベンチマークテストで行われているはずです。

  • クライアントがOpenIDやSAMLなどのフェデレーションを使用している場合、各ロールがどのように割り当てられているかについてさらに情報を求める必要があります(管理者ロールが1人のユーザーに割り当てられているのと100人に割り当てられているのは同じではありません)。

  • 管理者権限を持つユーザーがどれだけいるかを見つけるだけでは不十分です。使用されるサービスによっては、非常に敏感他の権限がたくさんあります。

  • さらに、権限を悪用する潜在的な昇格の方法があります。これらすべてのことを考慮に入れ、できるだけ多くの昇格パスを報告する必要があります。

  • 統合の確認

  • 他のクラウドやSaaSとの統合がクラウド環境内で使用されている可能性が非常に高いです。

  • 監査しているクラウドの統合については、その統合を**(悪用する)アクセスを持つ人を通知し、実行されているアクションがどれだけ敏感**であるかを尋ねる必要があります。 例えば、GCPがデータを取得しているAWSバケットに書き込むことができるのは誰か(GCPでそのデータを扱う際のアクションの敏感さを尋ねる)。

  • 監査しているクラウド内の統合については、外部プラットフォームから**(悪用する)アクセスを持つ人**を尋ね、そのデータがどのように使用されているかを確認する必要があります。 例えば、サービスがGCRにホストされているDockerイメージを使用している場合、そのイメージを修正するアクセスを持つのは誰か、AWSクラウド内で実行される際にそのイメージがどのような機密情報やアクセスを得るかを尋ねる必要があります。

マルチクラウドツール

異なるクラウド環境をテストするために使用できるツールがいくつかあります。このセクションでは、インストール手順とリンクを示します。

クラウドおよびクラウド/SaaS間の誤設定と昇格パスを特定するためのツールです。

# You need to install and run neo4j also
git clone https://github.com/carlospolop/PurplePanda
cd PurplePanda
python3 -m venv .
source bin/activate
python3 -m pip install -r requirements.txt
export PURPLEPANDA_NEO4J_URL="bolt://neo4j@localhost:7687"
export PURPLEPANDA_PWD="neo4j_pwd_4_purplepanda"
python3 main.py -h # Get help

AWS、GCP、Azureをサポートしています。各プロバイダーの設定方法についてはhttps://docs.prowler.cloud/en/latest/#awsを確認してください。

# Install
pip install prowler
prowler -v

# Run
prowler <provider>
# Example
prowler aws --profile custom-profile [-M csv json json-asff html]

# Get info about checks & services
prowler <provider> --list-checks
prowler <provider> --list-services

AWS、Azure、Github、Google、Oracle、Alibaba

# Install
git clone https://github.com/aquasecurity/cloudsploit.git
cd cloudsploit
npm install
./index.js -h
## Docker instructions in github

AWS、Azure、GCP、Alibaba Cloud、Oracle Cloud Infrastructure

mkdir scout; cd scout
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help
## Using Docker: https://github.com/nccgroup/ScoutSuite/wiki/Docker-Image

Steampipeをダウンロードしてインストールします(https://steampipe.io/downloads)。または、Brewを使用します:

brew tap turbot/tap
brew install steampipe

AWS、GCP、Azure、DigitalOcean。 python2.7が必要で、メンテナンスされていないようです。

Nessus

Nessusには、AWS、Azure、Office 365、Rackspace、Salesforceをサポートする_Audit Cloud Infrastructure_スキャンがあります。AzureClient Idを取得するために、いくつかの追加設定が必要です。

Cloudlistは、クラウドプロバイダーから資産(ホスト名、IPアドレス)を取得するためのマルチクラウドツールです。

cd /tmp
wget https://github.com/projectdiscovery/cloudlist/releases/latest/download/cloudlist_1.0.1_macOS_arm64.zip
unzip cloudlist_1.0.1_macOS_arm64.zip
chmod +x cloudlist
sudo mv cloudlist /usr/local/bin

Cartographyは、Neo4jデータベースによって駆動される直感的なグラフビューで、インフラストラクチャ資産とそれらの関係を統合するPythonツールです。

# Installation
docker image pull ghcr.io/lyft/cartography
docker run --platform linux/amd64 ghcr.io/lyft/cartography cartography --help
## Install a Neo4j DB version 3.5.*

Starbaseは、クラウドインフラストラクチャ、SaaSアプリケーション、セキュリティコントロールなどのサービスやシステムから資産と関係を収集し、Neo4jデータベースに基づいた直感的なグラフビューに表示します。

# You are going to need Node version 14, so install nvm following https://tecadmin.net/install-nvm-macos-with-homebrew/
npm install --global yarn
nvm install 14
git clone https://github.com/JupiterOne/starbase.git
cd starbase
nvm use 14
yarn install
yarn starbase --help
# Configure manually config.yaml depending on the env to analyze
yarn starbase setup
yarn starbase run

# Docker
git clone https://github.com/JupiterOne/starbase.git
cd starbase
cp config.yaml.example config.yaml
# Configure manually config.yaml depending on the env to analyze
docker build --no-cache -t starbase:latest .
docker-compose run starbase setup
docker-compose run starbase run

スキャンされたAWSまたはAzure環境で最も特権のあるユーザーを発見します。これにはAWSシャドウ管理者が含まれます。PowerShellを使用します。

Import-Module .\SkyArk.ps1 -force
Start-AzureStealth

# in the Cloud Console
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cyberark/SkyArk/master/AzureStealth/AzureStealth.ps1')
Scan-AzureAdmins

企業(ターゲット)のインフラ、ファイル、アプリを主要なクラウドプロバイダー(Amazon、Google、Microsoft、DigitalOcean、Alibaba、Vultr、Linode)で見つけるためのツールです。

  • CloudFoxは、クラウドインフラストラクチャ内の悪用可能な攻撃経路を見つけるためのツールです(現在はAWSとAzureのみサポート、GCPは近日中に対応予定)。

  • 手動のpentestingを補完することを目的とした列挙ツールです。

  • クラウド環境内のデータを作成または変更することはありません。

クラウドセキュリティツールのさらなるリスト

Google

GCP

GCP Pentesting

Workspace

GWS - Workspace Pentesting

AWS

AWS Pentesting

Azure

Azure Pentesting

Attack Graph

Stormspotter は、Azureサブスクリプション内のリソースの「攻撃グラフ」を作成します。これにより、レッドチームやpentesterはテナント内の攻撃面とピボットの機会を視覚化でき、ディフェンダーはインシデントレスポンス作業を迅速に方向付け、優先順位を付けることができます。

Office365

Global Adminまたは少なくともGlobal Admin Readerが必要です(ただし、Global Admin Readerには少し制限があります)。ただし、これらの制限は一部のPSモジュールに現れ、ウェブアプリケーションを介して機能にアクセスすることで回避できます。

HackTricksをサポートする

Last updated