AWS Pentesting

Support HackTricks

Taarifa za Msingi

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

Mafunzo kama vile uongozi wa shirika, IAM na mafunzo mengine ya msingi yanaelezewa katika:

AWS - Basic Information

Maabara za Kujifunza

Zana za kuiga mashambulizi:

Mbinu za AWS Pentester/Red Team

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

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

  • Leaks kwenye github (au sawa) - OSINT

  • Uhandisi wa Kijamii

  • Matumizi ya nywila (password leaks)

  • Udhaifu katika Programu Zinazohifadhiwa na AWS

  • Server Side Request Forgery yenye upatikanaji wa metadata endpoint

  • Usomaji wa Faili za Ndani

  • /home/USERNAME/.aws/credentials

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

  • 3rd parties breached

  • Mfanyakazi wa Ndani

  • Cognito credentials

Au kwa kuathiri huduma isiyo na uthibitisho iliyofichuliwa:

AWS - Unauthenticated Enum & Access

Au kama unafanya mapitio unaweza tu kuomba credentials na majukumu haya:

AWS - Permissions for a Pentest

Baada ya kufanikiwa kupata credentials, unahitaji kujua credentials hizo ni za nani, na wana upatikanaji wa nini, kwa hivyo unahitaji kufanya baadhi ya 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 uko na taarifa 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 kuwa makampuni yanaweza kutumia canary tokens kutambua wakati tokens zinaibiwa na kutumiwa. Inashauriwa kuangalia kama token ni canary token au la kabla ya kuitumia. Kwa maelezo zaidi angalia ukurasa huu.

Org Enumeration

AWS - Organizations Enum

IAM Enumeration

Kama una ruhusa za kutosha kuangalia haki za kila chombo ndani ya akaunti ya AWS itakusaidia kuelewa unachoweza kufanya wewe na vitambulisho vingine na jinsi ya kuongeza haki.

Kama huna ruhusa za kutosha kuorodhesha IAM, unaweza kuiba kwa kutumia bruteforce ili kujua. Angalia jinsi ya kufanya orodha na brute-forcing katika:

AWS - IAM, Identity Center & SSO Enum

Sasa kwamba una taarifa kuhusu vitambulisho vyako (na kama wewe ni red team unatumaini hujaonekana). Ni wakati wa kujua ni huduma gani zinatumika katika mazingira. Katika sehemu inayofuata unaweza kuangalia njia za kuorodhesha huduma za kawaida.

Services Enumeration, Post-Exploitation & Persistence

AWS ina idadi kubwa ya huduma, katika ukurasa unaofuata utapata taarifa za msingi, cheatsheets za orodha, jinsi ya kuepuka kugunduliwa, kupata persistence, na mbinu zingine za post-exploitation kuhusu baadhi yao:

AWS - Services

Kumbuka kwamba huna haja ya kufanya kazi yote kwa mikono, hapa chini katika chapisho hili unaweza kupata sehemu kuhusu vifaa vya kiotomatiki.

Zaidi ya hayo, katika hatua hii unaweza kugundua huduma zaidi zilizo wazi kwa watumiaji wasio na uthibitisho, unaweza kuzitumia:

AWS - Unauthenticated Enum & Access

Privilege Escalation

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

AWS - Privilege Escalation

Publicly Exposed Services

Wakati wa kuorodhesha huduma za AWS unaweza kugundua baadhi yao zinazoonyesha vipengele kwa Intaneti (bandari za VM/Containers, hifadhidata au huduma za foleni, snapshots au buckets...). Kama pentester/red teamer unapaswa kila wakati kuangalia kama unaweza kupata taarifa nyeti / udhaifu juu yao kwani zinaweza kukupa upatikanaji zaidi katika akaunti ya AWS.

Katika kitabu hiki unapaswa kupata taarifa kuhusu jinsi ya kupata huduma za AWS zilizo wazi na jinsi ya kuzikagua. Kuhusu jinsi ya kupata udhaifu katika huduma za mtandao zilizo wazi ningependekeza kutafuta huduma maalum katika:

Compromising the Organization

Kutoka kwa akaunti ya root/management

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 kufikia akaunti mpya.

Kwa hivyo, ili kufikia kama msimamizi akaunti ya mtoto unahitaji:

  • Kuhujumu akaunti ya usimamizi na kupata ID ya akaunti za watoto na majina ya jukumu (OrganizationAccountAccessRole kwa default) kuruhusu akaunti ya usimamizi kufikia kama admin.

  • 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, kwa hivyo angalia sera zote za kawaida za IAM na tafuta yoyote inayoruhusu sts:AssumeRole juu ya akaunti za watoto zilizogunduliwa awali.

  • Kuhujumu principal 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 kuiga, kama ni akaunti ya nje, ruhusa maalum za sts:AssumeRole ni muhimu).

Automated Tools

Recon

  • aws-recon: Chombo cha ukusanyaji wa hesabu ya usalama wa AWS kilichoandikwa 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 cha kupata Mali (Hostnames, IP Addresses) kutoka kwa Watoa Huduma za Cloud.

  • cloudmapper: CloudMapper hukusaidia kuchambua mazingira yako ya Amazon Web Services (AWS). Sasa ina utendaji 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 zana ya Python inayounganisha mali za miundombinu na uhusiano kati yao katika mwonekano wa grafu unaoeleweka 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 mahusiano kutoka kwa huduma na mifumo ikijumuisha miundombinu ya cloud, programu za SaaS, udhibiti wa usalama, na zaidi katika mtazamo wa grafu wa angavu unaoungwa mkono na hifadhidata ya Neo4j.

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

  • aws_public_ips: Ni zana ya kupata anwani zote za IP za umma (IPv4/IPv6 zote) zinazohusiana 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 kwa ajili ya kutambua hatari katika usanidi wa AWS Identity and Access Management (IAM) kwa akaunti ya AWS au shirika la AWS. Inaunda watumiaji tofauti wa IAM na Majukumu katika akaunti kama grafu iliyoelekezwa, ambayo inawezesha ukaguzi wa privilege escalation na njia mbadala ambazo mshambuliaji anaweza kuchukua kupata rasilimali au hatua katika AWS. Unaweza kuangalia ruhusa zinazotumika kupata privesc njia katika majina ya faili yanayoishia 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 ukiukaji wa upendeleo mdogo na kutoa ripoti ya HTML iliyopewa kipaumbele cha hatari. Itakuonyesha wateja wenye upendeleo wa ziada, sera za inline na aws na ni nani wanaoziweza. (Haikagui tu 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 inakagua akaunti za AWS kwa madhara ya utekaji wa subdomain kutokana na usanidi wa Route53 na CloudFront ulioachwa.

  • ccat: Orodhesha repos za ECR -> Vuta repo ya ECR -> Iweke backdoor -> Sukuma picha yenye backdoor

  • Dufflebag: Dufflebag ni chombo kinachotafuta kupitia snapshots 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 kugundua hatari za usalama katika akaunti za miundombinu ya wingu, ikijumuisha: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI), na GitHub (Haitafuti 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 Huria kinachotumika kufanya tathmini za mbinu bora za usalama za AWS, ukaguzi, majibu ya matukio, ufuatiliaji endelevu, kuimarisha na utayari wa uchunguzi wa kisheria.

# 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 katika mazingira ya wingu usiyoyafahamu. Ni zana ya wazi ya mstari wa amri iliyoundwa kusaidia wapimaji wa kupenya na wataalamu wengine wa usalama wa kushambulia 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 kinawezesha tathmini ya hali ya usalama ya mazingira ya cloud.

# 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 haijasasishwa)

  • Zeus: Zeus ni chombo chenye nguvu kwa AWS EC2 / S3 / CloudTrail / CloudWatch / KMS kwa mbinu bora za kuimarisha usalama (inaonekana haijasasishwa). Inakagua tu creds zilizosanidiwa kwa default ndani ya mfumo.

Ukaguzi wa Mara kwa Mara

  • cloud-custodian: Cloud Custodian ni injini ya sheria kwa ajili ya kusimamia akaunti na rasilimali za umma za wingu. Inaruhusu watumiaji kufafanua sera ili kuwezesha miundombinu ya wingu iliyosimamiwa vizuri, ambayo ni salama na imeboreshwa kwa gharama. Inajumuisha maandiko mengi ya adhoc ambayo mashirika yanayo katika chombo chepesi na rahisi, na vipimo na ripoti zilizojumuishwa.

  • pacbot: Policy as Code Bot (PacBot) ni jukwaa kwa ajili ya uangalizi wa kuendelea wa kufuata sheria, ripoti za kufuata na uendeshaji wa usalama kwa wingu. Katika PacBot, sera za usalama na kufuata zinatumiwa kama kanuni. Rasilimali zote zilizogunduliwa na PacBot zinatathminiwa dhidi ya sera hizi ili kupima ufuataji wa sera. Mfumo wa auto-fix wa PacBot unatoa uwezo wa kujibu kiotomatiki ukiukaji wa sera kwa kuchukua hatua zilizowekwa awali.

  • streamalert: StreamAlert ni mfumo wa uchambuzi wa data wa wakati halisi usio na seva ambao unakuwezesha kumeza, kuchambua, na kutoa tahadhari juu ya data kutoka kwa mazingira yoyote, ukitumia vyanzo vya data na mantiki ya kutoa tahadhari unayofafanua. Timu za usalama wa kompyuta hutumia StreamAlert kuchanganua terabaiti za data za logi 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 ...

Marejeo

Support HackTricks

Last updated