# AWS - GuardDuty Enum

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

## GuardDuty

Volgens die [**docs**](https://aws.amazon.com/guardduty/features/): GuardDuty kombineer **masjienleer, anomaliedetektering, netwerkmonitering, en kwaadwillige lêerontdekking**, met behulp van beide AWS en toonaangewende derdepartybronne om te help om werklas en data op AWS te beskerm. GuardDuty is in staat om tien biljoen gebeurtenisse oor verskeie AWS-datasoeke te analiseer, soos AWS CloudTrail gebeurtenislogs, Amazon Virtual Private Cloud (VPC) Flow Logs, Amazon Elastic Kubernetes Service (EKS) oudit- en stelsellogs, en DNS-vraaglogs.

Amazon GuardDuty **identifiseer ongewone aktiwiteit binne jou rekeninge**, analiseer die **veiligheidsrelevansie** van die aktiwiteit, en gee die **konteks** waarin dit geaktiveer is. Dit stel 'n responder in staat om te bepaal of hulle tyd moet spandeer aan verdere ondersoek.

Alerte **verskyn in die GuardDuty-konsol (90 dae)** en CloudWatch Events.

> [!WARNING]
> Wanneer 'n gebruiker **GuardDuty deaktiveer**, sal dit ophou om jou AWS-omgewing te monitor en dit sal glad nie nuwe bevindings genereer nie, en die **bestaande bevindings sal verlore gaan**.\
> As jy dit net stop, sal die bestaande bevindings bly.

### Bevindinge Voorbeeld

- **Verkenning**: Aktiwiteit wat verkenning deur 'n aanvaller aandui, soos **ongewone API-aktiwiteit**, verdagte databasis **aanmeld** pogings, intra-VPC **poortskandering**, ongewone mislukte aanmeldversoekpatrone, of onbelemmerde poortprobering vanaf 'n bekende slegte IP.
- **Instansie-kompromie**: Aktiwiteit wat 'n instansie-kompromie aandui, soos **kripto-geldeenheid mynbou, agterdeur opdrag en beheer (C\&C)** aktiwiteit, malware wat domeingenerasie-algoritmes (DGA) gebruik, uitgaande ontkenning van diens aktiwiteit, ongewone **hoë netwerk** verkeersvolume, ongewone netwerkprotokolle, uitgaande instansiekommunikasie met 'n bekende kwaadwillige IP, tydelike Amazon EC2 geloofsbriewe wat deur 'n eksterne IP-adres gebruik word, en data-uitvloeiing met behulp van DNS.
- **Rekening-kompromie**: Algemene patrone wat dui op rekening-kompromie sluit API-oproepe vanaf 'n ongewone geolokasie of anonymiserende proxy in, pogings om AWS CloudTrail logging te deaktiveer, veranderinge wat die rekening wagwoordbeleid verzwak, ongewone instansie of infrastruktuur bekendstellings, infrastruktuurontplooiings in 'n ongewone streek, geloofsbriefdiefstal, verdagte databasis aanmeldaktiwiteit, en API-oproepe vanaf bekende kwaadwillige IP-adresse.
- **Emmer-kompromie**: Aktiwiteit wat 'n emmer-kompromie aandui, soos verdagte data-toegangspatrone wat geloofsbriefmisbruik aandui, ongewone Amazon S3 API-aktiwiteit vanaf 'n afgeleë gasheer, ongeoorloofde S3-toegang vanaf bekende kwaadwillige IP-adresse, en API-oproepe om data in S3-emmers te verkry vanaf 'n gebruiker met geen vorige geskiedenis van toegang tot die emmer of geaktiveer vanaf 'n ongewone ligging. Amazon GuardDuty monitor en analiseer voortdurend AWS CloudTrail S3 data-gebeurtenisse (bv. GetObject, ListObjects, DeleteObject) om verdagte aktiwiteit oor al jou Amazon S3-emmers te detecteer.

<details>

<summary>Bevinding Inligting</summary>

Bevinding opsomming:

- Bevinding tipe
- Ernstigheid: 7-8.9 Hoog, 4-6.9 Medium, 01-3.9 Laag
- Streek
- Rekening ID
- Hulpbron ID
- Tyd van opsporing
- Watter bedreigingslys is gebruik

Die liggaam het hierdie inligting:

- Hulpbron geraak
- Aksie
- Akteur: IP-adres, poort en domein
- Bykomende Inligting

</details>

### Alle Bevindinge

Toegang tot 'n lys van al die GuardDuty bevindings in: [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)

### Multi Rekeninge

#### Deur Uitnodiging

Jy kan **ander rekeninge** na 'n ander AWS GuardDuty rekening uitnooi sodat **elke rekening vanaf dieselfde GuardDuty gemonitor word**. Die meesterrekening moet die lidrekeninge uitnooi en dan moet die verteenwoordiger van die lidrekening die uitnodiging aanvaar.

#### Deur Organisasie

Jy kan enige rekening binne die organisasie aanwys om die **GuardDuty gedelegeerde administrateur** te wees. Slegs die organisasiebestuursrekening kan 'n gedelegeerde administrateur aanwys.

'n Rekening wat as 'n gedelegeerde administrateur aangewys word, word 'n GuardDuty administrateurrekening, het GuardDuty outomaties geaktiveer in die aangewese AWS-streek, en het ook die **toestemming om GuardDuty in te skakel en te bestuur vir al die rekeninge in die organisasie binne daardie streek**. Die ander rekeninge in die organisasie kan gesien en bygevoeg word as GuardDuty lidrekeninge wat met hierdie gedelegeerde administrateurrekening geassosieer word.

## Enumerasie
```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

### Algemene Riglyne

Probeer soveel as moontlik uit te vind oor die gedrag van die kredensiale wat jy gaan gebruik:

- Tye wat dit gebruik word
- Plekke
- Gebruikersagente / Dienste (Dit kan gebruik word vanaf awscli, webconsole, lambda...)
- Toestemmings wat gereeld gebruik word

Met hierdie inligting, herleef soveel as moontlik dieselfde scenario om die toegang te gebruik:

- As dit 'n **gebruiker of 'n rol is wat deur 'n gebruiker toeganklik is**, probeer om dit in dieselfde ure te gebruik, vanaf dieselfde geolokasie (selfs dieselfde ISP en IP indien moontlik)
- As dit 'n **rol is wat deur 'n diens gebruik word**, skep dieselfde diens in dieselfde streek en gebruik dit van daar in dieselfde tydsbereik
- Probeer altyd om die **dieselfde toestemmings** te gebruik wat hierdie prinsiep gebruik het
- As jy **ander toestemmings moet gebruik of 'n toestemming moet misbruik** (byvoorbeeld, om 1.000.000 cloudtrail-loglêers af te laai) doen dit **stadig** en met die **minimale hoeveelheid interaksies** met AWS (awscli roep soms verskeie lees-API's aan voordat die skryf een) 

### Breek GuardDuty

#### `guardduty:UpdateDetector`

Met hierdie toestemming kan jy GuardDuty deaktiveer om te verhoed dat waarskuwings geaktiveer word.
```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`

Aanvallers met hierdie toestemming het die vermoë om **filters te gebruik vir die outomatiese** argivering van bevindings:
```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`)

Aanvallers met die vorige voorregte kon GuardDuty se [**Vertroude IP lys**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) wysig deur hul IP-adres daaraan toe te voeg en sodoende die generering van waarskuwings te vermy.
```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`

Aanvallers kan die bestemming verwyder om waarskuwings te voorkom:
```bash
aws guardduty delete-publishing-destination --detector-id <detector-id> --destination-id <dest-id>
```
> [!CAUTION]
> Die verwydering van hierdie publikasiebestemming sal **nie die generering of sigbaarheid van bevindings binne die GuardDuty-konsol beïnvloed nie**. GuardDuty sal voortgaan om gebeurtenisse in jou AWS-omgewing te analiseer, verdagte of onverwagte gedrag te identifiseer, en bevindings te genereer.

### Spesifieke Bevinding Bypass Voorbeelde

Let daarop dat daar tientalle GuardDuty bevindings is, egter, **as 'n Red Teamer sal nie almal jou beïnvloed nie**, en wat beter is, jy het die **volledige dokumentasie van elk van hulle** in [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) so kyk na dit voordat jy enige aksie onderneem om nie gevang te word nie.

Hier is 'n paar voorbeelde van spesifieke GuardDuty bevindinge bypasses:

#### [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 detect AWS API versoeke van algemene penetrasietoets gereedskap en aktiveer 'n [PenTest Finding](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#pentest-iam-kalilinux).\
Dit word opgespoor deur die **gebruikersagentnaam** wat in die API versoek oorgedra word.\
Daarom, **om die gebruikersagent te wysig** is dit moontlik om te voorkom dat GuardDuty die aanval opspoor.

Om dit te voorkom kan jy soek vanaf die skrip `session.py` in die `botocore` pakket en die gebruikersagent wysig, of stel Burp Suite as die AWS CLI proxy en verander die gebruikersagent met die MitM of gebruik net 'n OS soos Ubuntu, Mac of Windows wat hierdie waarskuwing sal voorkom.

#### UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

Die onttrekking van EC2 geloofsbriewe uit die metadata diens en **dit buite** die AWS-omgewing gebruik aktiveer die [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws) waarskuwing. Omgekeerd, die gebruik van hierdie geloofsbriewe vanaf jou EC2 instance aktiveer die [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws) waarskuwing. Tog, **die gebruik van die geloofsbriewe op 'n ander gecompromitteerde EC2 instance binne dieselfde rekening gaan onopgemerk**, wat geen waarskuwing veroorsaak nie.

> [!TIP]
> Daarom, **gebruik die onttrokken geloofsbriewe van binne die masjien** waar jy dit gevind het om nie hierdie waarskuwing te aktiveer nie.

## Verwysings

- [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}}
