Skip to content

Dieses Tool ist weder mit Google LLC verbunden noch von Google LLC unterstützt oder gesponsert. Google Cloud und Google Cloud Platform sind Marken von Google LLC. Andere Namen sind Marken ihrer jeweiligen Inhaber.

cloudaudit.googleapis.com · vpc_flows

Wurde unser Google-Cloud-Projekt kompromittiert?

Legen Sie Ihre Cloud Audit Logs und VPC Flow Logs ab und erhalten Sie ein Urteil, eine Zeitleiste des Vorfalls und eine Maßnahmenliste. Analyse im Browser mit WebAssembly – nichts wird hochgeladen.

Google-Cloud-Log-Export hier ablegen

Cloud Audit Logs (Admin Activity, Data Access, System Event, Policy Denied) und VPC Flow Logs: JSON-Downloads aus dem Log-Explorer, aus Cloud Storage kopierte Log-Sink-Dateien (ganze Ordner oder ZIP), Ausgabe von gcloud logging read, JSON-Exporte aus BigQuery. Dateien .json, .jsonl und .gz.

Das Beispiel ist ein fiktiver Vorfall (erfundene Firma, Personen, Schlüssel und IP-Adressen): ein geleakter Dienstkontoschlüssel, roles/owner für ein Gmail-Konto, eine Startup-Script-Hintertür, ein öffentlich gemachter Bucket und ein gelöschter Log-Sink.

Analyse im Browser mit WebAssembly – nichts wird hochgeladen.

So kommen Sie an Ihre Logs

Von null zur hier abgelegten Datei in etwa zwei Minuten. Beginnen Sie mit dem ersten Tab; die anderen behandeln die Konsole, vorhandene Sinks und den Speicherort jedes Logs.

  1. Logs sammeln
  2. Datei, Ordner oder ZIP hier ablegen
  3. Analyse im Browser – nichts wird hochgeladen

Empfohlen

Voraussetzungen: Rolle Logs Viewer (roles/logging.viewer) im Projekt, dazu Private Logs Viewer (roles/logging.privateLogViewer), um Data-Access-Logs einzuschließen. Keine Installation nötig.

  1. Wählen Sie in der Google Cloud Console das betroffene Projekt und öffnen Sie Cloud Shell (die Schaltfläche >_ oben in der Leiste).

  2. Fügen Sie dies ein, um die Audit-Logs und VPC Flow Logs der letzten 30 Tage als eine gzip-komprimierte JSON-Datei zu exportieren:

    gcloud logging read 'logName:"cloudaudit.googleapis.com" OR logName:"vpc_flows"' --freshness=30d --format=json | gzip > gcp-logs.json.gz

  3. Laden Sie sie auf Ihren Computer herunter (oder ⋮ Mehr → Herunterladen in Cloud Shell) und legen Sie gcp-logs.json.gz hier ab:

    cloudshell download gcp-logs.json.gz

  4. Optional: Logs auf Organisationsebene (IAM- und Organisationsrichtlinien-Änderungen an der Organisation selbst) werden getrennt gespeichert. Ersetzen Sie ORG_ID (siehe gcloud organizations list), laden Sie auch diese Datei herunter und legen Sie beide zusammen ab:

    gcloud logging read 'logName:"cloudaudit.googleapis.com" OR logName:"vpc_flows"' --organization=ORG_ID --freshness=30d --format=json | gzip > gcp-org-logs.json.gz

Stolperfallen

  • Jetzt exportieren: Data Access, Policy Denied und VPC Flow Logs werden 30 Tage aufbewahrt (Admin Activity 400), und ein Angreifer mit Owner-Rechten kann Logs und Sinks löschen. Erhöhen Sie --freshness (bis 400d), um weiter zurückzugehen.
  • Data-Access-Logs sind für die meisten Dienste standardmäßig deaktiviert, und ihr Export erfordert die Rolle Private Logs Viewer: Ohne sie sind Datenzugriffe unsichtbar.
  • Als JSON herunterladen, nie als CSV (wird nicht gelesen), und die Grenze von 10.000 Einträgen pro Konsolen-Download beachten. Alle Zeitstempel sind UTC.

§ 01

Was dieses Tool macht

GCP Forensics beantwortet die erste Frage eines Cloud-Vorfalls: Wurde unser Google-Cloud-Projekt kompromittiert, und wie? Es liest die Cloud Audit Logs – das Protokoll, wer was wo getan hat, das Google Cloud für jeden API-Aufruf führt – und die VPC Flow Logs und wendet Erkennungen an, die dem Ablauf echter Google-Cloud-Angriffe nachgebildet sind.

Sie erhalten ein Urteil (Unauffällig, Verdächtig oder Kompromittiert) mit Begründung, die Befunde mit ihren MITRE-ATT&CK-Techniken und Belegen, eine Zeitleiste des Vorfalls, einen Pivot über Identitäten, Dienstkontoschlüssel, IP-Adressen, Projekte und Ressourcen sowie eine priorisierte Maßnahmenliste.

Alles läuft in Ihrem Browser: Ein nach WebAssembly kompilierter Rust-Parser liest die Dateien als Stream in einem Web Worker. Ihre Logs mit E-Mail-Adressen, IPs und Ressourcennamen verlassen nie Ihren Rechner.

§ 02

Was es erkennt

  • Gestohlene Zugangsdaten: erstellte oder hochgeladene Dienstkontoschlüssel, Schlüssel genutzt von Internet-IPs und neuen IPs, Identitätswechsel (actAs, Token Creator), Wellen verweigerter Aufrufe.
  • IAM-Übernahme: vergebene Owner-, Editor- und IAM-Admin-Rollen, private gmail.com-Konten und unbekannte Domains in IAM-Richtlinien, Änderungen an Organisationsrichtlinien und benutzerdefinierten Rollen.
  • Compute-Missbrauch: Startup-Script-Hintertüren, in Metadaten eingeschleuste SSH-Schlüssel, deaktiviertes OS Login, GPU-Instanzen, Wellen von VM-Erstellungen, VMs in nie genutzten Regionen, für 0.0.0.0/0 geöffnete Firewalls.
  • Datendiebstahl: öffentlich gemachte Buckets und andere Ressourcen (allUsers), massenhaftes storage.objects.get, BigQuery-Kopien in andere Projekte, freigegebene Images und Snapshots, große Übertragungen ins Internet in den VPC Flow Logs.
  • Spurenverwischung: gelöschte oder geänderte Log-Sinks, Ausschlüsse, gelöschte Log-Buckets und Logs, deaktiviertes Data-Access-Logging, entfernte Security-Command-Center-Benachrichtigungen, vernichtete KMS-Schlüsselversionen.
  • Korrelation: Geht dieselbe IP oder Identität von verdächtigem Zugriff zu Übernahmeaktionen über, wird eine kritische Angriffskette gemeldet.

§ 03

Vor dem nächsten Vorfall

Sie sammeln Logs für den aktuellen Vorfall? Nutzen Sie die Sammelanleitung unter der Ablagefläche.

Damit die nächste Untersuchung die nötigen Beweise hat:

  • Noch kein Sink? Legen Sie jetzt einen an (Logging → Log-Router → Sink erstellen → Cloud Storage), damit die nächsten Ereignisse erhalten bleiben, auch wenn Logs gelöscht werden.
  • Aktivieren Sie Data-Access-Audit-Logs (IAM und Verwaltung → Audit-Logs) mindestens für Cloud Storage, IAM und Secret Manager: Ohne sie ist Datendiebstahl unsichtbar.
  • Leiten Sie die Audit-Logs der ganzen Organisation in einen gesperrten Bucket in einem separaten Projekt, das Projektinhaber nicht ändern können.
  • Aktivieren Sie VPC Flow Logs in sensiblen Subnetzen.

§ 04

Grenzen

  • Keine Erkennung ist kein Beweis: Das Urteil deckt nur die abgelegten Logs ab, und Data-Access-Logs sind bei den meisten Diensten standardmäßig aus.
  • Heuristiken weisen hin, sie beweisen nicht: Ein Schlüssel, der von der IP eines CI-Anbieters genutzt wird, oder eine Owner-Rolle für einen Berater können legitim sein. Bestätigen Sie jeden Befund mit dem Verantwortlichen.
  • Audit-Einträge von GKE / Kubernetes-API gehen an Kubernetes Forensics, Google-Workspace-Einträge an Google Workspace Forensics.
  • Bis zu 100.000 Routineereignisse werden in der Tabelle gelistet (markierte immer); Erkennungen und Entitäten decken alle Einträge ab. Bei sehr großen Exporten begrenzt der Browserspeicher das Ergebnis, nicht die Eingabe, die gestreamt wird.
  • BigQuery-Exporte in Avro / Parquet und CSV-Downloads aus dem Log-Explorer werden nicht gelesen: als JSON exportieren.

§ 05

Wie geht es weiter?

Lautet das Urteil Verdächtig oder Kompromittiert: erst eindämmen, dann untersuchen. Arbeiten Sie die Maßnahmenliste des Tools ab (schwerste Punkte zuerst), sichern Sie die Logs und folgen Sie den Empfehlungen von Google unten.

Die Liste wird aus Ihren Befunden erzeugt, im Reiter Maßnahmen der Ergebnisse.

§ 06

Erkennungsregeln

Erkennungen sind Daten, kein Code: Jede Regel steht in rules/gcp.rules.json (Sigma-artige Bedingungen auf LogEntry-Feldern), damit sie geprüft, angepasst und wiederverwendet werden kann. Zustandsbehaftete Analysen und die Angriffsketten-Korrelation halten ihre Schwellwerte in derselben Datei.

RegelSchweregradTaktikMITRE ATT&CK
Dienstkontoschlüssel erstellt sa_key_createdMittelPersistenzT1098.001
Öffentlicher Schlüssel in ein Dienstkonto hochgeladen sa_key_uploadedHochPersistenzT1098.001
Dienstkontoschlüssel von öffentlicher IP genutzt sa_key_used_externalMittelErstzugriffT1078.004
Dienstkonto erstellt sa_createdNiedrigPersistenzT1136.003
Identitätswechsel zu einem Dienstkonto sa_impersonationMittelRechteausweitungT1550.001
Rolle für Identitätswechsel vergeben token_creator_grantedHochRechteausweitungT1098.003
Owner-, Editor- oder IAM-Admin-Rolle vergeben owner_editor_grantedHochRechteausweitungT1098.003
Zugriff für privates Gmail-Konto consumer_account_grantedHochPersistenzT1098.003
Owner für privates Gmail-Konto owner_to_consumerKritischRechteausweitungT1098.003
Ressource öffentlich gemacht (allUsers) public_access_grantedKritischExfiltrationT1530T1537
Organisationsrichtlinie geändert org_policy_changedMittelUmgehung von AbwehrmaßnahmenT1484
Benutzerdefinierte Rolle erstellt oder geändert custom_role_changedNiedrigRechteausweitungT1098.003
Cloud-Storage-HMAC-Schlüssel erstellt hmac_key_createdMittelPersistenzT1098.001
Startskript hinzugefügt oder geändert startup_script_changedHochPersistenzT1037T1651
SSH-Schlüssel zu Metadaten hinzugefügt ssh_key_addedMittelPersistenzT1098.004
OS Login deaktiviert oder SSH-Schlüssel-Sperre geändert oslogin_changedHochUmgehung von AbwehrmaßnahmenT1098.004T1556
GPU-Instanz erstellt gpu_instance_createdMittelAuswirkungT1496
Welle von VM-Erstellungen instance_burstHochAuswirkungT1496
Firewall zum Internet geöffnet firewall_openedMittelUmgehung von AbwehrmaßnahmenT1562.007
Massen-Downloads aus Cloud Storage bulk_object_readsHochExfiltrationT1530
BigQuery-Daten in anderes Projekt kopiert bq_foreign_exportHochExfiltrationT1537
Image, Snapshot oder Festplatte freigegeben image_sharedMittelExfiltrationT1537
Log-Sink gelöscht sink_deletedHochUmgehung von AbwehrmaßnahmenT1562.008
Log-Sink geändert sink_modifiedMittelUmgehung von AbwehrmaßnahmenT1562.008
Log-Ausschluss erstellt oder geändert log_exclusion_createdMittelUmgehung von AbwehrmaßnahmenT1562.008
Log-Bucket gelöscht oder geändert log_bucket_changedMittelUmgehung von AbwehrmaßnahmenT1562.008
Logs gelöscht log_deletedHochUmgehung von AbwehrmaßnahmenT1070
Data-Access-Audit-Logging deaktiviert audit_logging_disabledHochUmgehung von AbwehrmaßnahmenT1562.008
Security-Command-Center-Alarmierung entfernt scc_notification_removedHochUmgehung von AbwehrmaßnahmenT1562
KMS-Schlüsselversion vernichtet kms_key_destroyedHochAuswirkungT1485T1486
Projekt gelöscht project_deletedHochAuswirkungT1485
Welle verweigerter Aufrufe permission_denied_burstMittelErkundungT1580T1526
Dienstkontoschlüssel von neuer IP genutzt sa_key_new_ipHochErstzugriffT1078.004
Zugriff für unbekannte Domain new_external_domainMittelPersistenzT1098.003
VM in nie genutzter Region erstellt new_zone_instanceMittelUmgehung von AbwehrmaßnahmenT1535
Große Übertragung an eine Internet-IP flow_large_egressMittelExfiltrationT1048
Verdächtige IP spricht mit Ihren VMs flow_ioc_matchHochCommand and ControlT1071
Angriffskette: gestohlener Zugang, dann Übernahme attack_chainKritischAuswirkung

§ 07

FAQ

Werden meine Logs irgendwohin hochgeladen?

Nein. Ihr Browser liest die Dateien, ein WebAssembly-Modul analysiert sie in einem Web Worker. Es gibt keine serverseitige Verarbeitung: Sie können nach dem Laden der Seite die Netzwerkverbindung trennen.

Woran erkenne ich, dass ein Dienstkontoschlüssel geleakt ist?

Achten Sie auf Nutzung des Schlüssels von IP-Adressen außerhalb von Google Cloud, besonders von nie zuvor genutzten Adressen, gefolgt von IAM-Änderungen oder Erkundung (Wellen verweigerter Aufrufe). Das Tool markiert alle drei und verknüpft sie zu einer Angriffskette. Zuerst den Schlüssel deaktivieren, dann untersuchen.

Welche Google-Cloud-Logs brauche ich?

Admin-Activity-Audit-Logs sind immer aktiv und kostenlos; sie zeigen Änderungen an IAM, Compute, Logging und Konfiguration. Data-Access-Logs zeigen Datenlesezugriffe (Buckets, Secrets), müssen aber aktiviert werden. VPC Flow Logs zeigen den Netzwerkverkehr der VMs. Exportieren Sie alle drei für den verdächtigen Zeitraum.

Kann es einen ganzen Log-Sink-Bucket lesen?

Ja. Kopieren Sie den Bucket mit gsutil oder gcloud storage und legen Sie den Ordner (oder ein ZIP davon) ab. Dateien werden gestreamt und gzip im Browser entpackt, Exporte mit mehreren Gigabyte sind also kein Problem.

Und GKE- und Google-Workspace-Logs?

Audit-Einträge der Kubernetes-API (serviceName k8s.io) werden gezählt und an Kubernetes Forensics übergeben, Google-Workspace-Einträge an Google Workspace Forensics. Beides sind Schwester-Tools, die genauso gebaut sind.

Ist das ein offizielles Google-Tool?

Nein. GCP Forensics ist ein unabhängiges Tool, nicht mit Google verbunden und weder von Google unterstützt noch gesponsert. Google Cloud ist eine Marke von Google LLC.

Dieses Tool ist weder mit Google LLC verbunden noch von Google LLC unterstützt oder gesponsert. Google Cloud und Google Cloud Platform sind Marken von Google LLC. Andere Namen sind Marken ihrer jeweiligen Inhaber.