AWS Pentesting
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Podstawowe informacje
Przed rozpoczęciem pentestingu środowiska AWS istnieje kilka podstawowych rzeczy, które musisz wiedzieć o tym, jak działa AWS, aby pomóc Ci zrozumieć, co musisz zrobić, jak znaleźć błędy konfiguracyjne i jak je wykorzystać.
Koncepcje takie jak hierarchia organizacji, IAM i inne podstawowe pojęcia są wyjaśnione w:
Laboratoria do nauki
- https://github.com/RhinoSecurityLabs/cloudgoat
- https://github.com/BishopFox/iam-vulnerable
- https://github.com/nccgroup/sadcloud
- https://github.com/bridgecrewio/terragoat
- https://github.com/ine-labs/AWSGoat
- http://flaws.cloud/
- http://flaws2.cloud/
Narzędzia do symulacji ataków:
- https://github.com/Datadog/stratus-red-team/
- https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main
Metodologia Pentestera/Red Team w AWS
Aby audytować środowisko AWS, bardzo ważne jest, aby wiedzieć: które usługi są używane, co jest eksponowane, kto ma dostęp do czego i jak są połączone wewnętrzne usługi AWS z zewnętrznymi usługami.
Z punktu widzenia Red Team, pierwszym krokiem do skompromitowania środowiska AWS jest uzyskanie jakichś poświadczeń. Oto kilka pomysłów, jak to zrobić:
- Wycieki w githubie (lub podobnych) - OSINT
- Inżynieria społeczna
- Ponowne użycie haseł (wycieki haseł)
- Luki w aplikacjach hostowanych w AWS
- Server Side Request Forgery z dostępem do punktu końcowego metadanych
- Odczyt lokalnych plików
/home/USERNAME/.aws/credentialsC:\Users\USERNAME\.aws\credentials- 3rd parties złamane
- Wewnętrzny pracownik
- Cognito poświadczenia
Lub przez skomplikowanie niezautoryzowanej usługi eksponowanej:
AWS - Unauthenticated Enum & Access
Lub jeśli robisz przegląd, możesz po prostu poprosić o poświadczenia z tymi rolami:
AWS - Permissions for a Pentest
Note
Po uzyskaniu poświadczeń musisz wiedzieć do kogo należą te poświadczenia i do czego mają dostęp, więc musisz przeprowadzić podstawową enumerację:
Podstawowa enumeracja
SSRF
Jeśli znalazłeś SSRF na maszynie wewnątrz AWS, sprawdź tę stronę w poszukiwaniu sztuczek:
Whoami
Jedną z pierwszych rzeczy, które musisz wiedzieć, jest to, kim jesteś (w jakim koncie jesteś i inne informacje o środowisku AWS):
# Easiest way, but might be monitored?
aws sts get-caller-identity
aws iam get-user # This will get your own user
# If you have a Key ID
aws sts get-access-key-info --access-key-id=ASIA1234567890123456
# Get inside error message
aws sns publish --topic-arn arn:aws:sns:us-east-1:*account id*:aaa --message aaa
# From metadata
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document
Caution
Zauważ, że firmy mogą używać canary tokens, aby zidentyfikować, kiedy tokeny są kradzione i używane. Zaleca się sprawdzenie, czy token jest tokenem canary, zanim go użyjesz.
Więcej informacji sprawdź tę stronę.
Org Enumeration
IAM Enumeration
Jeśli masz wystarczające uprawnienia, sprawdzenie uprawnień każdej jednostki w koncie AWS pomoże Ci zrozumieć, co Ty i inne tożsamości możecie zrobić oraz jak eskalować uprawnienia.
Jeśli nie masz wystarczających uprawnień do enumeracji IAM, możesz ukraść je za pomocą brute force, aby je ustalić.
Sprawdź jak przeprowadzić enumerację i brute-forcing w:
AWS - IAM, Identity Center & SSO Enum
Note
Teraz, gdy masz pewne informacje o swoich poświadczeniach (a jeśli jesteś w red team, miejmy nadzieję, że nie zostałeś wykryty). Czas ustalić, które usługi są używane w środowisku.
W następnej sekcji możesz sprawdzić kilka sposobów na enumerację niektórych powszechnych usług.
Services Enumeration, Post-Exploitation & Persistence
AWS ma zdumiewającą ilość usług, na następnej stronie znajdziesz podstawowe informacje, enumerację cheatsheets**,** jak unikać wykrycia, uzyskać persistence i inne triki po eksploatacji dotyczące niektórych z nich:
Zauważ, że nie musisz wykonywać całej pracy ręcznie, poniżej w tym poście możesz znaleźć sekcję o automatycznych narzędziach.
Co więcej, na tym etapie możesz odkryć więcej usług wystawionych dla użytkowników nieautoryzowanych, które możesz wykorzystać:
AWS - Unauthenticated Enum & Access
Privilege Escalation
Jeśli możesz sprawdzić przynajmniej swoje własne uprawnienia do różnych zasobów, możesz sprawdzić, czy możesz uzyskać dalsze uprawnienia. Powinieneś skupić się przynajmniej na uprawnieniach wskazanych w:
Publicly Exposed Services
Podczas enumeracji usług AWS mogłeś znaleźć niektóre z nich wystawiające elementy do Internetu (porty VM/Kontenerów, bazy danych lub usługi kolejkowe, migawki lub koszyki…).
Jako pentester/red teamer zawsze powinieneś sprawdzić, czy możesz znaleźć wrażliwe informacje / luki w nich, ponieważ mogą one zapewnić Ci dalszy dostęp do konta AWS.
W tej książce powinieneś znaleźć informacje o tym, jak znaleźć wystawione usługi AWS i jak je sprawdzić. Na temat tego, jak znaleźć luki w wystawionych usługach sieciowych, zalecałbym szukać konkretnej usługi w:
Compromising the Organization
From the root/management account
Gdy konto zarządzające tworzy nowe konta w organizacji, w nowym koncie tworzona jest nowa rola, domyślnie nazwana OrganizationAccountAccessRole i nadająca politykę AdministratorAccess dla konta zarządzającego, aby uzyskać dostęp do nowego konta.
.png)
Aby uzyskać dostęp jako administrator do konta podrzędnego, musisz:
- Skompromitować konto zarządzające i znaleźć ID konta podrzędnego oraz nazwy ról (domyślnie OrganizationAccountAccessRole), które pozwalają kontu zarządzającemu uzyskać dostęp jako administrator.
- Aby znaleźć konta podrzędne, przejdź do sekcji organizacji w konsoli AWS lub uruchom
aws organizations list-accounts - Nie możesz znaleźć nazw ról bezpośrednio, więc sprawdź wszystkie niestandardowe polityki IAM i poszukaj jakichkolwiek, które pozwalają na
sts:AssumeRolenad wcześniej odkrytymi kontami podrzędnymi. - Skompromituj podmiot w koncie zarządzającym z
sts:AssumeRoleuprawnieniem nad rolą w kontach podrzędnych (nawet jeśli konto pozwala każdemu z konta zarządzającego na podszywanie się, ponieważ jest to konto zewnętrzne, konkretne uprawnieniasts:AssumeRolesą konieczne).
Automated Tools
Recon
- aws-recon: Narzędzie do zbierania inwentarza skoncentrowane na bezpieczeństwie AWS, napisane w Ruby.
# Install
gem install aws_recon
# Recon and get json
AWS_PROFILE=<profile> aws_recon \
--services S3,EC2 \
--regions global,us-east-1,us-east-2 \
--verbose
- cloudlist: Cloudlist to wielochmurowe narzędzie do pozyskiwania zasobów (nazwy hostów, adresy IP) od dostawców chmury.
- cloudmapper: CloudMapper pomaga w analizie twoich środowisk Amazon Web Services (AWS). Teraz zawiera znacznie więcej funkcji, w tym audyt problemów z bezpieczeństwem.
# Installation steps in github
# Create a config.json file with the aws info, like:
{
"accounts": [
{
"default": true,
"id": "<account id>",
"name": "dev"
}
],
"cidrs":
{
"2.2.2.2/28": {"name": "NY Office"}
}
}
# Enumerate
python3 cloudmapper.py collect --profile dev
## Number of resources discovered
python3 cloudmapper.py stats --accounts dev
# Create HTML report
## In the report you will find all the info already
python3 cloudmapper.py report --accounts dev
# Identify potential issues
python3 cloudmapper.py audit --accounts dev --json > audit.json
python3 cloudmapper.py audit --accounts dev --markdow > audit.md
python3 cloudmapper.py iam_report --accounts dev
# Identify admins
## The permissions search for are in https://github.com/duo-labs/cloudmapper/blob/4df9fd7303e0337ff16a08f5e58f1d46047c4a87/shared/iam_audit.py#L163-L175
python3 cloudmapper.py find_admins --accounts dev
# Identify unused elements
python3 cloudmapper.py find_unused --accounts dev
# Identify publivly exposed resources
python3 cloudmapper.py public --accounts dev
python cloudmapper.py prepare #Prepare webserver
python cloudmapper.py webserver #Show webserver
- cartography: 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.
# Install
pip install cartography
## At the time of this writting you need neo4j version 3.5.*
# Get AWS info
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt --neo4j-user neo4j
- starbase: Starbase zbiera zasoby i relacje z usług i systemów, w tym infrastruktury chmurowej, aplikacji SaaS, kontroli bezpieczeństwa i innych, w intuicyjnym widoku graficznym opartym na bazie danych Neo4j.
- aws-inventory: (Używa python2) To narzędzie, które próbuje odkryć wszystkie zasoby AWS utworzone w koncie.
- aws_public_ips: To narzędzie do pobierania wszystkich publicznych adresów IP (zarówno IPv4/IPv6) związanych z kontem AWS.
Privesc & Exploiting
- SkyArk: Odkryj najbardziej uprzywilejowanych użytkowników w skanowanym środowisku AWS, w tym AWS Shadow Admins. Używa powershell. Możesz znaleźć definicję uprzywilejowanych polityk w funkcji
Check-PrivilegedPolicyw https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1. - pacu: Pacu to otwartoźródłowe ramy eksploatacji AWS, zaprojektowane do testowania bezpieczeństwa ofensywnego w środowiskach chmurowych. Może enumerować, znajdować błędy konfiguracyjne i je eksploatować. Możesz znaleźć definicję uprzywilejowanych uprawnień w https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 wewnątrz słownika
user_escalation_methods. - Zauważ, że pacu sprawdza tylko twoje własne ścieżki privesc (nie w skali całego konta).
# Install
## Feel free to use venvs
pip3 install pacu
# Use pacu CLI
pacu
> import_keys <profile_name> # import 1 profile from .aws/credentials
> import_keys --all # import all profiles
> list # list modules
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
- PMapper: Principal Mapper (PMapper) to skrypt i biblioteka do identyfikacji ryzyk w konfiguracji AWS Identity and Access Management (IAM) dla konta AWS lub organizacji AWS. Modeluje różnych użytkowników i role IAM w koncie jako skierowany graf, co umożliwia sprawdzanie eskalacji uprawnień oraz alternatywnych ścieżek, którymi atakujący mógłby się posłużyć, aby uzyskać dostęp do zasobu lub akcji w AWS. Możesz sprawdzić uprawnienia używane do znajdowania ścieżek privesc w plikach kończących się na
_edges.pyw https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
# Install
pip install principalmapper
# Get data
pmapper --profile dev graph create
pmapper --profile dev graph display # Show basic info
# Generate graph
pmapper --profile dev visualize # Generate svg graph file (can also be png, dot and graphml)
pmapper --profile dev visualize --only-privesc # Only privesc permissions
# Generate analysis
pmapper --profile dev analysis
## Run queries
pmapper --profile dev query 'who can do iam:CreateUser'
pmapper --profile dev query 'preset privesc *' # Get privescs with admins
# Get organization hierarchy data
pmapper --profile dev orgs create
pmapper --profile dev orgs display
- cloudsplaining: Cloudsplaining to narzędzie do oceny bezpieczeństwa AWS IAM, które identyfikuje naruszenia zasady najmniejszych uprawnień i generuje raport HTML z priorytetem ryzyka.
Pokaże ci potencjalnie nadmiernie uprawnionego klienta, polityki inline i aws oraz które podmioty mają do nich dostęp. (Sprawdza nie tylko privesc, ale także inne interesujące uprawnienia, zaleca się użycie).
# Install
pip install cloudsplaining
# Download IAM policies to check
## Only the ones attached with the versions used
cloudsplaining download --profile dev
# Analyze the IAM policies
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
- cloudjack: CloudJack ocenia konta AWS pod kątem wrażliwości na przejęcie subdomen w wyniku rozdzielonych konfiguracji Route53 i CloudFront.
- ccat: Lista repozytoriów ECR -> Pobierz repozytorium ECR -> Wprowadź backdoora -> Wypchnij obraz z backdoorem
- Dufflebag: Dufflebag to narzędzie, które przeszukuje publiczne migawki Elastic Block Storage (EBS) w poszukiwaniu sekretów, które mogły zostać przypadkowo pozostawione.
Audyt
- cloudsploit: CloudSploit od Aqua to projekt open-source zaprojektowany w celu wykrywania ryzyk bezpieczeństwa w kontach infrastruktury chmurowej, w tym: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) oraz GitHub (nie szuka ShadowAdmins).
./index.js --csv=file.csv --console=table --config ./config.js
# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
- Prowler: Prowler to narzędzie zabezpieczeń typu Open Source do przeprowadzania ocen najlepszych praktyk bezpieczeństwa AWS, audytów, reakcji na incydenty, ciągłego monitorowania, wzmacniania i gotowości do analizy kryminalistycznej.
# Install python3, jq and git
# Install
pip install prowler
prowler -v
# Run
prowler <provider>
prowler aws --profile custom-profile [-M csv json json-asff html]
- CloudFox: CloudFox pomaga uzyskać świadomość sytuacyjną w nieznanych środowiskach chmurowych. Jest to narzędzie wiersza poleceń typu open source stworzone, aby pomóc testerom penetracyjnym i innym profesjonalistom w dziedzinie bezpieczeństwa ofensywnego znaleźć wykorzystywalne ścieżki ataku w infrastrukturze chmurowej.
cloudfox aws --profile [profile-name] all-checks
- ScoutSuite: Scout Suite to narzędzie do audytu bezpieczeństwa w chmurze, które jest otwartym źródłem i umożliwia ocenę stanu bezpieczeństwa środowisk chmurowych.
# Install
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help
# Get info
scout aws -p dev
- cs-suite: Cloud Security Suite (używa python2.7 i wygląda na nieutrzymywaną)
- Zeus: Zeus to potężne narzędzie do najlepszych praktyk zabezpieczania AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (wygląda na nieutrzymywane). Sprawdza tylko domyślnie skonfigurowane poświadczenia w systemie.
Stały audyt
- cloud-custodian: Cloud Custodian to silnik reguł do zarządzania publicznymi kontami i zasobami w chmurze. Umożliwia użytkownikom definiowanie polityk w celu zapewnienia dobrze zarządzanej infrastruktury chmurowej, która jest zarówno bezpieczna, jak i zoptymalizowana kosztowo. Konsoliduje wiele ad-hoc skryptów, które organizacje mają, w lekkie i elastyczne narzędzie, z jednolitymi metrykami i raportowaniem.
- pacbot: Policy as Code Bot (PacBot) to platforma do ciągłego monitorowania zgodności, raportowania zgodności i automatyzacji bezpieczeństwa dla chmury. W PacBot polityki bezpieczeństwa i zgodności są wdrażane jako kod. Wszystkie zasoby odkryte przez PacBot są oceniane w odniesieniu do tych polityk, aby ocenić zgodność z polityką. Ramy auto-fix PacBot zapewniają możliwość automatycznej reakcji na naruszenia polityki poprzez podejmowanie zdefiniowanych działań.
- streamalert: StreamAlert to bezserwerowa, w czasie rzeczywistym ramka analizy danych, która umożliwia przyjmowanie, analizowanie i powiadamianie o danych z dowolnego środowiska, używając źródeł danych i logiki powiadamiania, które definiujesz. Zespoły bezpieczeństwa komputerowego używają StreamAlert do skanowania terabajtów danych dzienników każdego dnia w celu wykrywania incydentów i reakcji.
DEBUG: Przechwytywanie żądań AWS cli
# Set proxy
export HTTP_PROXY=http://localhost:8080
export HTTPS_PROXY=http://localhost:8080
# Capture with burp nor verifying ssl
aws --no-verify-ssl ...
# Dowload brup cert and transform it to pem
curl http://127.0.0.1:8080/cert --output Downloads/certificate.cer
openssl x509 -inform der -in Downloads/certificate.cer -out Downloads/certificate.pem
# Indicate the ca cert to trust
export AWS_CA_BUNDLE=~/Downloads/certificate.pem
# Run aws cli normally trusting burp cert
aws ...
Odniesienia
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

