AWS - GuardDuty Enum

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

GuardDuty

Gemäß den Dokumenten: GuardDuty kombiniert Maschinelles Lernen, Anomalieerkennung, Netzwerküberwachung und Entdeckung bösartiger Dateien, unter Verwendung sowohl von AWS als auch von branchenführenden Drittanbieterquellen, um Workloads und Daten auf AWS zu schützen. GuardDuty ist in der Lage, zehn Milliarden Ereignisse über mehrere AWS-Datenquellen zu analysieren, wie z.B. AWS CloudTrail-Ereignisprotokolle, Amazon Virtual Private Cloud (VPC) Flow-Protokolle, 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 aufgerufen wurde. Dies ermöglicht einem Responder zu bestimmen, ob sie Zeit für weitere Untersuchungen aufwenden sollten.

Warnungen erscheinen in der GuardDuty-Konsole (90 Tage) und CloudWatch-Ereignissen.

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

Beispiel für Erkenntnisse

  • Aufklärung: Aktivitäten, die auf eine Aufklärung durch einen Angreifer hinweisen, wie ungewöhnliche API-Aktivitäten, verdächtige Datenbank-Anmeldeversuche, intra-VPC-Portscans, ungewöhnliche fehlgeschlagene Anmeldeanforderungsmuster oder unblockiertes Port-Scannen von einer bekannten schlechten IP.

  • Instanzkompromittierung: Aktivitäten, die auf eine Instanzkompromittierung hinweisen, wie Kryptowährungs-Mining, Backdoor-Befehls- und Kontrollaktivitäten (C&C), Malware, die Domänengenerierungsalgorithmen (DGA) verwendet, ausgehender Denial-of-Service-Verkehr, ungewöhnlich hoher Netzwerk-Datenverkehr, ungewöhnliche Netzwerkprotokolle, ausgehende Instanzkommunikation mit einer bekannten bösartigen IP, vorübergehend verwendete Amazon EC2-Anmeldeinformationen von einer externen IP-Adresse und Datenexfiltration über DNS.

  • Kontokompromittierung: Häufige Muster, die auf eine Kontokompromittierung hinweisen, sind API-Aufrufe aus einer ungewöhnlichen Geolokalisierung oder einem anonymisierenden Proxy, Versuche, das AWS CloudTrail-Logging zu deaktivieren, Änderungen, die die Kontopasswortrichtlinie schwächen, ungewöhnliche Instanz- oder Infrastrukturstarts, Infrastrukturbereitstellungen in einer ungewöhnlichen Region, Diebstahl von Anmeldeinformationen, verdächtige Datenbankanmeldeaktivitäten und API-Aufrufe von bekannten bösartigen IP-Adressen.

  • Bucket-Kompromittierung: Aktivitäten, die auf eine Bucket-Kompromittierung hinweisen, wie verdächtige Datenzugriffsmuster, die auf den Missbrauch von Anmeldeinformationen hinweisen, ungewöhnliche Amazon S3-API-Aktivitäten von einem Remote-Host, unberechtigter 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 von einem ungewöhnlichen Standort aus. Amazon GuardDuty überwacht und analysiert kontinuierlich AWS CloudTrail S3-Datenereignisse (z.B. GetObject, ListObjects, DeleteObject), um verdächtige Aktivitäten in allen Ihren Amazon S3-Buckets zu erkennen.

Erkenntnisinformationen

Zusammenfassung der Erkenntnisse:

  • Erkenntnistyp

  • Schweregrad: 7-8,9 Hoch, 4-6,9 Mittel, 01-3,9 Niedrig

  • Region

  • Kontonummer

  • Ressourcen-ID

  • Erkennungszeitpunkt

  • Welche Bedrohungsliste wurde verwendet

Der Inhalt 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

Durch Einladung

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

Über Organisation

Sie können jedes Konto innerhalb der Organisation als GuardDuty-Delegationsadministrator festlegen. Nur das Organisationsmanagementkonto kann einen delegierten Administrator bestimmen.

Ein Konto, das als delegierter Administrator festgelegt wird, wird zu einem GuardDuty-Administrator-Konto, bei dem GuardDuty automatisch in der festgelegten AWS-Region aktiviert wird und auch die Berechtigung hat, GuardDuty für alle Konten in der Organisation in dieser Region zu aktivieren und zu verwalten. Die anderen Konten in der Organisation können als GuardDuty-Mitgliedskonten angesehen und diesem delegierten Administrator-Konto zugeordnet werden.

Enumeration

# 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 Umgehung

Allgemeine Anleitung

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

  • Zeiten, zu denen sie verwendet werden

  • Standorte

  • Benutzeragenten / Dienste (Es könnte von awscli, Webkonsole, Lambda verwendet werden...)

  • Regelmäßig verwendete Berechtigungen

Mit diesen Informationen erstellen Sie so weit wie möglich das gleiche Szenario, um auf die Ressourcen zuzugreifen:

  • Wenn es sich um einen Benutzer oder eine Rolle handelt, auf die ein Benutzer zugegriffen hat, versuchen Sie, sie zu den gleichen Zeiten zu verwenden, vom gleichen Standort aus (sogar denselben ISP und dieselbe IP, wenn möglich)

  • 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 zu den gleichen Zeitbereichen

  • Versuchen Sie immer, die gleichen Berechtigungen zu verwenden, die dieser Hauptbenutzer verwendet hat

  • Wenn Sie andere Berechtigungen verwenden müssen oder eine Berechtigung missbrauchen müssen (zum Beispiel das Herunterladen von 1.000.000 CloudTrail-Protokolldateien), tun Sie dies langsam und mit der mindesten Anzahl von Interaktionen mit AWS (awscli ruft manchmal mehrere Lese-APIs auf, bevor der Schreibvorgang erfolgt)

Umgehen von GuardDuty

guardduty:UpdateDetector

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

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 das automatische Archivieren von Ergebnissen zu erstellen:

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 zuvor genannten Berechtigungen könnten die Vertrauenswürdige IP-Liste von GuardDuty ändern, indem sie ihre IP-Adresse hinzufügen und so vermeiden, dass Alarme ausgelöst werden.

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 die Benachrichtigung zu verhindern:

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

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

Beispiele für spezifische Umgehungen von Ergebnissen

Beachten Sie, dass es dutzende von GuardDuty-Ergebnissen gibt, jedoch werden als Red Teamer nicht alle von ihnen Sie betreffen, und was noch besser ist, Sie haben die vollständige Dokumentation jedes einzelnen unter https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html, also schauen Sie sich diese an, bevor Sie Maßnahmen ergreifen, um nicht erwischt zu werden.

Hier sind ein paar Beispiele für spezifische Umgehungen von GuardDuty-Ergebnissen:

GuardDuty erkennt AWS-API-Anfragen von gängigen Penetrationstest-Tools und löst ein PenTest-Ergebnis aus. Es wird durch den User-Agent-Namen erkannt, der in der API-Anfrage übergeben wird. Daher ist es möglich, GuardDuty daran zu hindern, den Angriff zu erkennen, indem man den User-Agent modifiziert.

Um dies zu verhindern, können Sie das Skript session.py im Paket botocore durchsuchen und den User-Agent modifizieren, oder Burp Suite als Proxy für die AWS CLI 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 Metadatendienst und der Einsatz außerhalb der AWS-Umgebung aktiviert den Alarm UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS. Im Gegensatz dazu löst der Einsatz dieser Anmeldeinformationen von Ihrer EC2-Instanz aus den Alarm UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS aus. Die Verwendung der Anmeldeinformationen auf einer anderen kompromittierten EC2-Instanz im selben Konto bleibt unentdeckt, ohne einen Alarm auszulösen.

Verwenden Sie daher die extrahierten Anmeldeinformationen innerhalb der Maschine, in der Sie sie gefunden haben, um diesen Alarm nicht auszulösen.

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated