AWS Pentesting

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 zinaelezewa katika:

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 kufanikiwa kupata akili. Hapa kuna mawazo kadhaa juu ya jinsi ya kufanya hivyo:

  • Mvuvi katika github (au sawa) - OSINT

  • Uhandisi wa Kijamii

  • Mara kwa mara ya nywila (mvuvi wa nywila)

  • Uhalifu katika Maombi ya AWS-Hosted

  • Server Side Request Forgery yenye ufikiaji wa metadata endpoint

  • Usomaji wa Faili za Mitaa

  • /home/USERNAME/.aws/credentials

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

  • wahusika wa 3rd parties

  • Mfanyakazi wa Ndani

  • Cognito credentials

Au kwa kuathiri huduma isiyo na uthibitisho iliyonyeshwa:

Au ikiwa unafanya mapitio unaweza tu kuomba akili na hizi nafasi:

Baada ya kufanikiwa kupata akili, unahitaji kujua ni nani mwenye akili hizo, 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:

Whoami

Moja ya mambo ya kwanza unahitaji kujua ni wewe ni nani (katika akaunti gani uko na habari nyingine kuhusu mazingira ya 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

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

IAM Enumeration

Ikiwa una ruhusa za kutosha kuangalia haki za kila chombo ndani ya akaunti ya AWS kutakusaidia kuelewa kile unachoweza 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:

Sasa kwamba una taarifa fulani kuhusu hati zako (na ikiwa wewe ni timu nyekundu matumaini huja gundulika). Ni wakati wa kubaini ni huduma zipi zinatumika 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 kugundulika, kupata kuendelea, na hila nyingine za baada ya unyakuzi kuhusu baadhi yao:

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:

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:

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:

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 inaitwa 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 tafuta 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.

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

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

# 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 muonekano wa grafu wa kueleweka 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

# 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

# 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 ndogo na kuzalisha ripoti ya HTML iliyo na kipaumbele cha hatari. Itakuonyesha mteja ambaye anaweza kuwa na haki nyingi, sera za inline na aws **na ni wakuu gani wana ufikiaji wa hizo. (Haki hizi hazichunguzwi tu kwa privesc bali pia aina nyingine za ruhusa za kuvutia, inapendekezwa kutumika).

# 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 vulnerabilities za hijacking subdomain kutokana na usanidi wa Route53 na CloudFront ulioachwa.

  • 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).

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

# 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 wapentester na wataalamu wengine wa usalama wa kukabili kupata njia za shambulio zinazoweza kutumika katika miundombinu ya wingu.

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.

# 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 AWS EC2 / S3 / CloudTrail / CloudWatch / KMS mbinu bora za kuimarisha (inaonekana haijatunzwa). Inakagua tu akauti zilizowekwa kwa chaguo-msingi 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 mengi ya skripti 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 utii, ripoti za utii na automatisering ya usalama kwa ajili ya wingu. Katika PacBot, sera za usalama na utii zinawekwa kama msimbo. Rasilimali zote zinazogunduliwa na PacBot zinakaguliwa dhidi ya sera hizi ili kupima utii wa sera. Mfumo wa auto-fix wa PacBot unatoa uwezo wa kujibu moja kwa moja kwa ukiukaji wa sera kwa kuchukua hatua zilizowekwa awali.

  • 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

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

References

Support HackTricks

Last updated