AWS Pentesting
Reading time: 15 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Pre nego što započnete pentesting AWS okruženja, postoji nekoliko osnovnih stvari koje treba da znate o tome kako AWS funkcioniše kako biste razumeli šta treba da radite, kako da pronađete pogrešne konfiguracije i kako da ih iskoristite.
Koncepti kao što su hijerarhija organizacije, IAM i drugi osnovni koncepti su objašnjeni u:
Laboratorije za učenje
- 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/
Alati za simulaciju napada:
- https://github.com/Datadog/stratus-red-team/
- https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main
AWS Pentester/Red Team metodologija
Da biste auditovali AWS okruženje, veoma je važno znati: koje usluge se koriste, šta je izloženo, ko ima pristup čemu, i kako su interne AWS usluge povezane sa spoljnim uslugama.
Sa stanovišta Red Teama, prvi korak za kompromitovanje AWS okruženja je da uspete da dobijete neke akreditive. Evo nekoliko ideja kako to učiniti:
- Leaking na github-u (ili sličnom) - OSINT
- Društveno inženjerstvo
- Ponovna upotreba lozinki (curenje lozinki)
- Ranljivosti u AWS-hostovanim aplikacijama
- Server Side Request Forgery sa pristupom metadata endpoint-u
- Čitanje lokalnih fajlova
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
- 3rd parties provaljeni
- Interni zaposleni
- Cognito akreditivi
Ili kompromitovanjem neautentifikovane usluge koja je izložena:
AWS - Unauthenticated Enum & Access
Ili ako radite reviziju, mogli biste jednostavno tražiti akreditive sa ovim rolama:
AWS - Permissions for a Pentest
note
Nakon što ste uspeli da dobijete akreditive, treba da znate čijim akreditivima pripadaju, i čemu imaju pristup, tako da treba da izvršite neku osnovnu enumeraciju:
Osnovna enumeracija
SSRF
Ako ste pronašli SSRF na mašini unutar AWS-a, proverite ovu stranicu za trikove:
Whoami
Jedna od prvih stvari koje treba da znate je ko ste (u kojem računu se nalazite i druge informacije o AWS okruženju):
# 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
Imajte na umu da kompanije mogu koristiti canary tokens da identifikuju kada se tokeni kradu i koriste. Preporučuje se da proverite da li je token canary token pre nego što ga upotrebite.
Za više informacija proverite ovu stranicu.
Org Enumeration
IAM Enumeration
Ako imate dovoljno dozvola, proveravanje privilegija svake entiteta unutar AWS naloga pomoći će vam da razumete šta vi i druge identitete možete da radite i kako da povećate privilegije.
Ako nemate dovoljno dozvola da enumerišete IAM, možete ukrasti brute-force da ih otkrijete.
Proverite kako da uradite numeraciju i brute-forcing u:
AWS - IAM, Identity Center & SSO Enum
note
Sada kada imate neke informacije o vašim kredencijalima (i ako ste red tim, nadamo se da niste otkriveni). Vreme je da otkrijete koje se usluge koriste u okruženju.
U sledećem odeljku možete proveriti neke načine da enumerišete neke uobičajene usluge.
Services Enumeration, Post-Exploitation & Persistence
AWS ima neverovatnu količinu usluga, na sledećoj stranici naći ćete osnovne informacije, enumeraciju cheatsheets**,** kako da izbegnete otkrivanje, dobijete persistence, i druge post-exploitation trikove o nekima od njih:
Imajte na umu da ne morate obavljati sav posao ručno, ispod u ovom postu možete pronaći odeljak o automatskim alatima.
Štaviše, u ovoj fazi možda ste otkrili više usluga izloženih neautentifikovanim korisnicima, možda ćete moći da ih iskoristite:
AWS - Unauthenticated Enum & Access
Privilege Escalation
Ako možete proveriti barem svoje dozvole nad različitim resursima, mogli biste proveriti da li možete dobiti dodatne dozvole. Trebalo bi da se fokusirate barem na dozvole navedene u:
Publicly Exposed Services
Dok enumerišete AWS usluge, možda ste pronašli neke od njih koje izlažu elemente internetu (VM/Containers portovi, baze podataka ili usluge reda, snimci ili kante...).
Kao pentester/red tim, uvek biste trebali proveriti da li možete pronaći osetljive informacije / ranjivosti na njima jer bi vam mogle pružiti dalji pristup AWS nalogu.
U ovoj knjizi trebali biste pronaći informacije o tome kako pronaći izložene AWS usluge i kako ih proveriti. O tome kako pronaći ranjivosti u izloženim mrežnim uslugama, preporučujem vam da pretražujete specifičnu uslugu u:
Compromising the Organization
From the root/management account
Kada menadžerski nalog kreira nove naloge u organizaciji, nova uloga se kreira u novom nalogu, po defaultu nazvana OrganizationAccountAccessRole
i daje AdministratorAccess politiku menadžerskom nalogu da pristupi novom nalogu.
.png)
Dakle, da biste pristupili kao administrator detetovom nalogu, potrebno je:
- Kompromitovati menadžerski nalog i pronaći ID dečijih naloga i imena uloge (OrganizationAccountAccessRole po defaultu) koja omogućava menadžerskom nalogu da pristupi kao admin.
- Da biste pronašli dečije naloge, idite na odeljak organizacija u aws konzoli ili pokrenite
aws organizations list-accounts
- Ne možete direktno pronaći imena uloga, pa proverite sve prilagođene IAM politike i pretražujte bilo koju koja omogućava
sts:AssumeRole
nad prethodno otkrivenim dečijim nalozima. - Kompromitujte principal u menadžerskom nalogu sa
sts:AssumeRole
dozvolom nad ulogom u dečijim nalozima (čak i ako nalog omogućava bilo kome iz menadžerskog naloga da se impersonira, kao što je eksterni nalog, specifičnests:AssumeRole
dozvole su neophodne).
Automated Tools
Recon
- aws-recon: Alat za prikupljanje inventara fokusiran na AWS sigurnost, napisan u Ruby-u.
# 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 je alat za više oblaka za dobijanje resursa (Hostname, IP adrese) od provajdera oblaka.
- cloudmapper: CloudMapper vam pomaže da analizirate svoja Amazon Web Services (AWS) okruženja. Sada sadrži mnogo više funkcionalnosti, uključujući reviziju za bezbednosne probleme.
# 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 je Python alat koji konsoliduje infrastrukturne resurse i odnose između njih u intuitivnom grafičkom prikazu koji pokreće Neo4j baza podataka.
# 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 prikuplja resurse i odnose iz servisa i sistema uključujući cloud infrastrukturu, SaaS aplikacije, bezbednosne kontrole i još mnogo toga u intuitivnom grafičkom prikazu podržanom od strane Neo4j baze podataka.
- aws-inventory: (Koristi python2) Ovo je alat koji pokušava da otkrije sve AWS resurse kreirane u nalogu.
- aws_public_ips: To je alat za preuzimanje svih javnih IP adresa (i IPv4/IPv6) povezanih sa AWS nalogom.
Privesc & Exploiting
- SkyArk: Otkrijte najprivilegovanije korisnike u skeniranoj AWS sredini, uključujući AWS Shadow Admins. Koristi powershell. Možete pronaći definiciju privilegovanih politika u funkciji
Check-PrivilegedPolicy
u https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1. - pacu: Pacu je open-source AWS exploitation framework, dizajniran za ofanzivno testiranje bezbednosti protiv cloud okruženja. Može enumerisati, pronaći greške u konfiguraciji i iskoristiti ih. Možete pronaći definiciju privilegovanih dozvola u https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 unutar
user_escalation_methods
rečnika. - Imajte na umu da pacu samo proverava vaše vlastite privesc puteve (ne na nivou celog naloga).
# 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) je skripta i biblioteka za identifikaciju rizika u konfiguraciji AWS Identity and Access Management (IAM) za AWS nalog ili AWS organizaciju. Modeluje različite IAM korisnike i uloge u nalogu kao usmereni graf, što omogućava provere za privilege escalation i za alternativne puteve koje napadač može da preuzme kako bi dobio pristup resursu ili akciji u AWS-u. Možete proveriti permissions used to find privesc puteve u datotekama koje se završavaju sa
_edges.py
u 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 je alat za procenu bezbednosti AWS IAM koji identifikuje kršenja minimalnih privilegija i generiše izveštaj u HTML formatu sa prioritetom rizika.
Prikazaće vam potencijalno previše privilegovanog korisnika, inline i aws politike i koji principali imaju pristup njima. (Ne proverava samo privesc već i druge zanimljive dozvole, preporučuje se korišćenje).
# 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 procenjuje AWS naloge na ranjivosti u preuzimanju poddomena kao rezultat odvojenih Route53 i CloudFront konfiguracija.
- ccat: Lista ECR repozitorijuma -> Preuzmi ECR repozitorijum -> Uvedi backdoor -> Pomerite backdoor-ovanu sliku
- Dufflebag: Dufflebag je alat koji pretražuje javne Elastic Block Storage (EBS) snimke za tajne koje su možda slučajno ostavljene.
Revizija
- cloudsploit: CloudSploit od Aqua je projekat otvorenog koda dizajniran da omogući otkrivanje bezbednosnih rizika u cloud infrastrukturi naloga, uključujući: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) i GitHub (ne traži 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 je alat otvorenog koda za procenu najboljih praksi bezbednosti AWS-a, revizije, odgovor na incidente, kontinuirano praćenje, učvršćivanje i spremnost za forenziku.
# 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 vam pomaže da steknete situacionu svest u nepoznatim cloud okruženjima. To je alat otvorenog koda za komandnu liniju kreiran da pomogne pentesterima i drugim profesionalcima u ofanzivnoj bezbednosti da pronađu iskoristive napadne puteve u cloud infrastrukturi.
cloudfox aws --profile [profile-name] all-checks
- ScoutSuite: Scout Suite je alat za bezbednosnu reviziju otvorenog koda za više oblaka, koji omogućava procenu bezbednosnog stanja oblaka.
# 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 (koristi python2.7 i izgleda neodržavano)
- Zeus: Zeus je moćan alat za AWS EC2 / S3 / CloudTrail / CloudWatch / KMS najbolje prakse učvršćivanja (izgleda neodržavano). Proverava samo podrazumevane konfiguracije kredencijala unutar sistema.
Kontinuirana Revizija
- cloud-custodian: Cloud Custodian je motor pravila za upravljanje javnim cloud računima i resursima. Omogućava korisnicima da definišu politike za omogućavanje dobro upravljane cloud infrastrukture, koja je i sigurna i optimizovana za troškove. Konsoliduje mnoge ad-hoc skripte koje organizacije imaju u lagan i fleksibilan alat, sa jedinstvenim metrikama i izveštavanjem.
- pacbot: Policy as Code Bot (PacBot) je platforma za kontinuirano praćenje usklađenosti, izveštavanje o usklađenosti i automatizaciju bezbednosti za cloud. U PacBot-u, bezbednosne i usklađene politike se implementiraju kao kod. Svi resursi koje otkrije PacBot se ocenjuju prema ovim politikama kako bi se procenila usklađenost sa politikama. PacBot auto-fix okvir pruža mogućnost automatskog odgovora na kršenja politika preduzimanjem unapred definisanih akcija.
- streamalert: StreamAlert je serverless, real-time okvir za analizu podataka koji vam omogućava da prikupljate, analizirate i obaveštavate o podacima iz bilo kog okruženja, koristeći izvore podataka i logiku obaveštavanja koju definišete. Timovi za računarstvo bezbednosti koriste StreamAlert da skeniraju terabajte log podataka svakog dana za detekciju incidenata i odgovor.
DEBUG: Zabeleži AWS cli zahteve
# 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 ...
Reference
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.