AWS Pentesting

Reading time: 15 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Basic Information

Kabla ya kuanza pentesting mazingira ya AWS, kuna mambo machache muhimu unahitaji kujua kuhusu jinsi AWS inavyofanya kazi ili kukusaidia kuelewa unachohitaji kufanya, jinsi ya kupata makosa ya usanidi na jinsi ya kuyatumia.

Mifano kama vile hierarchi ya shirika, IAM na dhana nyingine za msingi zinaelezwa katika:

AWS - Basic Information

Labs to learn

Tools to simulate attacks:

AWS Pentester/Red Team Methodology

Ili kukagua mazingira ya AWS, ni muhimu sana kujua: ni huduma zipi zinatumika, nini kinacho onyeshwa, nani ana ufikiaji wa nini, na jinsi huduma za ndani za AWS na huduma za nje zinavyounganishwa.

Kutoka kwa mtazamo wa Red Team, hatua ya kwanza ya kuathiri mazingira ya AWS ni kupata akili fulani. Hapa kuna mawazo kadhaa juu ya jinsi ya kufanya hivyo:

  • Mvuja katika github (au sawa) - OSINT
  • Uhandisi wa Kijamii
  • Tena matumizi ya nywila (mvuja za nywila)
  • Uthibitisho katika Programu za AWS-Zilizohifadhiwa
  • Server Side Request Forgery yenye ufikiaji wa metadata endpoint
  • Usomaji wa Faili za Mitaa
  • /home/USERNAME/.aws/credentials
  • C:\Users\USERNAME\.aws\credentials
  • 3rd parties zilizoathirika
  • Mfanyakazi wa Ndani
  • Cognito credentials

Au kwa kuathiri huduma isiyo na uthibitisho iliyonyeshwa:

AWS - Unauthenticated Enum & Access

Au ikiwa unafanya kaguzi unaweza tu kuomba credentials na hizi nafasi:

AWS - Permissions for a Pentest

note

Baada ya kufanikiwa kupata credentials, unahitaji kujua ni nani mwenye hizo creds, na nini wana ufikiaji, hivyo unahitaji kufanya uainishaji wa msingi:

Basic Enumeration

SSRF

Ikiwa umepata SSRF katika mashine ndani ya AWS angalia ukurasa huu kwa mbinu:

Cloud SSRF - HackTricks

Whoami

Moja ya mambo ya kwanza unahitaji kujua ni wewe ni nani (katika akaunti gani uko na habari nyingine kuhusu mazingira ya AWS):

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

Kumbuka kwamba kampuni zinaweza kutumia canary tokens kubaini wakati tokens zinapokuwa zikiibiwa na kutumika. Inapendekezwa kuangalia kama token ni canary token au la kabla ya kuitumia.
Kwa maelezo zaidi angalia ukurasa huu.

Org Enumeration

AWS - Organizations Enum

IAM Enumeration

Ikiwa una ruhusa za kutosha kuangalia haki za kila kitengo ndani ya akaunti ya AWS itakusaidia kuelewa ni nini unaweza kufanya na vitambulisho vingine na jinsi ya kuinua haki.

Ikiwa huna ruhusa za kutosha kuhesabu IAM, unaweza kuiba kuzitafutia ili kujua.
Angalia jinsi ya kufanya hesabu na brute-forcing katika:

AWS - IAM, Identity Center & SSO Enum

note

Sasa kwamba una taarifa fulani kuhusu hati zako (na ikiwa wewe ni timu ya red, matumaini huja gundulika). Ni wakati wa kubaini ni huduma zipi zinazotumika katika mazingira.
Katika sehemu ifuatayo unaweza kuangalia njia kadhaa za kuhesabu huduma za kawaida.

Services Enumeration, Post-Exploitation & Persistence

AWS ina idadi kubwa ya huduma, katika ukurasa ufuatao utapata taarifa za msingi, hesabu cheatsheets**,** jinsi ya kuepuka kugunduliwa, kupata kuendelea, na hila nyingine za post-exploitation kuhusu baadhi yao:

AWS - Services

Kumbuka kwamba huhitaji kufanya kazi yote kwa mikono, hapa chini katika chapisho hili unaweza kupata sehemu kuhusu zana za kiotomatiki.

Zaidi ya hayo, katika hatua hii unaweza kugundua huduma zaidi zilizofichuliwa kwa watumiaji wasio na uthibitisho, unaweza kuwa na uwezo wa kuzitumia:

AWS - Unauthenticated Enum & Access

Privilege Escalation

Ikiwa unaweza kuangalia angalau ruhusa zako mwenyewe juu ya rasilimali tofauti unaweza kuangalia ikiwa unaweza kupata ruhusa zaidi. Unapaswa kuzingatia angalau ruhusa zilizoonyeshwa katika:

AWS - Privilege Escalation

Publicly Exposed Services

Wakati wa kuhesabu huduma za AWS unaweza kuwa umepata baadhi yao zinazoonyesha vitu kwenye Mtandao (VM/Containers ports, databases au queue services, snapshots au buckets...).
Kama pentester/red teamer unapaswa kila wakati kuangalia ikiwa unaweza kupata taarifa nyeti / udhaifu juu yao kwani zinaweza kukupa ufikiaji zaidi kwenye akaunti ya AWS.

Katika kitabu hiki unapaswa kupata taarifa kuhusu jinsi ya kupata huduma za AWS zilizofichuliwa na jinsi ya kuziangalia. Kuhusu jinsi ya kupata udhaifu katika huduma za mtandao zilizofichuliwa ningependekeza utafute huduma maalum katika:

HackTricks - HackTricks

Compromising the Organization

From the root/management account

Wakati akaunti ya usimamizi inaunda akaunti mpya katika shirika, jukumu jipya linaundwa katika akaunti mpya, kwa default linaitwa OrganizationAccountAccessRole na kutoa sera ya AdministratorAccess kwa akaunti ya usimamizi ili kufikia akaunti mpya.

Hivyo, ili kufikia kama msimamizi akaunti ya mtoto unahitaji:

  • Kuvunja akaunti ya usimamizi na kupata ID ya akaunti za watoto na majina ya jukumu (OrganizationAccountAccessRole kwa default) inayoruhusu akaunti ya usimamizi kufikia kama msimamizi.
  • Ili kupata akaunti za watoto nenda kwenye sehemu ya mashirika katika console ya aws au endesha aws organizations list-accounts
  • Huwezi kupata jina la majukumu moja kwa moja, hivyo angalia sera zote za kawaida za IAM na utafute yoyote inayoruhusu sts:AssumeRole juu ya akaunti za watoto zilizogunduliwa awali.
  • Kuvunja mwanachama katika akaunti ya usimamizi na sts:AssumeRole ruhusa juu ya jukumu katika akaunti za watoto (hata kama akaunti inaruhusu mtu yeyote kutoka akaunti ya usimamizi kujiwakilisha, kama ni akaunti ya nje, ruhusa maalum za sts:AssumeRole zinahitajika).

Automated Tools

Recon

  • aws-recon: Zana ya kukusanya hesabu inayolenga usalama wa AWS iliyoandikwa kwa Ruby.
bash
# 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 ni chombo cha multi-cloud kwa kupata Mali (Majina ya mwenyeji, Anwani za IP) kutoka kwa Watoa Huduma za Cloud.
  • cloudmapper: CloudMapper inakusaidia kuchambua mazingira yako ya Amazon Web Services (AWS). Sasa ina kazi nyingi zaidi, ikiwa ni pamoja na ukaguzi wa masuala ya usalama.
bash
# 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 ni chombo cha Python kinachounganisha mali za miundombinu na uhusiano kati yao katika mtazamo wa grafu wa kueleweka unaoendeshwa na hifadhidata ya Neo4j.
bash
# 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 inakusanya mali na uhusiano kutoka kwa huduma na mifumo ikiwa ni pamoja na miundombinu ya wingu, programu za SaaS, udhibiti wa usalama, na zaidi katika mtazamo wa grafu unaoeleweka unaoungwa mkono na hifadhidata ya Neo4j.
  • aws-inventory: (Inatumia python2) Hii ni zana inayojaribu kuvumbua yote rasilimali za AWS zilizoundwa katika akaunti.
  • aws_public_ips: Ni zana ya kupata anwani zote za IP za umma (zote IPv4/IPv6) zinazohusishwa na akaunti ya AWS.

Privesc & Exploiting

bash
# 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) ni script na maktaba ya kutambua hatari katika usanidi wa AWS Identity and Access Management (IAM) kwa akaunti ya AWS au shirika la AWS. Inatengeneza mfano wa Watumiaji na Majukumu tofauti ya IAM katika akaunti kama grafu iliyoelekezwa, ambayo inaruhusu ukaguzi wa kuinua mamlaka na njia mbadala ambazo mshambuliaji anaweza kuchukua ili kupata ufikiaji wa rasilimali au hatua katika AWS. Unaweza kuangalia idhini zinazotumika kutafuta njia za privesc katika majina ya faili yanayomalizika na _edges.py katika https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
bash
# 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 ni chombo cha Tathmini ya Usalama wa AWS IAM ambacho kinatambua ukiukaji wa haki za chini na kuzalisha ripoti ya HTML iliyo na kipaumbele cha hatari.
    Itakuonyesha wateja wanaoweza kuwa na haki nyingi, sera za inline na aws **na ni wakuu gani wana ufaccess kwao. (Haki hizi hazichunguzwi tu kwa privesc bali pia aina nyingine za ruhusa za kuvutia, inapendekezwa kutumika).
bash
# 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 inakadiria akaunti za AWS kwa udhaifu wa hijacking wa subdomain kutokana na usanidi wa Route53 na CloudFront ulioachwa mbali.
  • ccat: Orodha ya ECR repos -> Pull ECR repo -> Backdoor hiyo -> Push picha iliyokuwa na backdoor
  • Dufflebag: Dufflebag ni chombo ambacho kinatafuta kupitia picha za umma za Elastic Block Storage (EBS) kwa siri ambazo zinaweza kuwa ziachwa kwa bahati mbaya.

Audit

  • cloudsploit: CloudSploit na Aqua ni mradi wa chanzo wazi ulioandaliwa kuruhusu kugundua hatari za usalama katika akaunti za miundombinu ya wingu, ikiwa ni pamoja na: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI), na GitHub (Haifanyi utafutaji wa ShadowAdmins).
bash
./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 ni chombo cha usalama cha Open Source kufanya tathmini za mbinu bora za usalama za AWS, ukaguzi, majibu ya matukio, ufuatiliaji endelevu, kuimarisha na maandalizi ya uchunguzi.
bash
# 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 inakusaidia kupata ufahamu wa hali katika mazingira ya wingu yasiyojulikana. Ni zana ya mstari wa amri ya chanzo wazi iliyoundwa kusaidia wapimaji wa penzi na wataalamu wengine wa usalama wa kukabili kupata njia za shambulio zinazoweza kutumika katika miundombinu ya wingu.
bash
cloudfox aws --profile [profile-name] all-checks
  • ScoutSuite: Scout Suite ni chombo cha ukaguzi wa usalama wa multi-cloud kilicho wazi, ambacho kinawawezesha kutathmini hali ya usalama ya mazingira ya wingu.
bash
# 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 (inatumia python2.7 na inaonekana haijatunzwa)
  • Zeus: Zeus ni chombo chenye nguvu kwa ajili ya AWS EC2 / S3 / CloudTrail / CloudWatch / KMS mbinu bora za kuimarisha (inaonekana haijatunzwa). Inakagua tu akauti za msingi zilizowekwa ndani ya mfumo.

Ukaguzi wa Kudumu

  • cloud-custodian: Cloud Custodian ni injini ya sheria kwa ajili ya kusimamia akaunti na rasilimali za umma za wingu. Inawaruhusu watumiaji kufafanua sera za kuwezesha miundombinu ya wingu inayosimamiwa vizuri, ambayo ni salama na imeboreshwa kwa gharama. Inakusanya scripts nyingi za adhoc ambazo mashirika yana nazo kuwa chombo chepesi na chenye kubadilika, chenye vipimo na ripoti zilizounganishwa.
  • pacbot: Policy as Code Bot (PacBot) ni jukwaa la ufuatiliaji wa kuendelea wa ufuataji, ripoti za ufuataji na automatisering ya usalama kwa ajili ya wingu. Katika PacBot, sera za usalama na ufuataji zinawekwa kama msimbo. Rasilimali zote zinazogunduliwa na PacBot zinakaguliwa dhidi ya sera hizi ili kupima ufuataji wa sera. Mfumo wa auto-fix wa PacBot unatoa uwezo wa kujibu kiotomatiki kwa ukiukaji wa sera kwa kuchukua hatua zilizowekwa.
  • streamalert: StreamAlert ni mfumo wa uchambuzi wa data wa wakati halisi usio na seva ambao unakupa uwezo wa kuingiza, kuchambua, na kutoa tahadhari kuhusu data kutoka mazingira yoyote, ukitumia vyanzo vya data na mantiki ya tahadhari unayofafanua. Timu za usalama wa kompyuta zinatumia StreamAlert kuchanganua terabytes za data za kumbukumbu kila siku kwa ajili ya kugundua na kujibu matukio.

DEBUG: Capture AWS cli requests

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

Marejeo

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks