# AWS - GuardDuty Enum

{{#include ../../../../banners/hacktricks-training.md}}

## GuardDuty

Prema [**dokumentaciji**](https://aws.amazon.com/guardduty/features/): GuardDuty kombinuje **mašinsko učenje, detekciju anomalija, praćenje mreže i otkrivanje zlonamernih datoteka**, koristeći kako AWS, tako i vodeće izvore trećih strana kako bi pomogao u zaštiti radnih opterećenja i podataka na AWS-u. GuardDuty je sposoban da analizira desetine milijardi događaja iz više AWS izvora podataka, kao što su AWS CloudTrail dnevnici događaja, Amazon Virtual Private Cloud (VPC) Flow Logs, Amazon Elastic Kubernetes Service (EKS) revizijski i sistemski dnevnici, i DNS upiti.

Amazon GuardDuty **identifikuje neobičnu aktivnost unutar vaših naloga**, analizira **bezbednosnu relevantnost** aktivnosti i daje **kontekst** u kojem je aktivnost pokrenuta. Ovo omogućava odgovaraču da odredi da li treba da potroši vreme na dalju istragu.

Upozorenja **se pojavljuju u GuardDuty konzoli (90 dana)** i CloudWatch događajima.

> [!WARNING]
> Kada korisnik **onemogući GuardDuty**, prestaćete da pratite vaše AWS okruženje i neće generisati nove nalaze, a **postojeći nalazi će biti izgubljeni**.\
> Ako ga samo zaustavite, postojeći nalazi će ostati.

### Primer Nalaza

- **Reconnaissance**: Aktivnost koja sugeriše izviđanje od strane napadača, kao što su **neobične API aktivnosti**, sumnjivi pokušaji **prijave** na bazu podataka, intra-VPC **skeniranje portova**, neobični obrasci neuspešnih zahteva za prijavu, ili neblokirano ispitivanje portova sa poznate loše IP adrese.
- **Kompromitovanje instance**: Aktivnost koja ukazuje na kompromitovanje instance, kao što su **rudarenje kriptovaluta, backdoor komanda i kontrola (C\&C)**, zlonameran softver koji koristi algoritme generisanja domena (DGA), aktivnost odbijanja usluge, neobično **visok** obim mrežnog saobraćaja, neobični mrežni protokoli, komunikacija instance sa poznatom zlonamernom IP adresom, privremene Amazon EC2 akreditivi korišćeni od strane spoljne IP adrese, i eksfiltracija podataka korišćenjem DNS-a.
- **Kompromitovanje naloga**: Uobičajeni obrasci koji ukazuju na kompromitovanje naloga uključuju API pozive iz neobične geolokacije ili anonimnog proksija, pokušaje da se onemogući AWS CloudTrail logovanje, promene koje oslabljuju politiku lozinki naloga, neobične instance ili lansiranja infrastrukture, implementacije infrastrukture u neobičnoj regiji, krađu akreditiva, sumnjivu aktivnost prijave na bazu podataka, i API pozive sa poznatih zlonamernih IP adresa.
- **Kompromitovanje bucket-a**: Aktivnost koja ukazuje na kompromitovanje bucket-a, kao što su sumnjivi obrasci pristupa podacima koji ukazuju na zloupotrebu akreditiva, neobične Amazon S3 API aktivnosti sa udaljenog hosta, neovlašćen pristup S3-u sa poznatih zlonamernih IP adresa, i API pozivi za preuzimanje podataka iz S3 bucket-a od korisnika bez prethodne istorije pristupa bucket-u ili pokrenutih iz neobične lokacije. Amazon GuardDuty kontinuirano prati i analizira AWS CloudTrail S3 događaje (npr. GetObject, ListObjects, DeleteObject) kako bi otkrio sumnjivu aktivnost širom svih vaših Amazon S3 bucket-a.

<details>

<summary>Informacije o nalazima</summary>

Sažetak nalaza:

- Tip nalaza
- Ozbiljnost: 7-8.9 Visoka, 4-6.9 Srednja, 01-3.9 Niska
- Regija
- ID naloga
- ID resursa
- Vreme detekcije
- Koja je lista pretnji korišćena

Telo sadrži ove informacije:

- Pogođeni resurs
- Akcija
- Akter: IP adresa, port i domen
- Dodatne informacije

</details>

### Svi Nalazi

Pristupite listi svih GuardDuty nalaza na: [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html)

### Više Naloga

#### Po Pozivu

Možete **pozvati druge naloge** u različit AWS GuardDuty nalog tako da **svaki nalog bude praćen iz istog GuardDuty**. Glavni nalog mora pozvati članove naloga, a zatim predstavnik članskog naloga mora prihvatiti poziv.

#### Putem Organizacije

Možete odrediti bilo koji nalog unutar organizacije da bude **delegirani administrator GuardDuty**. Samo nalog za upravljanje organizacijom može odrediti delegiranog administratora.

Nalog koji se odredi kao delegirani administrator postaje nalog administratora GuardDuty, automatski ima omogućenu GuardDuty u određenoj AWS regiji, i takođe ima **dozvolu da omogući i upravlja GuardDuty za sve naloge u organizaciji unutar te regije**. Ostali nalozi u organizaciji mogu se videti i dodati kao članovi GuardDuty povezani sa ovim delegiranim administratorskim nalogom.

## Enumeracija
```bash
# Get Org config
aws guardduty list-organization-admin-accounts #Get Delegated Administrator
aws guardduty describe-organization-configuration --detector-id <id>

# Check external invitations
aws guardduty list-invitations
aws guardduty get-invitations-count

# Detector Information
aws guardduty list-detectors # 1 detector per account with GuardDuty
aws guardduty get-detector --detector-id <id> # Get detector info
aws guardduty get-master-account --detector-id <id>

# Get filters
aws guardduty list-filters --detector-id <id> # Check filters
aws guardduty get-filter --detector-id <id> --filter-name <name>

# Findings
aws guardduty list-findings --detector-id <id> # List findings
aws guardduty get-findings --detector-id <id> --finding-ids <id> # Get details about the finding
aws guardduty get-findings-statistics --detector-id <id> --finding-statistic-types <types>

# Get trusted IP addresses
aws guardduty list-ip-sets --detector-id <id>
aws guardduty get-ip-set --detector-id <id>

# Member accounts of the current AWS GuardDuty master account
aws guardduty list-members --detector-id <id>
aws guardduty get-members --detector-id <id> --account-ids <id>
aws guardduty get-member-detectors --detector-id <id> --account-ids <id>

# Continuously export its findings to an Amazon S3 bucket
aws guardduty list-publishing-destinations --detector-id <id>

# Intelligence sets that you have uploaded to GuardDuty
aws guardduty list-threat-intel-sets --detector-id <id>
aws guardduty get-threat-intel-set --detector-id <id> --threat-intel-set-id <id>
```
## GuardDuty Bypass

### General Guidance

Pokušajte da saznate što je moguće više o ponašanju kredencijala koje ćete koristiti:

- Vremena kada se koriste
- Lokacije
- User Agents / Usluge (Može se koristiti iz awscli, webconsole, lambda...)
- Dozvole koje se redovno koriste

Sa ovom informacijom, rekreirajte što je moguće više istog scenarija za korišćenje pristupa:

- Ako je to **korisnik ili uloga kojoj pristupa korisnik**, pokušajte da je koristite u istim satima, iz iste geolokacije (čak i istog ISP-a i IP-a ako je moguće)
- Ako je to **uloga koju koristi usluga**, kreirajte istu uslugu u istoj regiji i koristite je odatle u istim vremenskim intervalima
- Uvek pokušavajte da koristite **iste dozvole** koje je ovaj princip koristio
- Ako treba da **koristite druge dozvole ili zloupotrebite dozvolu** (na primer, preuzmite 1.000.000 cloudtrail log fajlova) radite to **polako** i sa **minimalnim brojem interakcija** sa AWS-om (awscli ponekad poziva nekoliko read API-ja pre write API-ja)

### Breaking GuardDuty

#### `guardduty:UpdateDetector`

Sa ovom dozvolom mogli biste da onemogućite GuardDuty kako biste izbegli aktiviranje upozorenja.
```bash
aws guardduty update-detector --detector-id <detector-id> --no-enable
aws guardduty update-detector --detector-id <detector-id> --data-sources S3Logs={Enable=false}
```
#### `guardduty:CreateFilter`

Napadači sa ovom dozvolom imaju mogućnost da **koriste filtre za automatsko** arhiviranje nalaza:
```bash
aws guardduty create-filter  --detector-id <detector-id> --name <filter-name> --finding-criteria file:///tmp/criteria.json --action ARCHIVE
```
#### `iam:PutRolePolicy`, (`guardduty:CreateIPSet`|`guardduty:UpdateIPSet`)

Napadači sa prethodnim privilegijama mogli bi da modifikuju GuardDuty-ovu [**Listu pouzdanih IP adresa**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) dodajući svoju IP adresu i izbegavajući generisanje upozorenja.
```bash
aws guardduty update-ip-set --detector-id <detector-id> --activate --ip-set-id <ip-set-id> --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv
```
#### `guardduty:DeletePublishingDestination`

Napadači bi mogli ukloniti odredište kako bi sprečili upozorenje:
```bash
aws guardduty delete-publishing-destination --detector-id <detector-id> --destination-id <dest-id>
```
> [!CAUTION]
> Brisanje ove destinacije za objavljivanje **neće uticati na generisanje ili vidljivost nalaza unutar GuardDuty konzole**. GuardDuty će nastaviti da analizira događaje u vašem AWS okruženju, identifikuje sumnjivo ili neočekivano ponašanje i generiše nalaze.

### Primeri zaobilaženja specifičnih nalaza

Imajte na umu da postoji desetine GuardDuty nalaza, međutim, **kao Red Teamer, nećete biti pogođeni svim njima**, a što je bolje, imate **potpunu dokumentaciju o svakom od njih** u [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) pa pogledajte pre nego što preduzmete bilo kakvu akciju da ne biste bili uhvaćeni.

Evo nekoliko primera specifičnih zaobilaženja GuardDuty nalaza:

#### [PenTest:IAMUser/KaliLinux](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#pentest-iam-kalilinux) <a href="#pentest-iam-kalilinux" id="pentest-iam-kalilinux"></a>

GuardDuty detektuje AWS API zahteve iz uobičajenih alata za penetraciono testiranje i aktivira [PenTest Finding](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#pentest-iam-kalilinux).\
Detektuje se po **nazivu korisničkog agenta** koji se prosleđuje u API zahtevu.\
Stoga, **modifikovanjem korisničkog agenta** moguće je sprečiti GuardDuty da detektuje napad.

Da biste to sprečili, možete pretražiti skriptu `session.py` u `botocore` paketu i modifikovati korisnički agent, ili postaviti Burp Suite kao AWS CLI proxy i promeniti korisnički agent sa MitM ili jednostavno koristiti OS kao što su Ubuntu, Mac ili Windows, što će sprečiti aktiviranje ovog upozorenja.

#### UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

Ekstrakcija EC2 kredencijala iz metadata servisa i **korišćenje njih van** AWS okruženja aktivira [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws) upozorenje. S druge strane, korišćenje ovih kredencijala sa vaše EC2 instance aktivira [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws) upozorenje. Ipak, **korišćenje kredencijala na drugoj kompromitovanoj EC2 instanci unutar istog naloga prolazi neprimećeno**, ne izazivajući nikakvo upozorenje.

> [!TIP]
> Stoga, **koristite exfiltrirane kredencijale iznutra mašine** gde ste ih pronašli da ne biste aktivirali ovo upozorenje.

## Reference

- [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html)
- [https://docs.aws.amazon.com/guardduty/latest/ug/findings_suppression-rule.html](https://docs.aws.amazon.com/guardduty/latest/ug/findings_suppression-rule.html)
- [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html)
- [https://docs.aws.amazon.com/cli/latest/reference/guardduty/delete-publishing-destination.html](https://docs.aws.amazon.com/cli/latest/reference/guardduty/delete-publishing-destination.html)
- [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-ec2.html#unauthorizedaccess-ec2-torclient](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-ec2.html#unauthorizedaccess-ec2-torclient)
- [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws)
- [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws)
- [https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/what-are-vpc-endpoints.html](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/what-are-vpc-endpoints.html)

{{#include ../../../../banners/hacktricks-training.md}}
