AWS - GuardDuty Enum

Reading time: 10 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

GuardDuty

Laut den Docs: GuardDuty kombiniert maschinelles Lernen, Anomalieerkennung, Netzwerküberwachung und Entdeckung bösartiger Dateien, indem sowohl AWS- als auch branchenführende Drittanbieterquellen verwendet werden, um Workloads und Daten auf AWS zu schützen. GuardDuty ist in der Lage, zig Milliarden von Ereignissen über mehrere AWS-Datenquellen zu analysieren, wie z.B. AWS CloudTrail-Ereignisprotokolle, Amazon Virtual Private Cloud (VPC) Flow Logs, Amazon Elastic Kubernetes Service (EKS) Audit- und Systemprotokolle sowie DNS-Abfrageprotokolle.

Amazon GuardDuty identifiziert ungewöhnliche Aktivitäten innerhalb Ihrer Konten, analysiert die Sicherheitsrelevanz der Aktivität und gibt den Kontext an, in dem sie ausgelöst wurde. Dies ermöglicht es einem Reaktionsbeauftragten zu bestimmen, ob er Zeit für weitere Untersuchungen aufwenden sollte.

Alarme erscheinen in der GuardDuty-Konsole (90 Tage) und CloudWatch Events.

warning

Wenn ein Benutzer GuardDuty deaktiviert, wird die Überwachung Ihrer AWS-Umgebung eingestellt und es werden keine neuen Erkenntnisse mehr generiert, und die bestehenden Erkenntnisse gehen verloren.
Wenn Sie es einfach nur stoppen, bleiben die bestehenden Erkenntnisse erhalten.

Beispiel für Erkenntnisse

  • Reconnaissance: Aktivitäten, die auf eine Aufklärung durch einen Angreifer hindeuten, wie z.B. ungewöhnliche API-Aktivitäten, verdächtige Datenbank-Anmeldeversuche, intra-VPC-Port-Scans, ungewöhnliche Muster bei fehlgeschlagenen Anmeldeanfragen oder unblockierte Portabfragen von einer bekannten schlechten IP.
  • Instanzkompromittierung: Aktivitäten, die auf eine Instanzkompromittierung hindeuten, wie z.B. Kryptowährungs-Mining, Backdoor-Befehls- und Kontrollaktivitäten (C&C), Malware, die Domain-Generierungs-Algorithmen (DGA) verwendet, ausgehende Denial-of-Service-Aktivitäten, ungewöhnlich hohe Netzwerk-Traffic-Volumen, ungewöhnliche Netzwerkprotokolle, ausgehende Instanzkommunikation mit einer bekannten bösartigen IP, temporäre Amazon EC2-Anmeldeinformationen, die von einer externen IP-Adresse verwendet werden, und Datenexfiltration über DNS.
  • Konto-Kompromittierung: Häufige Muster, die auf eine Konto-Kompromittierung hindeuten, umfassen API-Aufrufe von einem ungewöhnlichen geografischen Standort oder anonymisierenden Proxy, Versuche, das AWS CloudTrail-Logging zu deaktivieren, Änderungen, die die Passwort-Richtlinie des Kontos schwächen, ungewöhnliche Instanz- oder Infrastrukturstarts, Infrastruktur-Bereitstellungen in einer ungewöhnlichen Region, Credential-Diebstahl, verdächtige Datenbank-Anmeldeaktivitäten und API-Aufrufe von bekannten bösartigen IP-Adressen.
  • Bucket-Kompromittierung: Aktivitäten, die auf eine Bucket-Kompromittierung hindeuten, wie z.B. verdächtige Datenzugriffsmuster, die auf Credential-Missbrauch hindeuten, ungewöhnliche Amazon S3 API-Aktivitäten von einem Remote-Host, unbefugter S3-Zugriff von bekannten bösartigen IP-Adressen und API-Aufrufe zum Abrufen von Daten in S3-Buckets von einem Benutzer ohne vorherige Historie des Zugriffs auf den Bucket oder die von einem ungewöhnlichen Standort aus ausgelöst wurden. Amazon GuardDuty überwacht und analysiert kontinuierlich AWS CloudTrail S3-Datenereignisse (z.B. GetObject, ListObjects, DeleteObject), um verdächtige Aktivitäten in all Ihren Amazon S3-Buckets zu erkennen.
Erkenntnisinformationen

Erkenntnissummary:

  • Erkenntnistyp
  • Schweregrad: 7-8.9 Hoch, 4-6.9 Mittel, 01-3.9 Niedrig
  • Region
  • Konto-ID
  • Ressourcen-ID
  • Erkennungszeit
  • Welche Bedrohungsliste verwendet wurde

Der Körper enthält diese Informationen:

  • Betroffene Ressource
  • Aktion
  • Akteur: IP-Adresse, Port und Domain
  • Zusätzliche Informationen

Alle Erkenntnisse

Zugriff auf eine Liste aller GuardDuty-Erkenntnisse unter: https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html

Mehrere Konten

Nach Einladung

Sie können andere Konten zu einem anderen AWS GuardDuty-Konto einladen, sodass jedes Konto von demselben GuardDuty überwacht wird. Das Master-Konto muss die Mitgliedskonten einladen, und dann muss der Vertreter des Mitgliedskontos die Einladung annehmen.

Über Organisation

Sie können jedes Konto innerhalb der Organisation als delegierten Administrator für GuardDuty benennen. Nur das Organisationsverwaltungs-Konto kann einen delegierten Administrator benennen.

Ein Konto, das als delegierter Administrator benannt wird, wird zu einem GuardDuty-Administratorkonto, hat GuardDuty automatisch in der benannten AWS-Region aktiviert und hat auch die Berechtigung, GuardDuty für alle Konten in der Organisation innerhalb dieser Region zu aktivieren und zu verwalten. Die anderen Konten in der Organisation können als GuardDuty-Mitgliedskonten angezeigt und hinzugefügt werden, die mit diesem delegierten Administratorkonto verbunden sind.

Enumeration

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

Allgemeine Anleitung

Versuchen Sie, so viel wie möglich über das Verhalten der Anmeldeinformationen herauszufinden, die Sie verwenden möchten:

  • Zeiten, zu denen sie verwendet werden
  • Standorte
  • Benutzeragenten / Dienste (Es könnte von awscli, webconsole, lambda... verwendet werden)
  • Regelmäßig verwendete Berechtigungen

Mit diesen Informationen rekonstruieren Sie so viel wie möglich dasselbe Szenario, um den Zugriff zu nutzen:

  • Wenn es sich um einen Benutzer oder eine Rolle handelt, auf die ein Benutzer zugreift, versuchen Sie, es zur gleichen Zeit, von derselben Geolokation (wenn möglich sogar vom selben ISP und IP) zu verwenden
  • Wenn es sich um eine Rolle handelt, die von einem Dienst verwendet wird, erstellen Sie denselben Dienst in derselben Region und verwenden Sie ihn von dort aus in denselben Zeiträumen
  • Versuchen Sie immer, die gleichen Berechtigungen zu verwenden, die dieser Principal verwendet hat
  • Wenn Sie andere Berechtigungen verwenden oder eine Berechtigung missbrauchen müssen (zum Beispiel, 1.000.000 CloudTrail-Protokolldateien herunterladen), tun Sie dies langsam und mit der minimalen Anzahl an Interaktionen mit AWS (awscli ruft manchmal mehrere Lese-APIs vor der Schreib-API auf)

GuardDuty umgehen

guardduty:UpdateDetector

Mit dieser Berechtigung könnten Sie GuardDuty deaktivieren, um das Auslösen von Warnungen zu vermeiden.

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

Angreifer mit dieser Berechtigung haben die Möglichkeit, Filter für die automatische Archivierung von Ergebnissen einzusetzen:

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)

Angreifer mit den vorherigen Berechtigungen könnten die Vertrauenswürdige IP-Liste von GuardDuty ändern, indem sie ihre IP-Adresse hinzufügen und so das Generieren von Warnmeldungen vermeiden.

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

Angreifer könnten das Ziel entfernen, um Warnungen zu verhindern:

bash
aws guardduty delete-publishing-destination --detector-id <detector-id> --destination-id <dest-id>

caution

Das Löschen dieses Veröffentlichungsziels wird keine Auswirkungen auf die Generierung oder Sichtbarkeit von Ergebnissen innerhalb der GuardDuty-Konsole haben. GuardDuty wird weiterhin Ereignisse in Ihrer AWS-Umgebung analysieren, verdächtiges oder unerwartetes Verhalten identifizieren und Ergebnisse generieren.

Beispiele für spezifische Findings-Bypässe

Beachten Sie, dass es Dutzende von GuardDuty-Findings gibt, jedoch werden nicht alle von ihnen Sie als Red Teamer betreffen, und was besser ist, Sie haben die vollständige Dokumentation zu jedem von ihnen in https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html, also werfen Sie einen Blick darauf, bevor Sie Maßnahmen ergreifen, um nicht erwischt zu werden.

Hier haben Sie ein paar Beispiele für spezifische GuardDuty-Findings-Bypässe:

PenTest:IAMUser/KaliLinux

GuardDuty erkennt AWS API-Anfragen von gängigen Penetrationstest-Tools und löst ein PenTest Finding aus.
Es wird durch den User-Agent-Namen erkannt, der in der API-Anfrage übergeben wird.
Daher ist es möglich, den User-Agent zu ändern, um zu verhindern, dass GuardDuty den Angriff erkennt.

Um dies zu verhindern, können Sie im Skript session.py im botocore-Paket nach dem User-Agent suchen und ihn ändern oder Burp Suite als AWS CLI-Proxy einrichten und den User-Agent mit MitM ändern oder einfach ein Betriebssystem wie Ubuntu, Mac oder Windows verwenden, um zu verhindern, dass dieser Alarm ausgelöst wird.

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

Das Extrahieren von EC2-Anmeldeinformationen aus dem Metadatenservice und deren Nutzung außerhalb der AWS-Umgebung aktiviert den UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS Alarm. Im Gegensatz dazu löst die Verwendung dieser Anmeldeinformationen von Ihrer EC2-Instanz den UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS Alarm aus. Dennoch geht die Verwendung der Anmeldeinformationen auf einer anderen kompromittierten EC2-Instanz innerhalb desselben Kontos unentdeckt, ohne einen Alarm auszulösen.

tip

Daher verwenden Sie die exfiltrierten Anmeldeinformationen von innerhalb der Maschine, wo Sie sie gefunden haben, um diesen Alarm nicht auszulösen.

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks