AWS Pentesting

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

Voordat jy begin pentesting van 'n **AWS-omgewing is daar 'n paar basiese dinge wat jy moet weet oor hoe AWS werk om jou te help verstaan wat jy moet doen, hoe om misconfiguraties te vind en hoe om dit te benut.

Konsepte soos organisasie-hierargie, IAM en ander basiese konsepte word verduidelik in:

AWS - Basic Information

Laboratoriums om te leer

Hulpmiddels om aanvalle te simuleer:

AWS Pentester/Red Team Metodologie

Om 'n AWS-omgewing te oudit, is dit baie belangrik om te weet: watter dienste word gebruik, wat blootgestel word, wie het toegang tot wat, en hoe is interne AWS-dienste en eksterne dienste gekoppel.

Vanuit 'n Red Team-oogpunt is die eerste stap om 'n AWS-omgewing te kompromitteer om te slaag om sekere gelde te verkry. Hier het jy 'n paar idees oor hoe om dit te doen:

  • Lekke in github (of soortgelyk) - OSINT

  • Sosiale Ingenieurswese

  • Wagwoord hergebruik (wagwoordlek)

  • Kwesbaarhede in AWS-gehoste Aansoeke

  • Bedienerkant Aanvraagvervalsing met toegang tot metadata-eindpunt

  • Plaaslike Lêes van Lêers

  • /home/USERNAME/.aws/credentials

  • C:\Users\USERNAME\.aws\credentials

  • 3de partye gekraak

  • Interne Werknemer

Of deur 'n ongeagte diens wat blootgestel is, te kompromitteer:

AWS - Unauthenticated Enum & Access

Of as jy 'n ondersoek doen, kan jy net vra vir gelde met hierdie rolle:

AWS - Permissions for a Pentest

Nadat jy daarin geslaag het om gelde te verkry, moet jy weet aan wie behoort daardie gelde, en wat hulle toegang tot het, dus moet jy 'n paar basiese opname uitvoer:

Basiese Opname

SSRF

As jy 'n SSRF in 'n masjien binne AWS gevind het, kyk na hierdie bladsy vir truuks:

Wie is ek

Een van die eerste dinge wat jy moet weet, is wie jy is (in watter rekening jy is en ander inligting oor die AWS-omgewing):

# 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

Let wel dat maatskappye kanarie tokens kan gebruik om te identifiseer wanneer tokens gesteel en gebruik word. Dit word aanbeveel om te kontroleer of 'n token 'n kanarie token is voordat dit gebruik word. Vir meer inligting kyk na hierdie bladsy.

Organisasie Opname

AWS - Organizations Enum

IAM Opname

As jy genoeg toestemmings het om die voorregte van elke entiteit binne die AWS-rekening te kontroleer sal dit jou help om te verstaan wat jy en ander identiteite kan doen en hoe om voorregte te eskaleer.

As jy nie genoeg toestemmings het om IAM te opneem nie, kan jy hulle bruteforce om dit uit te vind. Kyk hoe om die opname en bruteforcing te doen in:

AWS - IAM, Identity Center & SSO Enum

Nou dat jy inligting oor jou geloofsbriewe het (en as jy 'n rooi span is, hopelik het jy nie opgespoor nie). Dit is tyd om uit te vind watter dienste in die omgewing gebruik word. In die volgende afdeling kan jy 'n paar maniere vind om sekere algemene dienste op te som.

Dienste Opname, Post-Exploitation & Volharding

AWS het 'n verbysterende hoeveelheid dienste, op die volgende bladsy sal jy basiese inligting, opname-spiekbriefjies, hoe om opsporing te vermy, verkry volharding, en ander post-exploitation truuks oor sommige van hulle vind:

AWS - Services

Merk op dat jy nie al die werk handmatig hoef te doen nie, onderaan in hierdie pos kan jy 'n afdeling oor outomatiese gereedskap vind.

Verder, in hierdie stadium het jy dalk ontdek dat daar meer dienste aan ongeagte gebruikers blootgestel is, jy mag hulle kan uitbuit:

AWS - Unauthenticated Enum & Access

Voorreg Eskalasie

As jy ten minste jou eie toestemmings kan kontroleer oor verskillende bronne kan jy kyk of jy verdere toestemmings kan verkry. Jy behoort ten minste te fokus op die toestemmings wat aangedui word in:

AWS - Privilege Escalation

Openlik Blootgestelde Dienste

Terwyl jy AWS-dienste opneem, mag jy sommige van hulle vind wat elemente aan die internet blootstel (VM/Containers-poorte, databasisse of koeie dienste, oomblikke of emmers...). As pentester/rooi span moet jy altyd kyk of jy sensitiewe inligting / kwesbaarhede daarop kan vind aangesien dit jou verdere toegang tot die AWS-rekening kan bied.

In hierdie boek behoort jy inligting te vind oor hoe om blootgestelde AWS-dienste te vind en hoe om hulle te kontroleer. Oor hoe om kwesbaarhede in blootgestelde netwerkdienste te vind, sal ek aanbeveel om te soek vir die spesifieke diens in:

Organisasie Kompromittering

Vanaf die hoof/bestuursrekening

Wanneer die bestuursrekening nuwe rekeninge in die organisasie skep, word 'n nuwe rol in die nuwe rekening geskep, standaard genoem OrganizationAccountAccessRole en gee AdministratorAccess beleid aan die bestuursrekening om toegang tot die nuwe rekening te verkry.

Dus, om as administrateur toegang tot 'n kinderrekening te verkry, het jy nodig:

  • Kompromitteer die bestuursrekening en vind die ID van die kinderrekeninge en die name van die rol (Standaard OrganizationAccountAccessRole) wat die bestuursrekening toelaat om as admin toegang te verkry.

  • Om kinderrekeninge te vind, gaan na die organisasieseksie in die AWS-konsole of hardloop aws organizations list-accounts

  • Jy kan nie die name van die rolle direk vind nie, so kontroleer al die aangepaste IAM-beleide en soek na enige wat sts:AssumeRole oor die voorheen ontdekte kinderrekeninge toelaat.

  • Kompromitteer 'n prinsipaal in die bestuursrekening met sts:AssumeRole toestemming oor die rol in die kinderrekeninge (selfs al laat die rekening enigeen van die bestuursrekening toe om te impersoneer, aangesien dit 'n eksterne rekening is, is spesifieke sts:AssumeRole toestemmings nodig).

Outomatiese Gereedskap

Opname

  • aws-recon: 'n Veelvuldige AWS-sekuriteitsgefokusseerde inventarisversamelingswerktuig geskryf in 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 is 'n multi-cloud tool vir die verkryging van bates (Gasheername, IP-adresse) van Wolkleweransiers.

  • cloudmapper: CloudMapper help jou om jou Amazon Web Services (AWS) omgewings te analiseer. Dit bevat nou baie meer funksionaliteit, insluitend ouditering vir sekuriteitskwessies.

# 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 is 'n Python-werktuig wat infrastruktuur bates en die verhoudings tussen hulle konsolideer in 'n intuïtiewe grafiese aansig aangedryf deur 'n Neo4j databasis.

# 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 versamel bates en verhoudings van dienste en stelsels, insluitend wolkinfrastruktuur, SaaS-toepassings, sekuriteitsbeheer, en meer in 'n intuïtiewe grafiese weergawe ondersteun deur die Neo4j-databasis.

  • aws-inventory: (Gebruik python2) Hierdie is 'n instrument wat probeer om **alle AWS-bronne wat in 'n rekening geskep is, te ontdek.

  • aws_public_ips: Dit is 'n instrument om alle openbare IP-adresse (beide IPv4/IPv6) wat met 'n AWS-rekening geassosieer is, te kry.

Privesc & Uitbuiting

# 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: Die Hoofafbeelding (PMapper) is 'n skrip en biblioteek om risiko's in die konfigurasie van AWS Identity and Access Management (IAM) vir 'n AWS-rekening of 'n AWS-organisasie te identifiseer. Dit modelleer die verskillende IAM-gebruikers en rolle in 'n rekening as 'n gerigte grafiek, wat kontrole vir bevoorregte eskalasie en vir alternatiewe paaie wat 'n aanvaller kan neem om toegang tot 'n hulpbron of aksie in AWS te verkry. Jy kan die toestemmings wat gebruik word om privesc-paaie te vind nagaan in die lêreindes wat eindig op _edges.py in 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 is 'n AWS IAM Sekuriteitsassesseringswerktuig wat oortredings van die beginsel van minste bevoegdheid identifiseer en 'n risiko-geprioriteerde HTML-verslag genereer. Dit sal jou potensieel oorbevoegde kliënt, inline en aws beleide wys en watter prinsipale toegang daartoe het. (Dit kyk nie net vir bevoegdheidsverhoging nie, maar ook vir ander soorte interessante toestemmings, aanbeveel om te gebruik).

# 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 assesseer AWS-rekeninge vir subdomein-kaping kwesbaarhede as gevolg van ontkoppelde Route53 en CloudFront konfigurasies.

  • ccat: Lys ECR-opslag -> Trek ECR-opslag -> Agterdeur dit -> Druk teruggekapte beeld

  • Dufflebag: Dufflebag is 'n gereedskap wat deur openbare Elastiese Blok-opbergings (EBS) snagsels soek vir geheime wat moontlik per ongeluk agtergelaat is.

Oudit

  • cloudsploit: CloudSploit deur Aqua is 'n oopbronprojek wat ontwerp is om die opsporing van sekuriteitsrisiko's in wolk-infrastruktuur-rekeninge moontlik te maak, insluitend: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI), en GitHub (Dit soek nie na ShadowAdmins nie).

./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 is 'n Oopbron-sekuriteitsinstrument om AWS-sekuriteitsbestpraktykassessering, oudits, insidentreaksie, deurlopende monitering, verharding en forensiese gereedheid uit te voer.

# 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 help jou om situasiebewustheid te kry in onbekende wolkomgewings. Dit is 'n oopbron-kommalynhulpmiddel wat geskep is om pentesters en ander aanvallende sekuriteitsprofessionele te help om uitbuitbare aanvalspaaie in wolkinfrastruktuur te vind.

cloudfox aws --profile [profile-name] all-checks
  • ScoutSuite: Scout Suite is 'n oopbron multi-cloud sekuriteitsouditeringswerktuig wat sekuriteitspostuurbepaling van wolk-omgewings moontlik maak.

# Install
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help

# Get info
scout aws -p dev
  • cs-suite: Wolkmeging Suite (gebruik python2.7 en lyk ongemaintain)

  • Zeus: Zeus is 'n kragtige instrument vir AWS EC2 / S3 / CloudTrail / CloudWatch / KMS beste harding praktyke (lyk ongemaintain). Dit toets slegs standaard geconfigureerde geloofsbriewe binne die stelsel.

Deurlopende Oudit

  • cloud-custodian: Wolkbewaarder is 'n reëls engine vir die bestuur van openbare wolkrekeninge en bronne. Dit stel gebruikers in staat om beleide te definieer om 'n goed bestuurde wolk-infrastruktuur moontlik te maak, wat beide veilig en koste-geoptimeer is. Dit konsolideer baie van die adhoc-skripte wat organisasies het in 'n ligte en buigsame instrument, met eenvormige metriese en verslagdoening.

  • pacbot: Beleid as Kode Bot (PacBot) is 'n platform vir deurlopende nakomingmonitering, nakomingsverslagdoening en sekuriteitsoutomatisering vir die wolk. In PacBot word sekuriteits- en nakomingsbeleide as kode geïmplementeer. Alle bronne wat deur PacBot ontdek word, word geëvalueer teen hierdie beleide om beleidsooreenstemming te meet. Die PacBot outo-herstel-raamwerk bied die vermoë om outomaties op beleidsoortredings te reageer deur voorafbepaalde aksies te neem.

  • streamalert: StreamAlert is 'n bedienerlose, werklike tyd data-analise-raamwerk wat jou bemagtig om data van enige omgewing te inkom, analiseer, en waarsku oor data van enige omgewing, deur data-bronne en waarskuingslogika wat jy definieer te gebruik. Rekenaarsekuriteitspanne gebruik StreamAlert om terabytes logdata elke dag te skandeer vir insidentopsporing en -reaksie.

DEBUG: Vang AWS cli-versoeke

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

Verwysings

Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated