Halcyon Anti-Ransomware-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Halcyon Anti-Ransomware-Logs mit Google Cloud Storage V2 in Google Security Operations aufnehmen.
Halcyon ist eine Anti-Ransomware-Plattform, die KI nutzt, um Ransomware-Angriffe zu erkennen, zu verhindern und sich davon zu erholen. Es werden Benachrichtigungen für Ransomware-Erkennungsereignisse, Verschlüsselungsversuche und Wiederherstellungsaktionen generiert. Der Parser ordnet JSON-formatierte Logfelder dem einheitlichen Datenmodell (Unified Data Model, UDM) zu und verarbeitet Ereignistypen wie Dateivorgänge, Nutzeraktivitäten und Sicherheitsergebnisse.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Ein GCP-Projekt mit aktivierter Cloud Storage API
- Berechtigungen zum Erstellen und Verwalten von GCS-Buckets und IAM-Richtlinien
- Privilegierter Zugriff auf die Halcyon-Konsole mit Logexportfunktionen
Google Cloud Storage-Bucket erstellen
- Gehen Sie zur Google Cloud Console.
- Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
- Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
- Klicken Sie auf Bucket erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. halcyon-logs.Standorttyp Wählen Sie die Option aus, die am besten zu Ihren Anforderungen passt (Region, Dual-Region, Multi-Region). Standort Wählen Sie den Standort aus, z. B. us-central1.Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird) Zugriffskontrolle Einheitlich (empfohlen) Schutzmaßnahmen Optional: Objektversionsverwaltung oder Aufbewahrungsrichtlinie aktivieren Klicken Sie auf Erstellen.
Halcyon-Logs nach Google Cloud Storage exportieren
Halcyon unterstützt den Export von Protokolldaten im JSON-Format. Verwenden Sie eine der folgenden Methoden, um Logs an GCS zu senden.
Option A: Logs mit der Halcyon API exportieren und in GCS hochladen
- Melden Sie sich in der Halcyon-Verwaltungskonsole an.
- Rufen Sie Einstellungen > API-Zugriff auf und generieren Sie einen API-Schlüssel mit Leseberechtigungen.
- Kopieren und speichern Sie den API-Schlüssel.
- Rufen Sie die Halcyon REST API mit einem geplanten Skript oder einer Cloud Run-Funktion auf, rufen Sie Ereignisprotokolle ab und schreiben Sie sie im JSON-Format in GCS.
Option B: SIEM-Integration konfigurieren und an GCS weiterleiten
- Melden Sie sich in der Halcyon-Verwaltungskonsole an.
- Rufen Sie die Einstellungen > Integrationen > SIEM auf.
- Konfigurieren Sie das Ziel für den Log-Export so, dass Ereignisse im JSON-Format in ein lokales Verzeichnis oder einen Zwischenspeicher geschrieben werden.
Verwenden Sie eine Cloud Run-Funktion, um Logs regelmäßig in Ihren GCS-Bucket hochzuladen.
- Achten Sie darauf, dass die exportierten Dateien im JSON-Format vorliegen.
- Jede Datei sollte einen oder mehrere Ereignisdatensätze enthalten.
Google SecOps-Dienstkonto abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Halcyon Anti Ransomware als Logtyp aus.
Klicken Sie auf Dienstkonto abrufen. Es wird eine eindeutige E-Mail-Adresse für das Dienstkonto angezeigt, z. B.:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comKopieren Sie diese E-Mail-Adresse. Sie verwenden es in der nächsten Aufgabe.
Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets.
- Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Fügen Sie die E‑Mail-Adresse des Google SecOps-Dienstkontos ein.
- Rollen zuweisen: Wählen Sie Storage-Objekt-Betrachter aus.
Klicken Sie auf Speichern.
- Wenn Sie die Löschoption (übertragene Dateien löschen) verwenden möchten, weisen Sie die Rolle Storage-Objekt-Administrator anstelle von „Storage-Objekt-Betrachter“ zu.
Feed in Google SecOps konfigurieren, um Halcyon Anti-Ransomware-Protokolle aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Halcyon Anti-Ransomware logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Halcyon Anti Ransomware als Logtyp aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Feld Wert Storage-Bucket-URI gs://halcyon-logs/halcyon/events/Option zum Löschen der Quelle Wählen Sie die gewünschte Löschoption aus. Maximales Dateialter (Tage) Standardwert ist 180 Tage Asset-Namespace Der Asset-Namespace Labels für Datenaufnahme Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll - Ersetzen Sie
halcyon-logsdurch den Namen Ihres tatsächlichen GCS-Buckets. - Fügen Sie immer einen Schrägstrich (
/) am Ende des URI ein.
- Ersetzen Sie
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| sshd, tty, euid, dataType, filterName, totalOccurrences, occurredAt, count, occurrences.IncorrectPasswords, occurrences.FailedPassword, occurrences.AuthFailure, policyMode, action | additional.fields | Mit Labels zusammengeführt, die aus den einzelnen Feldern erstellt wurden, sofern vorhanden; die Felder „totalOccurrences“, „count“ und „occurrences“ wurden in Strings konvertiert. |
| dnsArtifact.uri | network.dns.questions | Mit dem Fragen-Array zusammengeführt, das den Namen enthält |
| asset.id | principal.asset.asset_id | Verkettet als „ASSET:“ + asset.id |
| asset.kind | principal.asset.attribute.labels | Zusammengeführt mit „asset_kind_label“, das aus „asset.kind“ erstellt wurde |
| asset.name | principal.asset.hostname | Wert direkt kopiert |
| ipArtifact.ipAddress | principal.asset.ip | Wert direkt kopiert |
| summary.applicationName | principal.application | Wert direkt kopiert |
| phost, asset.name | principal.hostname | Wert aus „phost“, falls vorhanden, wird durch „asset.name“ überschrieben, falls vorhanden |
| ipArtifact.ipAddress | principal.ip | Wert direkt kopiert |
| process.commandLine | principal.process.command_line | Wert direkt kopiert |
| modifiedFilePath, artifact.filePath, process.artifact.filePath, processes.artifact.filePath | principal.process.file.full_path | Der Wert wird auf „modifiedFilePath“ gesetzt, falls vorhanden. Er wird durch „artifact.filePath“ überschrieben, falls vorhanden, durch „process.artifact.filePath“, falls vorhanden, und durch „processes.artifact.filePath“, falls vorhanden (Anführungszeichen für „processes.artifact.filePath“ entfernt). |
| lastOccurredAt | principal.process.file.last_seen_time | Konvertiert mit Datumsfilter im ISO8601-Format |
| process.artifact.kind, artifact.kind, primaryProcess.artifact.kind | principal.process.file.mime_type | Wert aus „process.artifact.kind“, falls vorhanden, überschrieben durch „artifact.kind“, falls vorhanden, überschrieben durch „primaryProcess.artifact.kind“, falls vorhanden |
| artifact.sha256, process.artifact.sha256, processes.artifact.sha256 | principal.process.file.sha256 | Wert aus „artifact.sha256“, falls vorhanden. Wird durch „process.artifact.sha256“ überschrieben, falls vorhanden. Wird durch „processes.artifact.sha256“ überschrieben, falls vorhanden. |
| process.parentPid | principal.process.parent_pid | Wert direkt kopiert |
| process.pid | principal.process.pid | Wert direkt kopiert |
| user_displayname | principal.user.user_display_name | Wert direkt kopiert |
| Nutzer | principal.user.userid | Wert direkt kopiert |
| summary.artifact.filePath | target.file.full_path | Wert direkt kopiert |
| summary.artifact.sha256 | target.file.sha256 | Wert direkt kopiert |
| primaryProcess.commandLine | target.process.command_line | Wert direkt nach dem Entfernen der Anführungszeichen kopiert |
| primaryProcess.kind | target.process.file.mime_type | Wert direkt kopiert |
| primaryProcess.parentPid | target.process.parent_process.pid | Wert direkt kopiert |
| primaryProcess.pid | target.process.pid | Wert direkt kopiert |
| uid | target.user.userid | Wert direkt kopiert |
| id | target.asset_id | Verkettet als „ASSET:“ + ID |
| Aktion | security_result.action | In Großbuchstaben, wenn die Aktion „Blockieren“ oder „Zulassen“ ist |
| reason.exitCode | security_result.action_details | Wert direkt kopiert |
| dxpRule, monitoringReason, tenantId | security_result.detection_fields | Wird mit Labels zusammengeführt, die aus den einzelnen Feldern erstellt wurden, sofern vorhanden; Backslashes werden für dxpRule entfernt. |
| dxpRuleType | security_result.rule_type | Wert direkt kopiert |
| ipArtifact.version | security_result.rule_version | Wert direkt kopiert |
| msg, reason.cause | security_result.summary | Wert aus „msg“, falls vorhanden, wird durch „reason.cause“ überschrieben, falls vorhanden. |
| timestamp | metadata.event_timestamp | Konvertiert mit Datumsfilter mit den Formaten MMM dd HH:mm:ss oder MMM d HH:mm:ss |
| phost, ipArtifact.ipAddress, asset.name, user, uid, summary.artifact.sha256, summary.artifact.filePath | metadata.event_type | Auf FILE_UNCATEGORIZED setzen, wenn has_principal und has_target_file; USER_UNCATEGORIZED, wenn has_principal und has_target; STATUS_UPDATE, wenn has_principal; andernfalls GENERIC_EVENT (Flags werden aus Quellen abgeleitet) |
| Typ | metadata.product_event_type | Wert direkt kopiert |
| gupid, guid | metadata.product_log_id | Wert aus „gupid“, falls vorhanden. Wird durch „guid“ überschrieben, falls vorhanden. |
| metadata.product_name | Auf „Halcyon Anti Ransomware“ festgelegt | |
| metadata.vendor_name | Auf „Halcyon“ festgelegt | |
primaryProcess.kind |
event.idm.read_only_udm.target.process.file.mime_type |
Aus dem Änderungsprotokoll zugeordnet |
primaryProcess.artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
Aus dem Änderungsprotokoll zugeordnet |
processes.artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
Aus dem Änderungsprotokoll zugeordnet |
processes.artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
Aus dem Änderungsprotokoll zugeordnet |
action |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
filterName |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
policyMode |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
euid |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
occurrences.AuthFailure |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
occurrences.FailedPassword |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
occurredAt |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
occurrences.IncorrectPasswords |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
guid |
event.idm.read_only_udm.metadata.product_log_id |
Aus dem Änderungsprotokoll zugeordnet |
gupid |
event.idm.read_only_udm.metadata.product_log_id |
Aus dem Änderungsprotokoll zugeordnet |
count |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
Aus dem Änderungsprotokoll zugeordnet |
artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
Aus dem Änderungsprotokoll zugeordnet |
artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
Aus dem Änderungsprotokoll zugeordnet |
monitoringReason |
event.idm.read_only_udm.security_result.detection_fields |
Aus dem Änderungsprotokoll zugeordnet |
dxpRule |
event.idm.read_only_udm.security_result.detection_fields |
Aus dem Änderungsprotokoll zugeordnet |
modifiedFilePath |
event.idm.read_only_udm.principal.process.file.full_path |
Aus dem Änderungsprotokoll zugeordnet |
ipArtifact.version |
event.idm.read_only_udm.security_result.rule_version |
Aus dem Änderungsprotokoll zugeordnet |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.ip |
Aus dem Änderungsprotokoll zugeordnet |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.asset.ip |
Aus dem Änderungsprotokoll zugeordnet |
process.parentPid |
event.idm.read_only_udm.principal.process.parent_pid |
Aus dem Änderungsprotokoll zugeordnet |
dxpRuleType |
event.idm.read_only_udm.security_result.rule_type |
Aus dem Änderungsprotokoll zugeordnet |
summary.applicationName |
event.idm.read_only_udm.principal.application |
Aus dem Änderungsprotokoll zugeordnet |
process.pid |
event.idm.read_only_udm.principal.process.pid |
Aus dem Änderungsprotokoll zugeordnet |
reason.exitCode |
event.idm.read_only_udm.security_result.action_details |
Aus dem Änderungsprotokoll zugeordnet |
reason.cause |
event.idm.read_only_udm.security_result.summary |
Aus dem Änderungsprotokoll zugeordnet |
dnsArtifact_uri |
event.idm.read_only_udm.network.dns.questions |
Aus dem Änderungsprotokoll zugeordnet |
uid |
event.idm.read_only_udm.target.user.userid |
Aus dem Änderungsprotokoll zugeordnet |
tty |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
sshd |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
phost |
event.idm.read_only_udm.principal.hostname |
Aus dem Änderungsprotokoll zugeordnet |
user_displayname |
event.idm.read_only_udm.principal.user.user_display_name |
Aus dem Änderungsprotokoll zugeordnet |
msg |
event.idm.read_only_udm.security_result.summary |
Aus dem Änderungsprotokoll zugeordnet |
timestamp |
event.idm.read_only_udm.metadata.event_timestamp |
Aus dem Änderungsprotokoll zugeordnet |
user |
event.idm.read_only_udm.principal.user.userid |
Aus dem Änderungsprotokoll zugeordnet |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten