AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail zeichnet und überwacht Aktivitäten in Ihrer AWS-Umgebung auf. Es erfasst detaillierte Ereignisprotokolle, einschließlich wer was, wann und von wo aus getan hat, für alle Interaktionen mit AWS-Ressourcen. Dies bietet eine Audit-Trail von Änderungen und Aktionen, die bei der Sicherheitsanalyse, der Compliance-Prüfung und der Verfolgung von Ressourcenänderungen helfen. CloudTrail ist unerlässlich, um das Benutzer- und Ressourcenverhalten zu verstehen, Sicherheitspositionen zu verbessern und die Einhaltung gesetzlicher Vorschriften sicherzustellen.
Jedes protokollierte Ereignis enthält:
Der Name des aufgerufenen API:
eventName
Der aufgerufene Dienst:
eventSource
Die Zeit:
eventTime
Die IP-Adresse:
SourceIPAddress
Die Agentenmethode:
userAgent
. Beispiele:Signing.amazonaws.com - Aus der AWS Management Console
console.amazonaws.com - Root-Benutzer des Kontos
lambda.amazonaws.com - AWS Lambda
Die Anforderungsparameter:
requestParameters
Die Antwortelemente:
responseElements
Ereignisse werden ungefähr alle 5 Minuten in einer JSON-Datei in eine neue Protokolldatei geschrieben, die von CloudTrail aufbewahrt wird und schließlich werden die Protokolldateien ungefähr 15 Minuten später an S3 übermittelt. CloudTrails-Protokolle können über Konten und Regionen hinweg aggregiert werden. CloudTrail ermöglicht die Verwendung der Protokolldateiintegrität, um zu überprüfen, ob Ihre Protokolldateien seit der Übermittlung durch CloudTrail unverändert geblieben sind. Es erstellt einen SHA-256-Hash der Protokolle in einer Digest-Datei. Ein SHA-256-Hash der neuen Protokolle wird jede Stunde erstellt. Beim Erstellen eines Trails ermöglichen die Ereignisauswähler, den Trail zum Protokollieren von: Management-, Daten- oder Einblicke-Ereignissen anzugeben.
Die Protokolle werden in einem S3-Bucket gespeichert. Standardmäßig wird die Serverseitige Verschlüsselung verwendet (SSE-S3), sodass AWS den Inhalt für die Personen entschlüsselt, die darauf zugreifen können, aber für zusätzliche Sicherheit können Sie SSE mit KMS und Ihren eigenen Schlüsseln verwenden.
Die Protokolle werden in einem S3-Bucket mit diesem Namensformat gespeichert:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
Wobei der BucketName ist:
aws-cloudtrail-logs-<accountid>-<random>
Beispiel:
aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
In jedem Ordner hat jedes Protokoll einen Namen nach diesem Format: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
Konvention zur Benennung von Protokolldateien
Darüber hinaus werden Digest-Dateien (zur Überprüfung der Dateiintegrität) im gleichen Bucket enthalten sein:
Protokolle aus mehreren Konten aggregieren
Erstellen Sie einen Trail im AWS-Konto, in dem Sie möchten, dass die Protokolldateien zugestellt werden
Weisen Sie Berechtigungen für den Ziel-S3-Bucket zu, die den plattformübergreifenden Zugriff für CloudTrail ermöglichen, und erlauben Sie jedem AWS-Konto, das Zugriff benötigt
Erstellen Sie in den anderen AWS-Konten einen neuen Trail und wählen Sie aus, den im Schritt 1 erstellten Bucket zu verwenden
Auch wenn Sie alle Protokolle im gleichen S3-Bucket speichern können, können Sie CloudTrail-Protokolle aus mehreren Konten nicht in einem CloudWatch-Protokoll aggregieren, das zu einem einzigen AWS-Konto gehört.
Denken Sie daran, dass ein Konto verschiedene Trails von CloudTrail aktiviert haben kann, die dieselben (oder unterschiedliche) Protokolle in verschiedenen Buckets speichern.
Cloudtrail aus allen Org-Konten in 1
Beim Erstellen eines CloudTrail ist es möglich anzugeben, CloudTrail für alle Konten in der Organisation zu aktivieren und die Protokolle in nur 1 Bucket zu erhalten:
Auf diese Weise können Sie CloudTrail in allen Regionen aller Konten einfach konfigurieren und die Protokolle in 1 Konto zentralisieren (das Sie schützen sollten).
Überprüfung von Protokolldateien
Sie können überprüfen, ob die Protokolle nicht geändert wurden, indem Sie Folgendes ausführen
Protokolle an CloudWatch senden
CloudTrail kann automatisch Protokolle an CloudWatch senden, damit Sie Warnungen einrichten können, die Sie benachrichtigen, wenn verdächtige Aktivitäten durchgeführt werden. Beachten Sie, dass zur Erlaubnis für CloudTrail, die Protokolle an CloudWatch zu senden, eine Rolle erstellt werden muss, die diese Aktion ermöglicht. Wenn möglich, wird empfohlen, die Standardrolle von AWS für diese Aktionen zu verwenden. Diese Rolle ermöglicht es CloudTrail:
CreateLogStream: Dies ermöglicht das Erstellen von CloudWatch-Protokollströmen
PutLogEvents: Übermitteln von CloudTrail-Protokollen an CloudWatch-Protokollstrom
Ereignisverlauf
Der CloudTrail-Ereignisverlauf ermöglicht es Ihnen, in einer Tabelle die aufgezeichneten Protokolle zu inspizieren:
Erkenntnisse
CloudTrail Insights analysiert automatisch Schreibverwaltungsereignisse von CloudTrail-Trails und benachrichtigt Sie über ungewöhnliche Aktivitäten. Wenn beispielsweise eine Zunahme von TerminateInstance
-Ereignissen vorliegt, die sich von den festgelegten Grundlinien unterscheidet, wird dies als Insight-Ereignis angezeigt. Diese Ereignisse erleichtern das Auffinden und Reagieren auf ungewöhnliche API-Aktivitäten.
Die Erkenntnisse werden im selben Bucket wie die CloudTrail-Protokolle gespeichert unter: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Sicherheit
Integrität der CloudTrail-Protokolldatei |
|
Unberechtigten Zugriff stoppen |
|
Verhindern, dass Protokolldateien gelöscht werden |
|
Zugriffsberater
Der AWS Access Advisor stützt sich auf die letzten 400 Tage der AWS CloudTrail-Protokolle, um seine Erkenntnisse zu sammeln. CloudTrail erfasst eine Historie der AWS-API-Aufrufe und zugehörigen Ereignisse, die in einem AWS-Konto durchgeführt wurden. Der Zugriffsberater nutzt diese Daten, um anzuzeigen, wann Dienste zuletzt aufgerufen wurden. Durch die Analyse von CloudTrail-Protokollen kann der Zugriffsberater feststellen, auf welche AWS-Dienste ein IAM-Benutzer oder eine Rolle zugegriffen hat und wann dieser Zugriff erfolgt ist. Dies hilft AWS-Administratoren, fundierte Entscheidungen über die Feinabstimmung von Berechtigungen zu treffen, da sie Dienste identifizieren können, die über einen längeren Zeitraum nicht aufgerufen wurden, und möglicherweise aufgrund realer Nutzungsverhaltensmuster übermäßig breite Berechtigungen reduzieren können.
Daher informiert der Zugriffsberater über die Benutzer erteilten unnötigen Berechtigungen, damit der Administrator sie entfernen kann.
Aktionen
Enumeration
CSV-Injektion
Es ist möglich, eine CSV-Injektion in CloudTrail durchzuführen, die beliebigen Code ausführt, wenn die Protokolle in CSV exportiert und mit Excel geöffnet werden. Der folgende Code generiert einen Protokolleintrag mit einem schlechten Trail-Namen, der das Payload enthält:
Für weitere Informationen zu CSV-Injections besuchen Sie die Seite:
Für weitere Informationen zu dieser spezifischen Technik besuchen Sie https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Umgehung der Erkennung
HoneyTokens Umgehung
Honeytokens werden erstellt, um den Abfluss sensibler Informationen zu erkennen. Im Falle von AWS handelt es sich um AWS-Schlüssel, deren Verwendung überwacht wird. Wenn etwas eine Aktion mit diesem Schlüssel auslöst, hat jemand diesen Schlüssel gestohlen.
Diese Überwachung erfolgt jedoch über CloudTrail, und es gibt einige AWS-Dienste, die keine Protokolle an CloudTrail senden (siehe die Liste hier). Einige dieser Dienste werden mit einem Fehler antworten, der die ARN der Schlüsselrolle enthält, wenn jemand Unbefugtes (der Honeytoken-Schlüssel) versucht darauf zuzugreifen.
Auf diese Weise kann ein Angreifer die ARN des Schlüssels erhalten, ohne ein Protokoll auszulösen. In der ARN kann der Angreifer die AWS-Kontonummer und den Namen sehen. Es ist einfach, die Kontonummern und Namen der HoneyToken-Unternehmen zu identifizieren, sodass ein Angreifer feststellen kann, ob es sich um einen HoneyToken handelt.
HoneyTokens-Erkennung
Pacu erkennt, ob ein Schlüssel zu Canarytokens, SpaceCrab, SpaceSiren** gehört:**
Wenn
canarytokens.org
im Rollennamen oder die Kontonummer534261010715
in der Fehlermeldung erscheint.Bei neueren Tests verwenden sie das Konto
717712589309
und haben immer noch die Zeichenfolgecanarytokens.com
im Namen.Wenn
SpaceCrab
im Rollennamen in der Fehlermeldung erscheint.SpaceSiren verwendet UUIDs zur Generierung von Benutzernamen:
[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
Wenn der Name wie zufällig generiert aussieht, besteht eine hohe Wahrscheinlichkeit, dass es sich um einen HoneyToken handelt.
Beachten Sie, dass alle öffentlichen APIs, bei denen festgestellt wurde, dass sie keine CloudTrail-Protokolle erstellen, jetzt behoben sind. Möglicherweise müssen Sie also Ihre eigenen finden...
Oder Sie können die Kontonummer aus dem kodierten im Zugriffsschlüssel erhalten, wie hier erklärt und die Kontonummer mit Ihrer Liste der Honeytokens AWS-Konten überprüfen:
Für weitere Informationen siehe die ursprüngliche Forschung.
Zugriff auf Drittanbieterinfrastruktur
Bestimmte AWS-Dienste werden eine Infrastruktur erstellen, wie z.B. Datenbanken oder Kubernetes-Cluster (EKS). Ein Benutzer, der direkt mit diesen Diensten kommuniziert (wie die Kubernetes-API), verwendet nicht die AWS-API, sodass CloudTrail diese Kommunikation nicht sehen kann.
Daher könnte ein Benutzer mit Zugriff auf EKS, der die URL der EKS-API entdeckt hat, lokal einen Token generieren und direkt mit dem API-Dienst kommunizieren, ohne von CloudTrail erkannt zu werden.
Weitere Informationen unter:
pageAWS - EKS Post ExploitationÄndern der CloudTrail-Konfiguration
Trails löschen
Trails stoppen
Deaktivieren Sie das Logging in mehreren Regionen
Deaktivieren Sie das Protokollieren durch Ereignisauswähler
Im ersten Beispiel wird ein einzelner Ereignisauswähler als JSON-Array mit einem einzelnen Objekt bereitgestellt. Das "ReadWriteType": "ReadOnly"
gibt an, dass der Ereignisauswähler nur Leseereignisse erfassen soll (so dass CloudTrail-Insights z. B. keine Schreibeereignisse überprüfen werden).
Sie können den Ereignisauswähler entsprechend Ihren spezifischen Anforderungen anpassen.
Protokollierung von Löschvorgängen über S3-Lebenszyklusrichtlinie
Ändern der Bucket-Konfiguration
Löschen des S3-Buckets
Ändern der Bucket-Richtlinie, um Schreibvorgänge des CloudTrail-Dienstes zu verweigern
Hinzufügen einer Lebenszyklusrichtlinie zum S3-Bucket, um Objekte zu löschen
Deaktivieren des KMS-Schlüssels, der zur Verschlüsselung der CloudTrail-Protokolle verwendet wird
Cloudtrail-Ransomware
S3-Ransomware
Sie könnten einen asymmetrischen Schlüssel generieren und CloudTrail die Daten mit diesem Schlüssel verschlüsseln lassen und den privaten Schlüssel löschen, damit der Inhalt von CloudTrail nicht wiederhergestellt werden kann. Dies ist im Grunde genommen eine S3-KMS-Ransomware, die in folgendem Dokument erklärt wird:
pageAWS - S3 Post ExploitationKMS-Ransomware
Dies ist eine einfachere Möglichkeit, den vorherigen Angriff mit unterschiedlichen Berechtigungsanforderungen durchzuführen:
pageAWS - KMS Post ExploitationReferenzen
Last updated