Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA

This commit is contained in:
Translator
2025-03-17 03:51:52 +00:00
parent 62f9b49b93
commit 5bb58d1316
3 changed files with 111 additions and 83 deletions

BIN
src/images/vm_to_aa.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

View File

@@ -27,7 +27,7 @@ Stoga, postoje **dva tipa računa u organizaciji** (govorimo o AWS računima, a
Račun za upravljanje ima **odgovornosti računa za plaćanje** i odgovoran je za plaćanje svih troškova koje generišu članovi računi. Ne možete promeniti račun za upravljanje organizacijom.
- **Članovi računi** čine sve ostale račune u organizaciji. Račun može biti član samo jedne organizacije u isto vreme. Možete prikačiti politiku na račun kako biste primenili kontrole samo na taj jedan račun.
- Članovi računi **moraju koristiti važeću email adresu** i mogu imati **ime**, generalno neće moći da upravljaju naplatom (ali im može biti dat pristup).
- Članovi računi **moraju koristiti važeću email adresu** i mogu imati **ime**, generalno neće moći da upravljaju naplatom (ali im može biti dat pristup tome).
```
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com
```
@@ -42,32 +42,48 @@ aws organizations create-organizational-unit --parent-id r-lalala --name TestOU
**Service control policy (SCP)** je politika koja specificira usluge i akcije koje korisnici i uloge mogu koristiti u nalozima na koje SCP utiče. SCP-ovi su **slični IAM** politikama dozvola osim što **ne dodeljuju nikakve dozvole**. Umesto toga, SCP-ovi specificiraju **maksimalne dozvole** za organizaciju, organizacionu jedinicu (OU) ili nalog. Kada prikačite SCP na koren vaše organizacije ili na OU, **SCP ograničava dozvole za entitete u članicama naloga**.
Ovo je JEDINI način na koji **čak i korisnik sa root privilegijama može biti sprečen** da nešto uradi. Na primer, može se koristiti da se spreči korisnike da onemoguće CloudTrail ili obrišu rezervne kopije.\
Jedini način da se to zaobiđe je da se kompromituje i **glavni nalog** koji konfiguriše SCP-ove (glavni nalog ne može biti blokiran).
Ovo je JEDINI način da se **čak i korisnik sa root privilegijama može sprečiti** da nešto uradi. Na primer, može se koristiti da se spreči korisnike da onemoguće CloudTrail ili obrišu rezervne kopije.\
Jedini način da se zaobiđe ovo je da se kompromituje i **glavni nalog** koji konfiguriše SCP-ove (glavni nalog ne može biti blokiran).
> [!WARNING]
> Imajte na umu da **SCP-ovi samo ograničavaju principe u nalogu**, tako da drugi nalozi nisu pogođeni. To znači da imati SCP koji odbija `s3:GetObject` neće sprečiti ljude da **pristupaju javnom S3 bucket-u** u vašem nalogu.
Primeri SCP-a:
SCP primeri:
- Odbijanje glavnog naloga u potpunosti
- Odbijanje root naloga u potpunosti
- Dozvoliti samo specifične regione
- Dozvoliti samo usluge sa bele liste
- Odbijanje GuardDuty, CloudTrail i S3 Public Block Access od
biti onemogućeni
onemogućavanja
- Odbijanje uloga za bezbednost/odgovor na incidente od
- Odbijanje uloga za bezbednost/odgovor na incidente od brisanja ili
biti obrisane ili
modifikovane.
modifikacije.
- Odbijanje brisanja rezervnih kopija.
- Odbijanje kreiranja IAM korisnika i pristupnih ključeva
Pronađite **JSON primere** u [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html)
### Resource Control Policy (RCP)
**Resource control policy (RCP)** je politika koja definiše **maksimalne dozvole za resurse unutar vaše AWS organizacije**. RCP-ovi su slični IAM politikama u sintaksi, ali **ne dodeljuju dozvole**—samo ograničavaju dozvole koje se mogu primeniti na resurse od strane drugih politika. Kada prikačite RCP na koren vaše organizacije, organizacionu jedinicu (OU) ili nalog, RCP ograničava dozvole resursa na svim resursima u pogođenom opsegu.
Ovo je JEDINI način da se osigura da **resursi ne mogu premašiti unapred definisane nivoe pristupa**—čak i ako je politika zasnovana na identitetu ili resursu previše permisivna. Jedini način da se zaobiđu ova ograničenja je da se takođe modifikuje RCP koji je konfigurisao upravljački nalog vaše organizacije.
> [!WARNING]
> RCP-ovi samo ograničavaju dozvole koje resursi mogu imati. Oni ne kontrolišu direktno šta principi mogu raditi. Na primer, ako RCP odbija spoljašnji pristup S3 bucket-u, osigurava da dozvole bucket-a nikada ne dozvole akcije izvan postavljenog limita—čak i ako je politika zasnovana na resursu pogrešno konfigurisana.
RCP primeri:
- Ograničiti S3 bucket-e tako da mogu biti pristupani samo od principa unutar vaše organizacije
- Ograničiti korišćenje KMS ključeva da dozvole operacije samo od poverljivih organizacionih naloga
- Ograničiti dozvole na SQS redovima da spreče neovlašćene modifikacije
- Sprovoditi granice pristupa na Secrets Manager tajnama da zaštite osetljive podatke
Pronađite primere u [AWS Organizations Resource Control Policies documentation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)
### ARN
**Amazon Resource Name** je **jedinstveno ime** koje svaki resurs unutar AWS-a ima, sastoji se ovako:
@@ -98,7 +114,7 @@ Kada prvi put kreirate Amazon Web Services (AWS) nalog, počinjete sa jednim ide
Napomena da novi **admin user** ima **manje dozvole od root user-a**.
Sa bezbednosnog stanovišta, preporučuje se kreiranje drugih korisnika i izbegavanje korišćenja ovog.
Sa bezbednosnog stanovišta, preporučuje se da kreirate druge korisnike i izbegavate korišćenje ovog.
### [IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) <a href="#id_iam-users" id="id_iam-users"></a>
@@ -113,7 +129,7 @@ Korisnici mogu imati **MFA omogućeno za prijavu** putem konzole. API tokeni kor
- **ID pristupnog ključa**: 20 nasumičnih velikih alfanumeričkih karaktera kao što su AKHDNAPO86BSHKDIRYT
- **ID tajnog pristupnog ključa**: 40 nasumičnih velikih i malih karaktera: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Nije moguće povratiti izgubljene ID-ove tajnog pristupnog ključa).
Kad god trebate da **promenite pristupni ključ**, ovo je proces koji treba da pratite:\
Kada god trebate da **promenite pristupni ključ**, ovo je proces koji treba da pratite:\
_Kreirajte novi pristupni ključ -> Primijenite novi ključ na sistem/aplikaciju -> označite originalni kao neaktivan -> Testirajte i proverite da li novi pristupni ključ radi -> Obrišite stari pristupni ključ_
### MFA - Višefaktorska autentifikacija
@@ -144,26 +160,26 @@ Evo nekih važnih karakteristika korisničkih grupa:
- **Korisnička grupa** može **sadržati mnogo korisnika**, a **korisnik** može **pripadati više grupa**.
- **Korisničke grupe ne mogu biti ugnježdene**; mogu sadržati samo korisnike, ne i druge korisničke grupe.
- Ne postoji **podrazumevana korisnička grupa koja automatski uključuje sve korisnike u AWS nalogu**. Ako želite da imate takvu korisničku grupu, morate je kreirati i dodeliti svakom novom korisniku.
- **Ne postoji podrazumevana korisnička grupa koja automatski uključuje sve korisnike u AWS nalogu**. Ako želite da imate takvu korisničku grupu, morate je kreirati i dodeliti svakom novom korisniku.
- Broj i veličina IAM resursa u AWS nalogu, kao što su broj grupa i broj grupa kojima korisnik može pripadati, su ograničeni. Za više informacija, pogledajte [IAM i AWS STS kvote](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html).
### [IAM uloge](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) <a href="#id_iam-roles" id="id_iam-roles"></a>
IAM **uloga** je vrlo **slična** **korisniku**, jer je to **identitet sa politikama dozvola koje određuju šta** može i ne može da radi u AWS-u. Međutim, uloga **nema nikakve kredencijale** (lozinku ili pristupne ključeve) povezane sa njom. Umesto da bude jedinstveno povezana sa jednom osobom, uloga je namenjena da bude **preuzeta od strane bilo koga ko je treba (i ima dovoljno dozvola)**. **IAM korisnik može preuzeti ulogu da privremeno** preuzme različite dozvole za određeni zadatak. Uloga može biti **dodeljena** [**federisanom korisniku**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) koji se prijavljuje koristeći eksternog provajdera identiteta umesto IAM-a.
IAM **uloga** je vrlo **slična** **korisniku**, jer je to **identitet sa politikama dozvola koje određuju šta** može i ne može da radi u AWS-u. Međutim, uloga **nema nikakve akreditive** (lozinku ili pristupne ključeve) povezane sa njom. Umesto da bude jedinstveno povezana sa jednom osobom, uloga je namenjena da bude **preuzeta od strane bilo koga ko je treba (i ima dovoljno dozvola)**. **IAM korisnik može preuzeti ulogu da privremeno** preuzme različite dozvole za određeni zadatak. Uloga može biti **dodeljena** [**federisanom korisniku**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) koji se prijavljuje koristeći eksternog provajdera identiteta umesto IAM-a.
IAM uloga se sastoji od **dvaju tipova politika**: **politika poverenja**, koja ne može biti prazna, definišući **ko može preuzeti** ulogu, i **politika dozvola**, koja ne može biti prazna, definišući **šta može pristupiti**.
#### AWS Security Token Service (STS)
AWS Security Token Service (STS) je veb servis koji olakšava **izdavanje privremenih, ograničenih privilegija kredencijala**. Specijalno je prilagođen za:
AWS Security Token Service (STS) je veb servis koji olakšava **izdavanje privremenih, ograničenih privilegija akreditiva**. Posebno je prilagođen za:
### [Privremeni kredencijali u IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) <a href="#id_temp-creds" id="id_temp-creds"></a>
### [Privremeni akreditivi u IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) <a href="#id_temp-creds" id="id_temp-creds"></a>
**Privremeni kredencijali se prvenstveno koriste sa IAM ulogama**, ali postoje i druge upotrebe. Možete zatražiti privremene kredencijale koji imaju ograničeniji skup dozvola nego vaš standardni IAM korisnik. Ovo **sprečava** vas da **slučajno izvršavate zadatke koji nisu dozvoljeni** od strane ograničenih kredencijala. Prednost privremenih kredencijala je što automatski ističu nakon određenog vremenskog perioda. Imate kontrolu nad trajanjem tokom kojeg su kredencijali validni.
**Privremeni akreditivi se prvenstveno koriste sa IAM ulogama**, ali postoje i druge upotrebe. Možete zatražiti privremene akreditive koji imaju ograničeniji skup dozvola nego vaš standardni IAM korisnik. Ovo **sprečava** vas da **slučajno izvršavate zadatke koji nisu dozvoljeni** od strane ograničenih akreditiva. Prednost privremenih akreditiva je ta što automatski ističu nakon određenog vremenskog perioda. Imate kontrolu nad trajanjem tokom kojeg su akreditivi validni.
### Politike
#### Dozvole politika
#### Dozvole politike
Koriste se za dodeljivanje dozvola. Postoje 2 tipa:
@@ -171,7 +187,7 @@ Koriste se za dodeljivanje dozvola. Postoje 2 tipa:
- Politike koje upravlja korisnik: Konfigurišete ih vi. Možete kreirati politike zasnovane na AWS upravljanim politikama (modifikujući jednu od njih i kreirajući svoju), koristeći generator politika (GUI prikaz koji vam pomaže u dodeljivanju i odbijanju dozvola) ili pišući svoje.
Po **podrazumevanju, pristup** je **odbijen**, pristup će biti odobren ako je eksplicitna uloga navedena.\
Ako **jedan "Deny" postoji, on će nadjačati "Allow"**, osim za zahteve koji koriste korenske sigurnosne kredencijale AWS naloga (koji su podrazumevano dozvoljeni).
Ako **jedan "Deny" postoji, on će nadjačati "Allow"**, osim za zahteve koji koriste korenske bezbednosne akreditive AWS naloga (koji su podrazumevano dozvoljeni).
```javascript
{
"Version": "2012-10-17", //Version of the policy
@@ -194,33 +210,33 @@ Ako **jedan "Deny" postoji, on će nadjačati "Allow"**, osim za zahteve koji ko
]
}
```
[Globalna polja koja se mogu koristiti za uslove u bilo kojoj usluzi su dokumentovana ovde](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\
[Specifična polja koja se mogu koristiti za uslove po usluzi su dokumentovana ovde](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html).
The [global fields that can be used for conditions in any service are documented here](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\
The [specific fields that can be used for conditions per service are documented here](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html).
#### Inline Politike
#### Inline Policies
Ova vrsta politika je **direktno dodeljena** korisniku, grupi ili ulozi. Tada se ne pojavljuju na listi politika jer ih može koristiti bilo ko drugi.\
Inline politike su korisne ako želite da **održite strogu jedan-na-jedan vezu između politike i identiteta** na koji se primenjuju. Na primer, želite da budete sigurni da dozvole u politici nisu nenamerno dodeljene identitetu osim onom za koji su namenjene. Kada koristite inline politiku, dozvole u politici ne mogu biti nenamerno prikačene na pogrešan identitet. Pored toga, kada koristite AWS Management Console za brisanje tog identiteta, politike ugrađene u identitet se takođe brišu. To je zato što su deo glavne entiteta.
Ova vrsta politika je **direktno dodeljena** korisniku, grupi ili ulozi. Tada se ne pojavljuju na listi politika kao što to može biti slučaj sa drugim politikama.\
Inline politike su korisne ako želite da **održite strogu jedan-na-jedan vezu između politike i identiteta** na koji se primenjuju. Na primer, želite da budete sigurni da dozvole u politici nisu nenamerno dodeljene identitetu osim onog za koji su namenjene. Kada koristite inline politiku, dozvole u politici ne mogu biti nenamerno povezane sa pogrešnim identitetom. Pored toga, kada koristite AWS Management Console za brisanje tog identiteta, politike ugrađene u identitet se takođe brišu. To je zato što su deo glavne entiteta.
#### Politike Resursnog Kante
#### Resource Bucket Policies
Ovo su **politike** koje se mogu definisati u **resursima**. **Nisu svi resursi AWS-a podržavaju njih**.
Ako glavni entitet nema eksplicitnu zabranu na njih, a politika resursa im daje pristup, tada su dozvoljeni.
Ako glavni entitet nema eksplicitnu zabranu na njih, a politika resursa im omogućava pristup, tada su dozvoljeni.
### IAM Granice
### IAM Boundaries
IAM granice se mogu koristiti za **ograničavanje dozvola kojima korisnik ili uloga treba da imaju pristup**. Na ovaj način, čak i ako se korisniku dodeli drugačiji skup dozvola putem **druge politike**, operacija će **neuspeti** ako pokuša da ih koristi.
Granica je samo politika prikačena za korisnika koja **ukazuje na maksimalni nivo dozvola koje korisnik ili uloga mogu imati**. Dakle, **čak i ako korisnik ima Administrator pristup**, ako granica ukazuje da može samo da čita S· kante, to je maksimum što može da uradi.
Granica je samo politika koja je povezana sa korisnikom i **ukazuje na maksimalni nivo dozvola koje korisnik ili uloga mogu imati**. Dakle, **čak i ako korisnik ima Administrator pristup**, ako granica ukazuje da može samo da čita S· kante, to je maksimum što može da uradi.
**Ovo**, **SCP-ovi** i **pridržavanje principa najmanjih privilegija** su načini da se kontroliše da korisnici nemaju više dozvola nego što im je potrebno.
**Ovo**, **SCPs** i **pridržavanje principa minimalnih privilegija** su načini da se kontroliše da korisnici nemaju više dozvola nego što im je potrebno.
### Politike Sesije
### Session Policies
Politika sesije je **politika postavljena kada se neka uloga preuzme** na neki način. Ovo će biti kao **IAM granica za tu sesiju**: To znači da politika sesije ne dodeljuje dozvole, već **ograničava ih na one navedene u politici** (maksimalne dozvole su one koje uloga ima).
Politika sesije je **politika postavljena kada se neka uloga preuzme** na neki način. Ovo će biti kao **IAM granica za tu sesiju**: To znači da politika sesije ne dodeljuje dozvole, već **ograničava ih na one koje su navedene u politici** (maksimalne dozvole su one koje uloga ima).
Ovo je korisno za **bezbednosne mere**: Kada administrator preuzima veoma privilegovanu ulogu, mogao bi da ograniči dozvolu samo na one navedene u politici sesije u slučaju da sesija bude kompromitovana.
Ovo je korisno za **bezbednosne mere**: Kada administrator preuzima veoma privilegovanu ulogu, može ograničiti dozvole samo na one navedene u politici sesije u slučaju da sesija bude kompromitovana.
```bash
aws sts assume-role \
--role-arn <value> \
@@ -232,90 +248,90 @@ Napomena da po defaultu **AWS može dodati politike sesije sesijama** koje će b
Stoga, ako se u nekom trenutku suočite sa greškom "... jer nijedna politika sesije ne dozvoljava ...", a uloga ima pristup za izvršenje akcije, to je zato što **postoji politika sesije koja to sprečava**.
### Identitetna federacija
### Federacija identiteta
Identitetna federacija **omogućava korisnicima iz identitetskih provajdera koji su eksterni** za AWS da sigurno pristupaju AWS resursima bez potrebe da dostavljaju AWS korisničke akreditive iz važećeg IAM korisničkog naloga.\
Primer identitetskog provajdera može biti vaša vlastita korporativna **Microsoft Active Directory** (putem **SAML**) ili **OpenID** usluga (kao što je **Google**). Federisani pristup će tada omogućiti korisnicima unutar njega da pristupaju AWS-u.
Federacija identiteta **omogućava korisnicima iz provajdera identiteta koji su eksterni** za AWS da sigurno pristupaju AWS resursima bez potrebe da dostavljaju AWS korisničke akreditive iz važećeg IAM korisničkog naloga.\
Primer provajdera identiteta može biti vaš vlastiti korporativni **Microsoft Active Directory** (putem **SAML**) ili **OpenID** usluga (kao što je **Google**). Federisani pristup će tada omogućiti korisnicima unutar njega da pristupaju AWS-u.
Da bi se konfigurisalo ovo poverenje, generiše se **IAM identitetski provajder (SAML ili OAuth)** koji će **verovati** **drugoj platformi**. Zatim, najmanje jedna **IAM uloga se dodeljuje (verujuća) identitetskom provajderu**. Ako korisnik iz poverene platforme pristupi AWS-u, pristupaće kao pomenuta uloga.
Da biste konfigurisali ovo poverenje, generiše se **IAM provajder identiteta (SAML ili OAuth)** koji će **verovati** **drugoj platformi**. Zatim, najmanje jedna **IAM uloga se dodeljuje (verujući) provajderu identiteta**. Ako korisnik iz poverene platforme pristupi AWS-u, pristupaće kao pomenuta uloga.
Međutim, obično ćete želeti da dodelite **različitu ulogu u zavisnosti od grupe korisnika** na trećoj strani. Tada, nekoliko **IAM uloga može verovati** trećem identitetskom provajderu, a treća platforma će biti ta koja omogućava korisnicima da preuzmu jednu ili drugu ulogu.
Međutim, obično ćete želeti da dodelite **različitu ulogu u zavisnosti od grupe korisnika** na trećoj platformi. Tada, nekoliko **IAM uloga može verovati** trećem provajderu identiteta, a treća platforma će biti ta koja omogućava korisnicima da preuzmu jednu ili drugu ulogu.
<figure><img src="../../../images/image (247).png" alt=""><figcaption></figcaption></figure>
### IAM Identitetni Centar
### IAM Identity Center
AWS IAM Identitetni Centar (naslednik AWS Single Sign-On) proširuje mogućnosti AWS upravljanja identitetom i pristupom (IAM) kako bi pružio **centralno mesto** koje okuplja **administraciju korisnika i njihov pristup AWS** nalozima i cloud aplikacijama.
AWS IAM Identity Center (naslednik AWS Single Sign-On) proširuje mogućnosti AWS upravljanja identitetom i pristupom (IAM) kako bi pružio **centralno mesto** koje okuplja **administraciju korisnika i njihov pristup AWS** nalozima i cloud aplikacijama.
Domen za prijavu će biti nešto poput `<user_input>.awsapps.com`.
Da bi se prijavili korisnici, postoje 3 izvora identiteta koji se mogu koristiti:
Da bi se prijavili korisnici, mogu se koristiti 3 izvora identiteta:
- Identitetni Centar Direktorijum: Redovni AWS korisnici
- Identity Center Directory: Redovni AWS korisnici
- Active Directory: Podržava različite konektore
- Eksterni identitetski provajder: Svi korisnici i grupe dolaze iz eksternog identitetskog provajdera (IdP)
- Eksterni provajder identiteta: Svi korisnici i grupe dolaze iz eksternog provajdera identiteta (IdP)
<figure><img src="../../../images/image (279).png" alt=""><figcaption></figcaption></figure>
U najjednostavnijem slučaju direktorijuma Identitetnog Centra, **Identitetni Centar će imati listu korisnika i grupa** i moći će da **dodeli politike** njima za **bilo koji od naloga** organizacije.
U najjednostavnijem slučaju direktorijuma Identity Center, **Identity Center će imati listu korisnika i grupa** i moći će da **dodeli politike** njima za **bilo koji od naloga** organizacije.
Da bi se omogućio pristup korisniku/grupi Identitetnog Centra do naloga, **SAML identitetski provajder koji veruje Identitetnom Centru će biti kreiran**, a **uloga koja veruje identitetskom provajderu sa navedenim politikama će biti kreirana** u odredišnom nalogu.
Da biste omogućili pristup korisniku/grupi Identity Center-a do naloga, biće kreiran **SAML provajder identiteta koji veruje Identity Center-u**, a **uloga koja veruje provajderu identiteta sa navedenim politikama biće kreirana** u odredišnom nalogu.
#### AwsSSOInlinePolicy
Moguće je **dati dozvole putem inline politika rolama kreiranim putem IAM Identitetnog Centra**. Uloge kreirane u nalozima koje dobijaju **inline politike u AWS Identitetnom Centru** će imati ove dozvole u inline politici pod nazivom **`AwsSSOInlinePolicy`**.
Moguće je **dati dozvole putem inline politika rolama kreiranim putem IAM Identity Center**. Uloge kreirane u nalozima koje dobijaju **inline politike u AWS Identity Center** će imati ove dozvole u inline politici pod nazivom **`AwsSSOInlinePolicy`**.
Stoga, čak i ako vidite 2 uloge sa inline politikom pod nazivom **`AwsSSOInlinePolicy`**, to **ne znači da imaju iste dozvole**.
### Cross Account Trusts and Roles
**Korisnik** (verujući) može kreirati Cross Account ulogu sa nekim politikama i zatim, **dozvoliti drugom korisniku** (pouzdanom) da **pristupi njegovom nalogu** ali samo **imajući pristup naveden u novim politikama uloge**. Da biste to kreirali, jednostavno kreirajte novu ulogu i izaberite Cross Account ulogu. Uloge za pristup između AWS naloga koje posedujete nude dve opcije. Pružanje pristupa između AWS naloga koje posedujete, i pružanje pristupa između naloga koji posedujete i trećeg AWS naloga.\
Preporučuje se da **precizirate korisnika koji je pouzdan i ne stavljate neku generičku stvar** jer u suprotnom, drugi autentifikovani korisnici poput federisanih korisnika će takođe moći da zloupotrebe ovo poverenje.
**Korisnik** (verujući) može kreirati Cross Account ulogu sa nekim politikama i zatim, **dozvoliti drugom korisniku** (pouzdano) da **pristupi njegovom nalogu** ali samo **imajući pristup naveden u novim politikama uloge**. Da biste to kreirali, jednostavno kreirajte novu ulogu i izaberite Cross Account ulogu. Uloge za pristup između naloga nude dve opcije. Pružanje pristupa između AWS naloga koje posedujete, i pružanje pristupa između naloga koji posedujete i trećeg AWS naloga.\
Preporučuje se da **specificirate korisnika koji je poveren i ne stavljate nešto generičko** jer u suprotnom, drugi autentifikovani korisnici poput federisanih korisnika će takođe moći da zloupotrebe ovo poverenje.
### AWS Simple AD
Nije podržano:
- Odnos poverenja
- AD Admin Centar
- AD Admin Center
- Puna PS API podrška
- AD Recycle Bin
- Grupa upravljanih servisnih naloga
- Ekstenzije šeme
- Nema direktan pristup OS-u ili instancama
- Nema direktnog pristupa OS-u ili instancama
#### Web Federacija ili OpenID Autentifikacija
#### Web Federation or OpenID Authentication
Aplikacija koristi AssumeRoleWithWebIdentity za kreiranje privremenih akreditiva. Međutim, ovo ne omogućava pristup AWS konzoli, samo pristup resursima unutar AWS-a.
### Ostale IAM opcije
### Other IAM options
- Možete **postaviti podešavanje politike lozinke** kao što su minimalna dužina i zahtevi za lozinku.
- Možete **preuzeti "Izveštaj o akreditivima"** sa informacijama o trenutnim akreditivima (kao što su vreme kreiranja korisnika, da li je lozinka omogućena...). Možete generisati izveštaj o akreditivima koliko često želite, čak i svaka **četiri sata**.
AWS upravljanje identitetom i pristupom (IAM) pruža **fino podešenu kontrolu pristupa** širom celog AWS-a. Sa IAM-om, možete precizirati **ko može pristupiti kojim uslugama i resursima**, i pod kojim uslovima. Sa IAM politikama, upravljate dozvolama za vašu radnu snagu i sisteme kako biste **osigurali dozvole sa najmanjim privilegijama**.
AWS upravljanje identitetom i pristupom (IAM) pruža **fino podešavanje kontrole pristupa** širom celog AWS-a. Sa IAM-om, možete specificirati **ko može pristupiti kojim uslugama i resursima**, i pod kojim uslovima. Sa IAM politikama, upravljate dozvolama za vašu radnu snagu i sisteme kako biste **osigurali dozvole sa najmanjim privilegijama**.
### IAM ID Prefiksi
### IAM ID Prefixes
Na [**ovoj stranici**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) možete pronaći **IAM ID prefikse** ključeva u zavisnosti od njihove prirode:
| Identifikator Kôd | Opis |
| Identifier Code | Description |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ABIA | [AWS STS servisni nosilac tokena](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
| ABIA | [AWS STS service bearer token](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
| ACCA | Kontekstualni akreditiv |
| AGPA | Korisnička grupa |
| ACCA | Kontekst-specifični akreditiv |
| AGPA | Grupa korisnika |
| AIDA | IAM korisnik |
| AIPA | Amazon EC2 profil instance |
| AKIA | Ključ pristupa |
| AKIA | Pristupni ključ |
| ANPA | Upravljana politika |
| ANVA | Verzija u upravljanoj politici |
| APKA | Javni ključ |
| AROA | Uloga |
| ASCA | Sertifikat |
| ASIA | [Privremeni (AWS STS) identifikatori ključeva za pristup](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) koriste ovaj prefiks, ali su jedinstveni samo u kombinaciji sa tajnim pristupnim ključem i tokenom sesije. |
| ASIA | [Privremeni (AWS STS) pristupni ključevi ID](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) koriste ovaj prefiks, ali su jedinstveni samo u kombinaciji sa tajnim pristupnim ključem i tokenom sesije. |
### Preporučene dozvole za reviziju naloga
### Recommended permissions to audit accounts
Sledeće privilegije daju različit pristup metapodacima:
@@ -328,12 +344,12 @@ Sledeće privilegije daju različit pristup metapodacima:
- `directconnect:DescribeConnections`
- `dynamodb:ListTables`
## Razno
## Misc
### CLI Autentifikacija
### CLI Authentication
Da bi regularni korisnik autentifikovao na AWS putem CLI, potrebno je imati **lokalne akreditive**. Po defaultu, možete ih konfigurisati **ručno** u `~/.aws/credentials` ili **pokretanjem** `aws configure`.\
U toj datoteci možete imati više od jednog profila, ako **nije specificiran profil** koristeći **aws cli**, koristiće se onaj pod nazivom **`[default]`** u toj datoteci.\
Da bi regularni korisnik autentifikovao AWS putem CLI, potrebno je imati **lokalne akreditive**. Po defaultu, možete ih konfigurisati **ručno** u `~/.aws/credentials` ili **pokretanjem** `aws configure`.\
U toj datoteci možete imati više od jednog profila, ako **nije specificiran profil** koristeći **aws cli**, koristiće se onaj nazvan **`[default]`** u toj datoteci.\
Primer datoteke akreditiva sa više od 1 profila:
```
[default]
@@ -347,7 +363,7 @@ region = eu-west-2
```
Ako treba da pristupite **različitim AWS nalozima** i vašem profilu je dato pravo da **pretpostavi ulogu unutar tih naloga**, ne morate ručno pozivati STS svaki put (`aws sts assume-role --role-arn <role-arn> --role-session-name sessname`) i konfigurisati akreditive.
Možete koristiti `~/.aws/config` datoteku da **naznačite koje uloge da pretpostavite** i zatim koristiti `--profile` parametar kao i obično (pretpostavljanje uloge će se izvršiti na transparentan način za korisnika).\
Možete koristiti `~/.aws/config` datoteku da **naznačite koje uloge da pretpostavite** i zatim koristiti parametar `--profile` kao obično (pretpostavljanje uloge će se izvršiti na transparentan način za korisnika).\
Primer konfiguracione datoteke:
```
[profile acc2]
@@ -368,5 +384,6 @@ Ako tražite nešto **slično** ovome, ali za **pregledač**, možete proveriti
- [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)
- [https://aws.amazon.com/iam/](https://aws.amazon.com/iam/)
- [https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)
- [https://aws.amazon.com/blogs/aws/introducing-resource-control-policies-rcps-a-new-authorization-policy/](https://aws.amazon.com/blogs/aws/introducing-resource-control-policies-rcps-a-new-authorization-policy/)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Azure Automation Accounts
Za više informacija pogledajte:
Za više informacija proverite:
{{#ref}}
../az-services/az-automation-accounts.md
@@ -12,18 +12,29 @@ Za više informacija pogledajte:
### Hybrid Workers Group
Zapamtite da ako napadač može da izvrši proizvoljni runbook (proizvoljni kod) u hybrid worker-u, on će **preći na lokaciju VM-a**. To može biti lokalna mašina, VPC druge cloud platforme ili čak Azure VM.
- **Od Automation Account do VM**
Štaviše, ako hybrid worker radi u Azure-u sa drugim upravljanim identitetima, runbook će moći da pristupi **upravljanom identitetu runbook-a i svim upravljanim identitetima VM-a iz metadata servisa**.
Zapamtite da ako napadač nekako može da izvrši proizvoljan runbook (proizvoljan kod) u hybrid worker-u, on će **preći na lokaciju VM-a**. Ovo može biti lokalna mašina, VPC druge cloud platforme ili čak Azure VM.
Štaviše, ako hybrid worker radi u Azure-u sa drugim Managed Identities, runbook će moći da pristupi **managed identity runbook-a i svim managed identities VM-a iz metadata servisa**.
> [!TIP]
> Zapamtite da **metadata servis** ima drugačiji URL (**`http://169.254.169.254`**) od servisa sa kojeg se dobija token upravljanih identiteta automatskog naloga (**`IDENTITY_ENDPOINT`**).
> Zapamtite da **metadata servis** ima drugačiji URL (**`http://169.254.169.254`**) od servisa sa kojeg se dobija token managed identities automation account-a (**`IDENTITY_ENDPOINT`**).
- **Od VM do Automation Account**
Štaviše, ako neko kompromituje VM na kojem se izvršava skripta automation account-a, on će moći da locira **Automation Account** metadata i pristupi mu sa VM-a kako bi dobio tokene za **Managed Identities** povezane sa Automation Account.
Kao što se može videti na sledećoj slici, imajući Administrator pristup nad VM-om, moguće je pronaći u **environment variables procesa** URL i tajnu za pristup metadata servisu automation account-a:
![](</images/vm_to_aa.jpg>)
### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`)
Kao sažetak, ova dozvola omogućava **kreiranje, modifikovanje i pokretanje Runbook-a** u Automatskom Nalog koji možete koristiti za **izvršavanje koda** u kontekstu Automatskog Naloga i eskalaciju privilegija na dodeljene **Upravljane Identitete** i curenje **akreditiva** i **kriptovanih varijabli** koje su sačuvane u Automatskom Nalog.
Kao sažetak, ova dozvola omogućava **kreiranje, modifikovanje i izvršavanje Runbooks** u Automation Account-u, što možete koristiti za **izvršavanje koda** u kontekstu Automation Account-a i eskalaciju privilegija na dodeljene **Managed Identities** i curenje **akreditiva** i **kriptovanih varijabli** koje su pohranjene u Automation Account.
Dozvola **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** omogućava modifikovanje koda Runbook-a u Automatskom Nalog koristeći:
Dozvola **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** omogućava modifikaciju koda Runbook-a u Automation Account-u koristeći:
```bash
# Update the runbook content with the provided PowerShell script
az automation runbook replace-content --no-wait \
@@ -36,7 +47,7 @@ $runbook_variable
$creds.GetNetworkCredential().username
$creds.GetNetworkCredential().password'
```
Napomena kako se prethodni skript može koristiti za **curenje korisničkog imena i lozinke** akreditiva i vrednosti **kriptovane promenljive** smeštene u Automation Account.
Napomena kako se prethodni skript može koristiti za **curenje korisničkog imena i lozinke** kredencijala i vrednosti **kriptovane promenljive** smeštene u Automation Account.
Dozvola **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** omogućava korisniku da objavi Runbook u Automation Account-u tako da se promene primene:
```bash
@@ -53,18 +64,18 @@ az automation runbook start \
--name <runbook-name> \
[--run-on <name-hybrid-group>]
```
Dozvola **`Microsoft.Automation/automationAccounts/jobs/output/read`** omogućava korisniku da pročita izlaz posla u Automation Account-u koristeći:
Dozvola **`Microsoft.Automation/automationAccounts/jobs/output/read`** omogućava korisniku da pročita izlaz posla u Automation Account koristeći:
```bash
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/jobs/<job-name>/output?api-version=2023-11-01"
```
Ako ne postoje kreirani Runbook-ovi, ili želite da kreirate novi, biće vam potrebne **dozvole `Microsoft.Resources/subscriptions/resourcegroups/read` i `Microsoft.Automation/automationAccounts/runbooks/write`** da to uradite koristeći:
Ako nisu kreirani Runbook-ovi, ili želite da kreirate novi, biće vam potrebne **dozvole `Microsoft.Resources/subscriptions/resourcegroups/read` i `Microsoft.Automation/automationAccounts/runbooks/write`** da to uradite koristeći:
```bash
az automation runbook create --automation-account-name <account-name> --resource-group <res-group> --name <runbook-name> --type PowerShell
```
### `Microsoft.Automation/automationAccounts/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Ova dozvola omogućava korisniku da **dodeli identitet koji upravlja korisnikom** Automatskom nalogu koristeći:
Ova dozvola omogućava korisniku da **dodeli korisnički upravljanu identitet** Automation Account-u koristeći:
```bash
az rest --method PATCH \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>?api-version=2020-01-13-preview" \
@@ -104,7 +115,7 @@ az automation schedule create \
--frequency Minute \
--interval 15
```
Zatim, uz dozvolu **`Microsoft.Automation/automationAccounts/jobSchedules/write`** moguće je dodeliti planera runbook-u koristeći:
Zatim, sa dozvolom **`Microsoft.Automation/automationAccounts/jobSchedules/write`** moguće je dodeliti Scheduler-u runbook koristeći:
```bash
az rest --method PUT \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-accounts>/jobSchedules/b510808a-8fdc-4509-a115-12cfc3a2ad0d?api-version=2015-10-31" \
@@ -127,9 +138,9 @@ az rest --method PUT \
### `Microsoft.Automation/automationAccounts/webhooks/write`
Sa dozvolom **`Microsoft.Automation/automationAccounts/webhooks/write`** moguće je kreirati novi Webhook za Runbook unutar Automation Account-a koristeći sledeću komandu.
Sa dozvolom **`Microsoft.Automation/automationAccounts/webhooks/write`** moguće je kreirati novi Webhook za Runbook unutar Automation Account koristeći sledeću komandu.
Napomena: Moraćete da **naznačite webhook URI** sa tokenom koji ćete koristiti.
Napomena da ćete morati da **naznačite webhook URI** sa tokenom koji ćete koristiti.
```bash
az rest --method PUT \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automantion-account-name>/webhooks/<webhook-name>?api-version=2018-06-30" \
@@ -194,7 +205,7 @@ az automation source-control create \
--token-type PersonalAccessToken \
--access-token github_pat_11AEDCVZ<rest-of-the-token>
```
Ovo će automatski uvesti runbook-ove iz Github repozitorijuma u Automation Account, a uz neke druge dozvole za pokretanje, bilo bi **moguće eskalirati privilegije**.
Ovo će automatski uvesti runbook-ove iz Github repozitorijuma u Automation Account, a sa nekim drugim dozvolama za pokretanje, bilo bi **moguće eskalirati privilegije**.
Pored toga, zapamtite da za rad kontrole verzija u Automation Accounts mora imati upravljanu identitet sa ulogom **`Contributor`**, a ako je to korisnički upravljana identitet, klijentski ID MI mora biti naveden u varijabli **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
@@ -221,14 +232,14 @@ az rest --method PUT \
Ako automatizovani nalog koristi prilagođeno runtime okruženje, može biti moguće prepisati prilagođeni paket runtime-a nekim zlonamernim kodom (kao što je **backdoor**). Na ovaj način, svaki put kada se izvrši runbook koji koristi to prilagođeno runtime, i učita prilagođeni paket, zlonamerni kod će biti izvršen.
### Kompromitovanje Konfiguracije Stanja
### Kompromitovanje State Konfiguracije
**Proverite ceo post na:** [**https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe**](https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe)
- Korak 1 — Kreiranje Fajlova
**Potrebni Fajlovi:** Potrebna su dva PowerShell skripta:
1. `reverse_shell_config.ps1`: Fajl za Desired State Configuration (DSC) koji preuzima i izvršava payload. Može se preuzeti sa [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
1. `reverse_shell_config.ps1`: Fajl Desired State Configuration (DSC) koji preuzima i izvršava payload. Može se preuzeti sa [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
2. `push_reverse_shell_config.ps1`: Skript za objavljivanje konfiguracije na VM, dostupan na [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1).
**Prilagođavanje:** Varijable i parametri u ovim fajlovima moraju biti prilagođeni specifičnom okruženju korisnika, uključujući imena resursa, putanje fajlova i identifikatore servera/payload-a.
@@ -241,7 +252,7 @@ Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_she
```
- Korak 3 — Postavi kontekst skladišta i otpremi
Zipped konfiguracioni fajl se otprema u unapred definisani Azure Storage kontejner, azure-pentest, koristeći Azure-ov Set-AzStorageBlobContent cmdlet.
Zipped konfiguracioni fajl se otprema u unapred definisani Azure Storage kontejner, azure-pentest, koristeći Azure-ovu Set-AzStorageBlobContent cmdlet.
```bash
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
```
@@ -255,7 +266,7 @@ Skripta je uređena da specificira ciljni Windows VM i port za reverznu ljusku.
- Korak 5 — Objavi Konfiguracioni Fajl
Konfiguracioni fajl se izvršava, što rezultira u tome da se skripta za reverznu ljusku postavlja na određenu lokaciju na Windows VM-u.
Konfiguracioni fajl se izvršava, što rezultira time da se skripta za reverznu ljusku postavlja na određenu lokaciju na Windows VM-u.
- Korak 6 — Hostuj Payload i Postavi Listener