Pentesting 클라우드 방법론

Reading time: 11 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

기본 방법론

각 클라우드마다 고유한 특성이 있지만 일반적으로 클라우드 환경을 테스트할 때 확인해야 할 몇 가지 common things a pentester should check가 있습니다:

  • Benchmark checks
  • 이는 환경의 규모를 이해하는 것사용되는 서비스를 파악하는 데 도움이 됩니다.
  • 대부분의 테스트를 자동화 도구로 수행할 수 있기 때문에 빠른 **잘못된 구성(misconfigurations)**을 찾는 데도 도움이 됩니다.
  • Services Enumeration
  • 벤치마크 테스트를 올바르게 수행했다면 여기서 더 많은 잘못된 구성을 찾기 어려울 수 있지만, 벤치마크에서 찾지 못한 항목을 발견할 수도 있습니다.
  • 이는 클라우드 환경에서 정확히 무엇이 사용되고 있는지 알 수 있게 해줍니다.
  • 다음 단계에서 많은 도움이 됩니다.
  • Check exposed assets
  • 이전 섹션 동안 수행할 수 있으며, 인터넷에 잠재적으로 노출된 모든 것과 그것이 어떻게 접근되는지를 찾아야 합니다.
  • 여기서는 웹 페이지나 다른 포트가 노출된 인스턴스와 같은 수동으로 노출된 인프라뿐만 아니라 DBs나 buckets처럼 노출되도록 구성될 수 있는 클라우드 관리형 서비스도 포함합니다.
  • 그런 다음 해당 리소스가 노출될 수 있는지 여부(기밀 정보인가? 취약점인가? 노출된 서비스의 설정 오류인가?)를 확인해야 합니다.
  • Check permissions
  • 여기서는 클라우드 내 각 역할/사용자의 모든 권한을 찾아내고 그것들이 어떻게 사용되는지를 확인해야 합니다.
  • 너무 많은 고권한(모든 것을 제어) 계정이 있는가? 생성된 키가 사용되지 않고 있는가?… 대부분의 이러한 점검은 이미 벤치마크 테스트에서 수행되었어야 합니다.
  • 클라이언트가 OpenID나 SAML 또는 다른 federation을 사용 중이라면 각 역할이 어떻게 할당되는지에 대해 추가 정보를 요청해야 할 수도 있습니다(관리자 역할이 1명에게 할당되는 것과 100명에게 할당되는 것은 같지 않습니다).
  • 단순히 어떤 사용자가 admin 권한 ":"을 가지고 있는지를 찾는 것만으로는 충분하지 않습니다. 사용되는 서비스에 따라 매우 민감한 다른 많은 권한들이 있습니다.
  • 또한 권한을 남용하여 따를 수 있는 잠재적 privesc 경로들이 있습니다. 이 모든 것을 고려하고 가능한 많은 privesc 경로를 보고해야 합니다.
  • Check Integrations
  • 클라우드 환경 내에서 다른 클라우드나 SaaS와의 **통합(integrations)**이 사용되고 있을 가능성이 매우 높습니다.
  • 감사를 하는 클라우드와 다른 플랫폼 간의 통합에 대해서는 누가 그 통합을 (남용)할 수 있는지 알려야 하며, 수행되는 작업이 어느 정도 민감한지 물어보아야 합니다.
    예를 들어, GCP가 데이터를 가져오는 AWS 버킷에 누가 쓰기 권한이 있는지(그 작업이 GCP에서 해당 데이터를 처리할 때 얼마나 민감한지 물어보세요).
  • 감사를 하는 클라우드 내부로 외부 플랫폼에서의 통합에 대해서는 외부에서 누가 그 통합을 (남용)할 수 있는지 물어보고 해당 데이터가 어떻게 사용되는지 확인해야 합니다.
    예를 들어, 어떤 서비스가 GCR에 호스팅된 Docker 이미지를 사용한다면 누가 그 이미지를 수정할 수 있는지, 그리고 그 이미지가 AWS 클라우드 내부에서 실행될 때 어떤 민감한 정보와 접근 권한을 얻게 되는지 물어보아야 합니다.

Multi-Cloud 도구

여러 클라우드 환경을 테스트하는 데 사용할 수 있는 도구들이 있습니다. 이 섹션에서는 설치 단계와 링크를 안내합니다.

PurplePanda

클라우드 및 클라우드/SaaS 간의 잘못된 구성과 privesc 경로를 식별하는 도구입니다.

bash
# 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

Prowler

이 도구는 AWS, GCP & Azure를 지원합니다. 각 제공자를 구성하는 방법은 https://docs.prowler.cloud/en/latest/#aws에서 확인하세요.

bash
# 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

CloudSploit

AWS, Azure, Github, Google, Oracle, Alibaba

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

ScoutSuite

AWS, Azure, GCP, Alibaba Cloud, Oracle Cloud Infrastructure

bash
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

Steampipe를 다운로드하여 설치하세요 (https://steampipe.io/downloads). 또는 Brew를 사용하세요:

brew tap turbot/tap
brew install steampipe

cs-suite

지원: AWS, GCP, Azure, DigitalOcean.
python2.7이 필요하며 유지보수되지 않는 것으로 보임.

Nessus

Nessus는 Audit Cloud Infrastructure 스캔을 제공하며 지원 대상: AWS, Azure, Office 365, Rackspace, Salesforce. Azure에서 Client Id를 얻기 위해 일부 추가 구성이 필요함.

cloudlist

Cloudlist는 Cloud Providers로부터 Assets (Hostnames, IP Addresses)를 가져오는 multi-cloud tool for getting Assets입니다.

bash
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

Cartography는 Neo4j 데이터베이스로 구동되는 직관적인 그래프 뷰에서 인프라 자산과 자산 간의 관계를 통합하는 Python 도구입니다.

bash
# 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

Starbase는 클라우드 인프라, SaaS 애플리케이션, 보안 통제 등 서비스를 포함한 시스템에서 자산과 관계를 수집하여 Neo4j 데이터베이스 기반의 직관적인 그래프 뷰로 제공합니다.

bash
# 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

SkyArk

스캔된 AWS 또는 Azure 환경에서 AWS Shadow Admins를 포함한 가장 권한이 높은 사용자를 찾아냅니다. powershell을 사용합니다.

bash
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

Cloud Brute

회사(대상)의 인프라, 파일 및 앱을 주요 클라우드 제공업체(Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode)에서 찾아주는 도구입니다.

CloudFox

  • CloudFox는 cloud infrastructure에서 exploitable attack paths를 찾는 도구입니다(현재는 AWS & Azure만 지원하며 GCP는 추후 지원 예정입니다).
  • 수동 pentesting을 보완하도록 설계된 enumeration 도구입니다.
  • cloud environment 내의 데이터를 생성하거나 수정하지 않습니다.

More lists of cloud security tools

Google

GCP

GCP Pentesting

Workspace

GWS - Workspace Pentesting

AWS

AWS Pentesting

Azure

Azure Pentesting

Attack Graph

Stormspotter creates an “attack graph” of the resources in an Azure subscription. 이를 통해 red teams와 pentesters가 attack surface 및 pivot 기회를 시각화할 수 있으며, defenders가 incident response 작업의 우선순위를 빠르게 파악하고 정하는 데 큰 도움을 줍니다.

Office365

Global Admin 또는 최소한 Global Admin Reader 권한이 필요합니다(단, Global Admin Reader는 약간 제한적입니다). 그러나 이러한 제한은 일부 PS modules에서 나타나며, 웹 애플리케이션을 통해 기능에 접근하면 우회할 수 있습니다.

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기