AWS Pentesting

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalamu wa Timu Nyekundu ya HackTricks AWS)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

Kabla ya kuanza kudukua mazingira ya AWS kuna mambo machache ya msingi unayohitaji kujua kuhusu jinsi AWS inavyofanya kazi ili kukusaidia kuelewa unachohitaji kufanya, jinsi ya kupata upangaji mbaya na jinsi ya kuzitumia.

Mifano kama muundo wa shirika, IAM na dhana nyingine msingi zinaelezewa katika:

pageAWS - Basic Information

Maabara za Kujifunza

Zana za kusimuliza mashambulizi:

Mbinu ya Mtaalamu wa AWS/Red Team

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

Kutoka mtazamo wa Timu Nyekundu, hatua ya kwanza ya kudhoofisha mazingira ya AWS ni kufanikiwa kupata vyeti fulani. Hapa kuna baadhi ya mawazo kuhusu jinsi ya kufanya hivyo:

  • Vuvuzela kwenye github (au sawa) - OSINT

  • Uhandisi wa Kijamii

  • Matumizi ya nywila (vuvuzela za nywila)

  • Udhaifu katika Maombi Yaliyohifadhiwa kwenye AWS

  • Udukuzi wa Ombi la Upande wa Seva na upatikanaji wa mwisho wa metadata

  • Soma Faili za Ndani

  • /home/USERNAME/.aws/credentials

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

  • 3rd parties zilizovunjwa

  • Mfanyakazi wa Ndani

Au kwa kudhoofisha huduma isiyo na uthibitishaji iliyofunuliwa:

pageAWS - Unauthenticated Enum & Access

Au ikiwa unafanya mapitio unaweza tu kuomba vyeti na majukumu haya:

pageAWS - Permissions for a Pentest

Baada ya kufanikiwa kupata vyeti, unahitaji kujua vyeti hivyo ni vya nani, na wanayo upatikanaji wa nini, hivyo unahitaji kufanya uchunguzi wa msingi:

Uchunguzi wa Msingi

SSRF

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

Whoami

Moja ya mambo ya kwanza unayohitaji kujua ni wewe ni nani (katika akaunti gani wewe ni na habari zingine 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

Tafadhali kumbuka kuwa makampuni wanaweza kutumia canary tokens kutambua wakati tokens zinaporwa na kutumiwa. Inashauriwa kuhakiki ikiwa token ni canary token au la kabla ya kuitumia. Kwa maelezo zaidi angalia ukurasa huu.

Uchambuzi wa Shirika

pageAWS - Organizations Enum

Uchambuzi wa IAM

Ikiwa una idhini za kutosha kuchunguza mamlaka ya kila kitengo ndani ya akaunti ya AWS itakusaidia kuelewa unachoweza kufanya wewe na utambulisho wengine na jinsi ya kuongeza mamlaka.

Ikiwa huna idhini za kutosha kuchambua IAM, unaweza kuiba kwa nguvu ili kugundua. Angalia jinsi ya kufanya uchambuzi na kubadilisha nguvu katika:

pageAWS - IAM, Identity Center & SSO Enum

Sasa kwamba una habari kuhusu vitambulisho vyako (na ikiwa wewe ni timu nyekundu kwa matumaini haujagunduliwa). Ni wakati wa kugundua ni huduma zipi zinatumika katika mazingira. Katika sehemu ifuatayo unaweza kuchunguza njia kadhaa za kuchambua huduma za kawaida.

Uchambuzi wa Huduma, Baada ya Kudukuliwa & Uimara

AWS ina idadi kubwa ya huduma, kwenye ukurasa ufuatao utapata habari za msingi, uchambuzi wa cheatsheets**,** jinsi ya kuepuka kugunduliwa, kupata uimara, na mbinu zingine za baada ya kudukuliwa kuhusu baadhi yao:

pageAWS - Services

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

Zaidi ya hayo, katika hatua hii unaweza kugundua huduma zaidi zilizofichuliwa kwa watumiaji wasiothibitishwa, unaweza kuzitumia:

pageAWS - Unauthenticated Enum & Access

Kuongeza Mamlaka

Ikiwa unaweza kuchunguza angalau idhini zako mwenyewe juu ya rasilimali tofauti unaweza kuchunguza ikiwa unaweza kupata idhini zaidi. Unapaswa angalau kuzingatia idhini zilizotajwa katika:

pageAWS - Privilege Escalation

Huduma Zilizofichuliwa Kwa Umma

Wakati wa kuchambua huduma za AWS unaweza kugundua baadhi yao zinazofichua vitu kwa Mtandao (VM/Ports za Kontena, databases au huduma za foleni, picha au vikapu...). Kama mchambuzi wa usalama/timu nyekundu unapaswa daima kuhakikisha ikiwa unaweza kupata habari nyeti / mapungufu kwao kwani wanaweza kukupa upatikanaji zaidi kwenye akaunti ya AWS.

Katika kitabu hiki unapaswa kupata habari kuhusu jinsi ya kupata huduma za AWS zilizofichuliwa na jinsi ya kuzichunguza. Kuhusu jinsi ya kupata mapungufu katika huduma za mtandao zilizofichuliwa ningependekeza utafutaji kwa huduma maalum katika:

Kudukua Shirika

Kutoka kwenye akaunti ya msingi/ya usimamizi

Wakati akaunti ya usimamizi inaunda akaunti mpya katika shirika, jukumu jipya linaundwa katika akaunti mpya, kwa chaguo-msingi jina lake ni OrganizationAccountAccessRole na kutoa sera ya AdministratorAccess kwa akaunti ya usimamizi kufikia akaunti mpya.

Kwa hivyo, ili kupata ufikiaji kama msimamizi kwenye akaunti ya mtoto unahitaji:

  • Kudukua akaunti ya usimamizi na kupata ID za akaunti za watoto na majina ya jukumu (kwa chaguo-msingi OrganizationAccountAccessRole) kuruhusu akaunti ya usimamizi kupata kama msimamizi.

  • Ili kupata akaunti za watoto nenda kwenye sehemu za shirika kwenye konsoli ya aws au endesha aws organizations list-accounts

  • Huwezi kupata majina ya majukumu moja kwa moja, kwa hivyo hakiki sera zote za kawaida za IAM na utafute yoyote inayoruhusu sts:AssumeRole juu ya akaunti za watoto zilizogunduliwa hapo awali.

  • Kudukua msingi katika akaunti ya usimamizi na sts:AssumeRole ruhusu juu ya jukumu katika akaunti za watoto (hata ikiwa akaunti inaruhusu yeyote kutoka kwa akaunti ya usimamizi kujifanya, kwa kuwa ni akaunti ya nje, ruhusa maalum za sts:AssumeRole ni muhimu).

Zana za Kiotomatiki

Uchunguzi

  • aws-recon: Zana ya ukusanyaji wa orodha ya usalama ya AWS iliyofanywa kwa Ruby yenye nyuzi nyingi.

# 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 zana ya multi-cloud ya kupata Mali (Hostnames, Anwani za IP) kutoka kwa Watoa Huduma wa Cloud.

  • cloudmapper: CloudMapper inakusaidia kuchambua mazingira yako ya Amazon Web Services (AWS). Sasa ina kazi 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 ambacho hukusanya mali za miundombinu na mahusiano kati yao katika mtazamo wa grafu wa kueleweka unaotumia database 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 mahusiano kutoka kwa huduma na mifumo ikiwa ni pamoja na miundombinu ya wingu, programu za SaaS, udhibiti wa usalama, na zaidi katika mtazamo wa grafu ulio na msingi wa Neo4j database.

  • aws-inventory: (Inatumia python2) Hii ni chombo kinachojaribu kugundua rasilimali zote za AWS zilizoundwa katika akaunti.

  • aws_public_ips: Ni chombo cha kupata anwani zote za IP za umma (IPv4/IPv6) zilizohusishwa na akaunti ya AWS.

Privesc & Kutumia

# 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. Inaunda watumiaji na Majukumu tofauti ya IAM katika akaunti kama grafu inayoelekezwa, ambayo inawezesha ukaguzi wa kuongezeka kwa mamlaka na njia mbadala ambayo mshambuliaji anaweza kuchukua kupata ufikiaji wa rasilimali au hatua katika AWS. Unaweza kuangalia ruhusa zilizotumiwa kupata njia za privesc katika majina ya faili yaliyomalizika 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 kinachotambua uvunjaji wa haki ya chini na kuzalisha ripoti ya hatari iliyopewa kipaumbele kwa muundo wa HTML. Itakuonyesha wateja wanaoweza kuwa na mamlaka zaidi, sera za ndani na za aws na ni madaftari gani yanayo upatikanaji kwao. (Haitathmini tu kwa ajili ya privesc bali pia aina nyingine za ruhusa za kuvutia, inapendekezwa kutumia).

# 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 inachunguza akaunti za AWS kwa mapungufu ya utekaji wa subdomain kama matokeo ya mizunguko iliyotenganishwa ya mipangilio ya Route53 na CloudFront.

  • ccat: Orodhesha repos za ECR -> Pata repo ya ECR -> Weka mlango wa nyuma -> Push picha iliyo na mlango wa nyuma

  • Dufflebag: Dufflebag ni chombo kinachofanya utafutaji kupitia picha za Elastic Block Storage (EBS) za umma kwa siri ambazo zinaweza kuwa zimeachwa kwa bahati mbaya.

Ukaguzi

  • cloudsploit: CloudSploit na Aqua ni mradi wa chanzo wazi ulioundwa kuruhusu ugunduzi wa 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 (Haitafuta 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 chanzo wazi kinachotumika kufanya tathmini za mazoea bora ya usalama wa AWS, ukaguzi, majibu ya dharura, ufuatiliaji endelevu, kuimarisha na maandalizi ya uchunguzi wa kisayansi.

# 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 uelewa wa hali ya mazingira ya wingu ambayo si ya kawaida. Ni chombo cha amri cha chanzo wazi kilichoundwa kusaidia watafiti wa uingiliaji na wataalamu wengine wa usalama wa kushambulia kupata njia za mashambulizi yanayoweza kutumiwa katika miundombinu ya wingu.

cloudfox aws --profile [profile-name] all-checks
  • ScoutSuite: Scout Suite ni chombo cha ukaguzi wa usalama wa wingu cha chanzo wazi, ambacho kinawezesha tathmini ya hali ya usalama wa 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: Suite ya Usalama wa Cloud (inatumia python2.7 na inaonekana haijatunzwa)

  • Zeus: Zeus ni chombo kikali kwa mazoea bora ya kufanya salama kwa AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (inaonekana haijatunzwa). Inachunguza tu uthibitishaji wa msingi ulioconfigure ndani ya mfumo.

Ukaguzi wa Mara Kwa Mara

  • cloud-custodian: Cloud Custodian ni injini ya sheria ya kusimamia akaunti za umma za wingu na rasilimali. Inaruhusu watumiaji kutunga sera za kuwezesha miundombinu salama na iliyooptimizwa kwa gharama. Inaunganisha skripti nyingi za adhoc za mashirika kuwa chombo nyepesi na mpana, na takwimu na ripoti zilizounganishwa.

  • pacbot: Boti ya Kanuni kama Kanuni (PacBot) ni jukwaa la ukaguzi wa kufuata mara kwa mara, ripoti za kufuata na otomatiki ya usalama kwa wingu. Katika PacBot, sera za usalama na kufuata zinatekelezwa kama kanuni. Rasilimali zote zilizogunduliwa na PacBot hupimwa dhidi ya sera hizi ili kupima ufuataji wa sera. Mtandao wa kurekebisha-otomatiki wa PacBot hutoa uwezo wa kujibu moja kwa moja kwa uvunjaji wa sera kwa kuchukua hatua zilizopangwa mapema.

  • streamalert: StreamAlert ni mfumo wa uchambuzi wa data wa wakati halisi usio na seva ambao unakuwezesha kunasa, kuchambua, na kutoa tahadhari kuhusu data kutoka mazingira yoyote, ukitumia vyanzo vya data na mantiki ya tahadhari unayoitaja. Timu za usalama wa kompyuta hutumia StreamAlert kuscan terabytes ya data ya log kila siku kwa kugundua na kujibu matukio.

DEBUG: Kukamata maombi ya 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 ...

Marejeo

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated