Pentesting Cloud Methodology

Support HackTricks

Basic Methodology

Każda chmura ma swoje własne szczególności, ale ogólnie rzecz biorąc, istnieje kilka wspólnych rzeczy, które pentester powinien sprawdzić podczas testowania środowiska chmurowego:

  • Sprawdzanie benchmarków

  • To pomoże Ci zrozumieć rozmiar środowiska i używane usługi

  • Pozwoli to również znaleźć kilka szybkich błędów konfiguracyjnych, ponieważ większość tych testów można przeprowadzić za pomocą automatycznych narzędzi

  • Enumaracja usług

  • Prawdopodobnie nie znajdziesz tutaj wielu błędów konfiguracyjnych, jeśli poprawnie przeprowadziłeś testy benchmarkowe, ale możesz znaleźć niektóre, które nie były brane pod uwagę w teście benchmarkowym.

  • To pozwoli Ci wiedzieć co dokładnie jest używane w środowisku chmurowym

  • To bardzo pomoże w następnych krokach

  • Sprawdź wystawione zasoby

  • Można to zrobić podczas poprzedniej sekcji, musisz dowiedzieć się, co jest potencjalnie wystawione w Internecie i jak można to uzyskać.

  • Tutaj mam na myśli ręcznie wystawioną infrastrukturę, taką jak instancje z stronami internetowymi lub innymi portami, które są wystawione, a także inne usługi zarządzane w chmurze, które mogą być skonfigurowane do wystawienia (takie jak bazy danych lub kosze)

  • Następnie powinieneś sprawdzić czy ten zasób może być wystawiony czy nie (informacje poufne? luki? błędy konfiguracyjne w wystawionej usłudze?)

  • Sprawdź uprawnienia

  • Tutaj powinieneś dowiedzieć się o wszystkich uprawnieniach każdej roli/użytkownika w chmurze i jak są one używane

  • Zbyt wiele wysoko uprzywilejowanych (kontrolujących wszystko) kont? Wygenerowane klucze, które nie są używane?... Większość tych kontroli powinna być już przeprowadzona w testach benchmarkowych

  • Jeśli klient korzysta z OpenID lub SAML lub innej federacji, możesz potrzebować poprosić ich o dodatkowe informacje na temat jak każda rola jest przypisywana (to nie to samo, co przypisanie roli administratora do 1 użytkownika lub do 100)

  • Nie wystarczy znaleźć, którzy użytkownicy mają uprawnienia administratora "*:*". Istnieje wiele innych uprawnień, które w zależności od używanych usług mogą być bardzo wrażliwe.

  • Co więcej, istnieją potencjalne ścieżki privesc, które można śledzić, nadużywając uprawnień. Wszystkie te rzeczy powinny być brane pod uwagę, a jak najwięcej ścieżek privesc powinno być zgłoszonych.

  • Sprawdź integracje

  • Jest bardzo prawdopodobne, że integracje z innymi chmurami lub SaaS są używane w środowisku chmurowym.

  • Dla integracji chmury, którą audytujesz z inną platformą powinieneś powiadomić kto ma dostęp do (nadużywania) tej integracji i powinieneś zapytać jak wrażliwa jest wykonywana akcja. Na przykład, kto może pisać w koszu AWS, z którego GCP pobiera dane (zapytaj, jak wrażliwa jest akcja w GCP w związku z tymi danymi).

  • Dla integracji wewnątrz chmury, którą audytujesz z zewnętrznych platform, powinieneś zapytać kto ma dostęp zewnętrzny do (nadużywania) tej integracji i sprawdzić, jak te dane są używane. Na przykład, jeśli usługa korzysta z obrazu Dockera hostowanego w GCR, powinieneś zapytać, kto ma dostęp do jego modyfikacji i jakie wrażliwe informacje oraz dostęp uzyska ten obraz po uruchomieniu w chmurze AWS.

Multi-Cloud tools

Istnieje kilka narzędzi, które można wykorzystać do testowania różnych środowisk chmurowych. Kroki instalacji i linki będą wskazane w tej sekcji.

Narzędzie do identyfikacji złych konfiguracji i ścieżek privesc w chmurach i między chmurami/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

Obsługuje AWS, GCP i Azure. Sprawdź, jak skonfigurować każdego dostawcę w 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

Pobierz i zainstaluj Steampipe (https://steampipe.io/downloads). Lub użyj Brew:

brew tap turbot/tap
brew install steampipe

AWS, GCP, Azure, DigitalOcean. Wymaga python2.7 i wygląda na nieutrzymywane.

Nessus

Nessus ma skan Audit Cloud Infrastructure wspierający: AWS, Azure, Office 365, Rackspace, Salesforce. Wymagane są dodatkowe konfiguracje w Azure, aby uzyskać Client Id.

Cloudlist to narzędzie multi-cloud do pozyskiwania zasobów (nazwy hostów, adresy IP) od dostawców chmury.

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 to narzędzie w Pythonie, które konsoliduje zasoby infrastruktury oraz relacje między nimi w intuicyjnym widoku graficznym zasilanym przez bazę danych Neo4j.

# 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 zbiera zasoby i relacje z usług i systemów, w tym infrastruktury chmurowej, aplikacji SaaS, kontroli bezpieczeństwa i innych, w intuicyjny widok graficzny wspierany przez bazę danych 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

Odkryj najbardziej uprzywilejowanych użytkowników w zeskanowanym środowisku AWS lub Azure, w tym AWS Shadow Admins. Używa 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

Narzędzie do znajdowania infrastruktury, plików i aplikacji firmy (cel) na czołowych dostawcach chmury (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).

  • CloudFox to narzędzie do znajdowania wykorzystywalnych ścieżek ataku w infrastrukturze chmurowej (obecnie wspierane tylko AWS i Azure, GCP wkrótce).

  • Jest to narzędzie do enumeracji, które ma na celu uzupełnienie ręcznego pentestingu.

  • Nie tworzy ani nie modyfikuje żadnych danych w środowisku chmurowym.

Więcej list narzędzi do zabezpieczeń chmurowych

Google

GCP

Workspace

AWS

Azure

Attack Graph

Stormspotter tworzy „graf ataku” zasobów w subskrypcji Azure. Umożliwia zespołom red i pentesterom wizualizację powierzchni ataku i możliwości pivotowania w obrębie najemcy, a także wspomaga obrońców w szybkim orientowaniu się i priorytetyzowaniu pracy związanej z odpowiedzią na incydenty.

Office365

Potrzebujesz Global Admin lub przynajmniej Global Admin Reader (ale zauważ, że Global Admin Reader jest nieco ograniczony). Jednak te ograniczenia pojawiają się w niektórych modułach PS i można je obejść, uzyskując dostęp do funkcji za pośrednictwem aplikacji internetowej.

Wsparcie dla HackTricks

Last updated