DomainTools Iris Investigate-Ergebnisse erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie DomainTools Iris Investigate-Ergebnisse mit Google Cloud Storage in Google Security Operations aufnehmen. Der Parser wandelt Roh-JSON-Daten aus der Iris API von DomainTools in ein strukturiertes Format um, das dem einheitlichen Datenmodell (Unified Data Model, UDM) von Google SecOps entspricht. Es werden Informationen zu Domaindetails, Kontaktinformationen, Sicherheitsrisiken, SSL-Zertifikaten und anderen relevanten Attributen extrahiert und den entsprechenden UDM-Feldern zugeordnet, um eine konsistente Analyse und Threat Intelligence zu ermöglichen.

Hinweis

Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Privilegierter Zugriff auf das DomainTools-Unternehmenskonto (API-Zugriff auf Iris Investigate)
  • Ein GCP-Projekt mit aktivierter Cloud Storage API
  • Berechtigungen zum Erstellen und Verwalten von GCS-Buckets
  • Berechtigungen zum Verwalten von IAM-Richtlinien für GCS-Buckets
  • Berechtigungen zum Erstellen von Cloud Run-Diensten, Pub/Sub-Themen und Cloud Scheduler-Jobs

DomainTools-API-Schlüssel und ‑Endpunkt abrufen

  1. Melden Sie sich im DomainTools API Dashboard an. Nur das Konto des API-Inhabers kann den API-Schlüssel zurücksetzen.
  2. Wählen Sie im Bereich Mein Konto auf dem Tab Kontoübersicht den Link API-Dashboard aufrufen aus.
  3. Rufen Sie den Abschnitt API-Nutzername auf, um Ihren Nutzernamen zu erhalten.
  4. Suchen Sie auf demselben Tab nach Ihrem API-Schlüssel.
  5. Kopieren Sie den Schlüssel und speichern Sie ihn an einem sicheren Ort. Wenn Sie einen neuen Schlüssel benötigen, wählen Sie API-Schlüssel zurücksetzen aus.

  6. Beachten Sie den Iris Investigate-Endpunkt: https://api.domaintools.com/v1/iris-investigate/.

Google Cloud Storage-Bucket erstellen

  1. Rufen Sie die Google Cloud Console auf.
  2. Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
  3. Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
  4. Klicken Sie auf Bucket erstellen.
  5. Geben Sie die folgenden Konfigurationsdetails an:

    Einstellung Wert
    Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. domaintools-iris.
    Standorttyp Wählen Sie je nach Bedarf aus (Region, Dual-Region, Multi-Region).
    Standort Wählen Sie den Speicherort aus, z. B. us-central1.
    Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird)
    Zugriffssteuerung Einheitlich (empfohlen)
    Schutzmaßnahmen Optional: Objektversionsverwaltung oder Aufbewahrungsrichtlinie aktivieren
  6. Klicken Sie auf Erstellen.

Dienstkonto für Cloud Run-Funktion erstellen

Die Cloud Run-Funktion benötigt ein Dienstkonto mit Berechtigungen zum Schreiben in den GCS-Bucket und zum Aufrufen durch Pub/Sub.

Dienstkonto erstellen

  1. Wechseln Sie in der GCP Console zu IAM & Verwaltung > Dienstkonten.
  2. Klicken Sie auf Dienstkonto erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Name des Dienstkontos: Geben Sie domaintools-iris-collector-sa ein.
    • Beschreibung des Dienstkontos: Geben Sie Service account for Cloud Run function to collect DomainTools Iris Investigate logs ein.
  4. Klicken Sie auf Erstellen und fortfahren.
  5. Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgenden Rollen hinzu:
    1. Klicken Sie auf Rolle auswählen.
    2. Suchen Sie nach Storage-Objekt-Administrator und wählen Sie die Rolle aus.
    3. Klicken Sie auf + Weitere Rolle hinzufügen.
    4. Suchen Sie nach Cloud Run Invoker und wählen Sie die Rolle aus.
    5. Klicken Sie auf + Weitere Rolle hinzufügen.
    6. Suchen Sie nach Cloud Functions Invoker und wählen Sie die Rolle aus.
  6. Klicken Sie auf Weiter.
  7. Klicken Sie auf Fertig.

Diese Rollen sind erforderlich für:

  • Storage-Objekt-Administrator: Protokolle in GCS-Bucket schreiben und Statusdateien verwalten
  • Cloud Run-Aufrufer: Pub/Sub darf die Funktion aufrufen.
  • Cloud Functions-Invoker: Funktionsaufruf zulassen

IAM-Berechtigungen für GCS-Bucket erteilen

Gewähren Sie dem Dienstkonto Schreibberechtigungen für den GCS-Bucket:

  1. Rufen Sie Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets.
  3. Wechseln Sie zum Tab Berechtigungen.
  4. Klicken Sie auf Zugriff erlauben.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • Hauptkonten hinzufügen: Geben Sie die E-Mail-Adresse des Dienstkontos ein (z. B. domaintools-iris-collector-sa@PROJECT_ID.iam.gserviceaccount.com).
    • Rollen zuweisen: Wählen Sie Storage-Objekt-Administrator aus.
  6. Klicken Sie auf Speichern.

Pub/Sub-Thema erstellen

Erstellen Sie ein Pub/Sub-Thema, in dem Cloud Scheduler veröffentlicht und das von der Cloud Run-Funktion abonniert wird.

  1. Rufen Sie in der GCP Console Pub/Sub > Themen auf.
  2. Klicken Sie auf Thema erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Themen-ID: Geben Sie domaintools-iris-trigger ein.
    • Übernehmen Sie die anderen Einstellungen.
  4. Klicken Sie auf Erstellen.

Cloud Run-Funktion zum Erfassen von Logs erstellen

Die Cloud Run-Funktion wird durch Pub/Sub-Nachrichten von Cloud Scheduler ausgelöst, um Logs von der DomainTools Iris Investigate API abzurufen und in GCS zu schreiben.

  1. Rufen Sie in der GCP Console Cloud Run auf.
  2. Klicken Sie auf Dienst erstellen.
  3. Wählen Sie Funktion aus, um eine Funktion mit einem Inline-Editor zu erstellen.
  4. Geben Sie im Abschnitt Konfigurieren die folgenden Konfigurationsdetails an:

    Einstellung Wert
    Dienstname domaintools-iris-collector
    Region Wählen Sie die Region aus, die Ihrem GCS-Bucket entspricht (z. B. us-central1).
    Laufzeit Wählen Sie Python 3.12 oder höher aus.
  5. Im Abschnitt Trigger (optional):

    1. Klicken Sie auf + Trigger hinzufügen.
    2. Wählen Sie Cloud Pub/Sub aus.
    3. Wählen Sie unter Cloud Pub/Sub-Thema auswählen das Pub/Sub-Thema (domaintools-iris-trigger) aus.
    4. Klicken Sie auf Speichern.
  6. Im Abschnitt Authentifizierung:

    1. Wählen Sie Authentifizierung erforderlich aus.
    2. Identitäts- und Zugriffsverwaltung
  7. Scrollen Sie nach unten und maximieren Sie Container, Netzwerk, Sicherheit.

  8. Rufen Sie den Tab Sicherheit auf:

    • Dienstkonto: Wählen Sie das Dienstkonto aus (domaintools-iris-collector-sa).
  9. Rufen Sie den Tab Container auf:

    1. Klicken Sie auf Variablen und Secrets.
    2. Klicken Sie für jede Umgebungsvariable auf + Variable hinzufügen:
    Variablenname Beispielwert Beschreibung
    GCS_BUCKET domaintools-iris Name des GCS-Buckets, in dem die Daten gespeichert werden.
    GCS_PREFIX domaintools/iris/ Optionales GCS-Präfix (Unterordner) für Objekte.
    STATE_KEY domaintools/iris/state.json Optionaler Schlüssel für die Datei mit dem Status/Checkpoint.
    DT_API_KEY DT-XXXXXXXXXXXXXXXXXXXX DomainTools-API-Schlüssel.
    USE_MODE HASH Wählen Sie den gewünschten Modus aus: HASH, DOMAINS oder QUERY (jeweils nur einer ist aktiv).
    SEARCH_HASHES hash1;hash2;hash3 Erforderlich, wenn USE_MODE=HASH. Eine durch Semikolons getrennte Liste von Hashes gespeicherter Suchanfragen aus der Iris-Benutzeroberfläche.
    DOMAINS example.com;domaintools.com Erforderlich, wenn USE_MODE=DOMAINS. Eine durch Semikolons getrennte Liste von Domains.
    QUERY_LIST ip=1.1.1.1;ip=8.8.8.8;domain=example.org Erforderlich, wenn USE_MODE=QUERY. Eine durch Semikolons getrennte Liste von Abfragestrings (k=v&k2=v2).
    PAGE_SIZE 500 Zeilen pro Seite (Standardwert: 500).
    MAX_PAGES 20 Maximale Anzahl von Seiten pro Anfrage.
  10. Scrollen Sie im Bereich Variablen und Secrets nach unten zu Anfragen:

    • Zeitüberschreitung bei Anfrage: Geben Sie 900 Sekunden (15 Minuten) ein.
  11. Rufen Sie den Tab Einstellungen auf:

    • Im Abschnitt Ressourcen:
      • Arbeitsspeicher: Wählen Sie 512 MiB oder höher aus.
      • CPU: Wählen Sie 1 aus.
  12. Im Abschnitt Versionsskalierung:

    • Mindestanzahl von Instanzen: Geben Sie 0 ein.
    • Maximale Anzahl von Instanzen: Geben Sie 100 ein (oder passen Sie den Wert an die erwartete Last an).
  13. Klicken Sie auf Erstellen.

  14. Warten Sie ein bis zwei Minuten, bis der Dienst erstellt wurde.

  15. Nachdem der Dienst erstellt wurde, wird automatisch der Inline-Code-Editor geöffnet.

Funktionscode hinzufügen

  1. Geben Sie main unter Funktionseinstiegspunkt ein.
  2. Erstellen Sie im Inline-Codeeditor zwei Dateien:

    • Erste Datei: main.py::
    import functions_framework
    from google.cloud import storage
    import json
    import os
    import urllib.parse
    from urllib.request import Request, urlopen
    from urllib.error import HTTPError
    import time
    from datetime import datetime, timezone
    
    # Initialize Storage client
    storage_client = storage.Client()
    
    # Environment variables
    GCS_BUCKET = os.environ.get("GCS_BUCKET", "").strip()
    GCS_PREFIX = os.environ.get("GCS_PREFIX", "domaintools/iris/").strip()
    STATE_KEY = os.environ.get("STATE_KEY", "domaintools/iris/state.json").strip()
    DT_API_KEY = os.environ.get("DT_API_KEY", "").strip()
    USE_MODE = os.environ.get("USE_MODE", "HASH").strip().upper()
    SEARCH_HASHES = [h.strip() for h in os.environ.get("SEARCH_HASHES", "").split(";") if h.strip()]
    DOMAINS = [d.strip() for d in os.environ.get("DOMAINS", "").split(";") if d.strip()]
    QUERY_LIST = [q.strip() for q in os.environ.get("QUERY_LIST", "").split(";") if q.strip()]
    PAGE_SIZE = int(os.environ.get("PAGE_SIZE", "500"))
    MAX_PAGES = int(os.environ.get("MAX_PAGES", "20"))
    USE_NEXT = os.environ.get("USE_NEXT", "true").lower() == "true"
    HTTP_TIMEOUT = int(os.environ.get("HTTP_TIMEOUT", "60"))
    RETRIES = int(os.environ.get("HTTP_RETRIES", "2"))
    
    BASE_URL = "https://api.domaintools.com/v1/iris-investigate/"
    HDRS = {
        "X-Api-Key": DT_API_KEY,
        "Accept": "application/json",
    }
    
    def _http_post(url: str, body: dict) -> dict:
        """Make HTTP POST request with form-encoded body."""
        req = Request(url, method="POST")
        for k, v in HDRS.items():
            req.add_header(k, v)
        req.add_header("Content-Type", "application/x-www-form-urlencoded")
    
        encoded_body = urllib.parse.urlencode(body, doseq=True).encode('utf-8')
    
        attempt = 0
        while True:
            try:
                with urlopen(req, data=encoded_body, timeout=HTTP_TIMEOUT) as r:
                    return json.loads(r.read().decode("utf-8"))
            except HTTPError as e:
                if e.code in (429, 500, 502, 503, 504) and attempt < RETRIES:
                    delay = int(e.headers.get("Retry-After", "2"))
                    time.sleep(max(1, delay))
                    attempt += 1
                    continue
                raise
    
    def _write_page(bucket, obj: dict, label: str, page: int) -> str:
        ts = time.strftime("%Y/%m/%d/%H%M%S", time.gmtime())
        key = f"{GCS_PREFIX.rstrip('/')}/{ts}-{label}-p{page:05d}.json"
        blob = bucket.blob(key)
        blob.upload_from_string(
            json.dumps(obj, separators=(",", ":")),
            content_type="application/json"
        )
        return key
    
    def _first_page_params() -> dict:
        params = {"page_size": str(PAGE_SIZE)}
        if USE_NEXT:
            params["next"] = "true"
        return params
    
    def _paginate(bucket, label: str, params: dict) -> tuple:
        pages = 0
        total = 0
    
        while pages < MAX_PAGES:
            data = _http_post(BASE_URL, params)
            _write_page(bucket, data, label, pages)
            resp = data.get("response") or {}
            results = resp.get("results") or []
            total += len(results)
            pages += 1
    
            next_url = resp.get("next") if isinstance(resp, dict) else None
            if next_url:
                parsed = urllib.parse.urlparse(next_url)
                params = dict(urllib.parse.parse_qsl(parsed.query))
                continue
    
            if resp.get("has_more_results") and resp.get("position"):
                base = _first_page_params()
                base.pop("next", None)
                base["position"] = resp["position"]
                params = base
                continue
            break
        return pages, total
    
    def run_hashes(bucket, hashes: list) -> dict:
        agg_pages = agg_results = 0
        for h in hashes:
            params = _first_page_params()
            params["search_hash"] = h
            p, r = _paginate(bucket, f"hash-{h}", params)
            agg_pages += p
            agg_results += r
        return {"pages": agg_pages, "results": agg_results}
    
    def run_domains(bucket, domains: list) -> dict:
        agg_pages = agg_results = 0
        for d in domains:
            params = _first_page_params()
            params["domain"] = d
            p, r = _paginate(bucket, f"domain-{d}", params)
            agg_pages += p
            agg_results += r
        return {"pages": agg_pages, "results": agg_results}
    
    def run_queries(bucket, queries: list) -> dict:
        agg_pages = agg_results = 0
        for q in queries:
            base = _first_page_params()
            for k, v in urllib.parse.parse_qsl(q, keep_blank_values=True):
                base.setdefault(k, v)
            p, r = _paginate(bucket, f"query-{q.replace('=', '-')}", base)
            agg_pages += p
            agg_results += r
        return {"pages": agg_pages, "results": agg_results}
    
    @functions_framework.cloud_event
    def main(cloud_event):
        """
        Cloud Run function triggered by Pub/Sub to fetch DomainTools Iris Investigate results and write to GCS.
    
        Args:
            cloud_event: CloudEvent object containing Pub/Sub message
        """
    
        if not GCS_BUCKET:
            print("Error: GCS_BUCKET environment variable not set")
            return
    
        try:
            bucket = storage_client.bucket(GCS_BUCKET)
    
            if USE_MODE == "HASH" and SEARCH_HASHES:
                res = run_hashes(bucket, SEARCH_HASHES)
            elif USE_MODE == "DOMAINS" and DOMAINS:
                res = run_domains(bucket, DOMAINS)
            elif USE_MODE == "QUERY" and QUERY_LIST:
                res = run_queries(bucket, QUERY_LIST)
            else:
                raise ValueError(
                    "Invalid USE_MODE or missing parameters. Set USE_MODE to HASH | DOMAINS | QUERY "
                    "and provide SEARCH_HASHES | DOMAINS | QUERY_LIST accordingly."
                )
    
            print(f"Successfully processed: {json.dumps({'ok': True, 'mode': USE_MODE, **res})}")
    
        except Exception as e:
            print(f"Error processing DomainTools Iris data: {str(e)}")
            raise
    
    • Zweite Datei: requirements.txt::
    functions-framework==3.*
    google-cloud-storage==2.*
    
  3. Klicken Sie auf Bereitstellen, um die Funktion zu speichern und bereitzustellen.

  4. Warten Sie, bis die Bereitstellung abgeschlossen ist (2–3 Minuten).

Cloud Scheduler-Job erstellen

Cloud Scheduler veröffentlicht in regelmäßigen Abständen Nachrichten im Pub/Sub-Thema, wodurch die Cloud Run-Funktion ausgelöst wird.

  1. Rufen Sie in der GCP Console Cloud Scheduler auf.
  2. Klicken Sie auf Job erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:

    Einstellung Wert
    Name domaintools-iris-1h
    Region Dieselbe Region wie für die Cloud Run-Funktion auswählen
    Frequenz 0 * * * * (jede Stunde, zur vollen Stunde)
    Zeitzone Zeitzone auswählen (UTC empfohlen)
    Zieltyp Pub/Sub
    Thema Wählen Sie das Pub/Sub-Thema aus (domaintools-iris-trigger).
    Nachrichtentext {} (leeres JSON-Objekt)
  4. Klicken Sie auf Erstellen.

Optionen für die Häufigkeit des Zeitplans

  • Wählen Sie die Häufigkeit basierend auf dem Logvolumen und den Latenzanforderungen aus:

    Häufigkeit Cron-Ausdruck Anwendungsfall
    Alle 5 Minuten */5 * * * * Hohes Volumen, niedrige Latenz
    Alle 15 Minuten */15 * * * * Mittleres Suchvolumen
    Stündlich 0 * * * * Standard (empfohlen)
    Alle 6 Stunden 0 */6 * * * Geringes Volumen, Batchverarbeitung
    Täglich 0 0 * * * Erhebung von Verlaufsdaten

Integration testen

  1. Suchen Sie in der Cloud Scheduler-Konsole nach Ihrem Job.
  2. Klicken Sie auf Force run (Ausführung erzwingen), um den Job manuell auszulösen.
  3. Warten Sie einige Sekunden.
  4. Rufen Sie Cloud Run > Dienste auf.
  5. Klicken Sie auf den Namen Ihrer Funktion (domaintools-iris-collector).
  6. Klicken Sie auf den Tab Logs.
  7. Prüfen Sie, ob die Funktion erfolgreich ausgeführt wurde. Achten Sie auf Folgendes:

    Successfully processed: {"ok": true, "mode": "HASH", "pages": X, "results": Y}
    
  8. Rufen Sie Cloud Storage > Buckets auf.

  9. Klicken Sie auf den Namen Ihres Buckets.

  10. Rufen Sie den Präfixordner (domaintools/iris/) auf.

  11. Prüfen Sie, ob neue .json-Dateien mit dem aktuellen Zeitstempel erstellt wurden.

Wenn in den Logs Fehler angezeigt werden, gehen Sie so vor:

  • HTTP 401: DomainTools-API-Anmeldedaten in Umgebungsvariablen prüfen
  • HTTP 403: Prüfen Sie, ob das Konto die erforderlichen Berechtigungen für die Iris Investigate API hat.
  • HTTP 429: Ratenbegrenzung – die Funktion wird automatisch mit Backoff wiederholt.
  • Fehlende Umgebungsvariablen: Prüfen Sie, ob alle erforderlichen Variablen festgelegt sind.
  • Ungültiger USE_MODE: Prüfen Sie, ob USE_MODE auf HASH, DOMAINS oder QUERY festgelegt ist und die entsprechenden Parameter angegeben sind.

Google SecOps-Dienstkonto abrufen

Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem GCS-Bucket zu lesen. Sie müssen diesem Dienstkonto Zugriff auf Ihren Bucket gewähren.

E-Mail-Adresse des Dienstkontos abrufen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf Einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. DomainTools Iris Investigate.
  5. Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
  6. Wählen Sie DomainTools Threat Intelligence als Logtyp aus.
  7. 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.com
    
  8. Kopieren Sie diese E-Mail-Adresse, um sie im nächsten Schritt zu verwenden.

Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren

Das Google SecOps-Dienstkonto benötigt die Rolle Storage-Objekt-Betrachter für Ihren GCS-Bucket.

  1. Rufen Sie Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets.
  3. Wechseln Sie zum Tab Berechtigungen.
  4. Klicken Sie auf Zugriff erlauben.
  5. 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.
  6. Klicken Sie auf Speichern.

Feed in Google SecOps konfigurieren, um DomainTools Iris Investigate-Ergebnisse aufzunehmen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf Einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. DomainTools Iris Investigate.
  5. Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
  6. Wählen Sie DomainTools Threat Intelligence als Logtyp aus.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:

      gs://domaintools-iris/domaintools/iris/
      
      • Ersetzen Sie:

        • domaintools-iris: Der Name Ihres GCS-Buckets.
        • domaintools/iris/: Optionales Präfix/Ordnerpfad, in dem Logs gespeichert werden (für den Stamm leer lassen).
      • Beispiele:

        • Root-Bucket: gs://domaintools-iris/
        • Mit Präfix: gs://domaintools-iris/domaintools/iris/
    • Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus:

      • Nie: Es werden nach Übertragungen nie Dateien gelöscht (empfohlen für Tests).
      • Übertragene Dateien löschen: Dateien werden nach der erfolgreichen Übertragung gelöscht.
      • Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.

    • Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.

    • Asset-Namespace: domaintools.threat_intel

    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.

  9. Klicken Sie auf Weiter.

  10. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
aktiv principal.domain.status Direkt aus dem aktiven Feld im Rohlog zugeordnet.
additional_whois_email.[].value about.labels.additional_whois_email Aus dem Array „additional_whois_email“ extrahiert und als Label im Objekt „about“ hinzugefügt.
adsense.value about.labels.adsense Aus „adsense.value“ extrahiert und als Label im „about“-Objekt hinzugefügt.
admin_contact.city.value principal.domain.admin.office_address.city Direkt aus dem Feld „admin_contact.city.value“ im Rohlog zugeordnet.
admin_contact.country.value principal.domain.admin.office_address.country_or_region Direkt aus dem Feld „admin_contact.country.value“ im Rohlog zugeordnet.
admin_contact.email.[].value principal.domain.admin.email_addresses Aus dem Array „admin_contact.email“ extrahiert und dem Feld „email_addresses“ hinzugefügt.
admin_contact.fax.value principal.domain.admin.attribute.labels.fax Aus admin_contact.fax.value extrahiert und als Label mit dem Schlüssel „fax“ im Attribut „admin“ hinzugefügt.
admin_contact.name.value principal.domain.admin.user_display_name Direkt aus dem Feld „admin_contact.name.value“ im Rohlog zugeordnet.
admin_contact.org.value principal.domain.admin.company_name Direkt aus dem Feld „admin_contact.org.value“ im Rohlog zugeordnet.
admin_contact.phone.value principal.domain.admin.phone_numbers Direkt aus dem Feld „admin_contact.phone.value“ im Rohlog zugeordnet.
admin_contact.postal.value principal.domain.admin.attribute.labels.postal Aus admin_contact.postal.value extrahiert und als Label mit dem Schlüssel „postal“ im Attribut „admin“ hinzugefügt.
admin_contact.state.value principal.domain.admin.office_address.state Direkt aus dem Feld „admin_contact.state.value“ im Rohlog zugeordnet.
admin_contact.street.value principal.domain.admin.office_address.name Direkt aus dem Feld „admin_contact.street.value“ im Rohlog zugeordnet.
alexa about.labels.alexa Direkt aus dem Alexa-Feld im Rohlog zugeordnet und als Label im „about“-Objekt hinzugefügt.
baidu_codes.[].value about.labels.baidu_codes Aus dem Array „baidu_codes“ extrahiert und als Label im Objekt „about“ hinzugefügt.
billing_contact.city.value principal.domain.billing.office_address.city Direkt aus dem Feld „billing_contact.city.value“ im Rohlog zugeordnet.
billing_contact.country.value principal.domain.billing.office_address.country_or_region Direkt aus dem Feld „billing_contact.country.value“ im Rohlog zugeordnet.
billing_contact.email.[].value principal.domain.billing.email_addresses Aus dem Array „billing_contact.email“ extrahiert und dem Feld „email_addresses“ hinzugefügt.
billing_contact.fax.value principal.domain.billing.attribute.labels.fax Aus billing_contact.fax.value extrahiert und als Label mit dem Schlüssel „fax“ dem Abrechnungsattribut hinzugefügt.
billing_contact.name.value principal.domain.billing.user_display_name Direkt aus dem Feld „billing_contact.name.value“ im Rohlog zugeordnet.
billing_contact.org.value principal.domain.billing.company_name Direkt aus dem Feld „billing_contact.org.value“ im Rohlog zugeordnet.
billing_contact.phone.value principal.domain.billing.phone_numbers Direkt aus dem Feld „billing_contact.phone.value“ im Rohlog zugeordnet.
billing_contact.postal.value principal.domain.billing.attribute.labels.postal Aus billing_contact.postal.value extrahiert und als Label mit dem Schlüssel „postal“ dem Abrechnungsattribut hinzugefügt.
billing_contact.state.value principal.domain.billing.office_address.state Direkt aus dem Feld „billing_contact.state.value“ im Rohlog zugeordnet.
billing_contact.street.value principal.domain.billing.office_address.name Direkt aus dem Feld „billing_contact.street.value“ im Rohlog zugeordnet.
create_date.value principal.domain.creation_time Wird aus dem Feld „create_date.value“ im Rohlog in das Zeitstempelformat konvertiert.
data_updated_timestamp principal.domain.audit_update_time Konvertiert in das Zeitstempelformat aus dem Feld „data_updated_timestamp“ im Rohlog.
Domain principal.hostname Direkt aus dem Feld „domain“ im Rohlog zugeordnet.
domain_risk.components.[].evidence security_result.detection_fields.evidence Aus dem Array „domain_risk.components.[].evidence“ extrahiert und als Erkennungsfeld mit dem Schlüssel „evidence“ im Objekt „security_result“ hinzugefügt.
domain_risk.components.[].name security_result.category_details Direkt aus dem Feld „domain_risk.components.[].name“ im Rohlog zugeordnet.
domain_risk.components.[].risk_score security_result.risk_score Direkt aus dem Feld „domain_risk.components.[].risk_score“ im Rohlog zugeordnet.
domain_risk.components.[].threats security_result.threat_name Das erste Element des Arrays „domain_risk.components.[].threats“ wird „security_result.threat_name“ zugeordnet.
domain_risk.components.[].threats security_result.detection_fields.threats Die verbleibenden Elemente des Arrays „domain_risk.components.[].threats“ werden als Erkennungsfelder mit dem Schlüssel „threats“ im Objekt „security_result“ hinzugefügt.
domain_risk.risk_score security_result.risk_score Direkt aus dem Feld „domain_risk.risk_score“ im Rohlog zugeordnet.
email_domain.[].value about.labels.email_domain Aus dem Array „email_domain“ extrahiert und als Label im Objekt „about“ hinzugefügt.
expiration_date.value principal.domain.expiration_time Aus dem Feld „expiration_date.value“ im Rohlog in das Zeitstempelformat konvertiert.
fb_codes.[].value about.labels.fb_codes Aus dem fb_codes-Array extrahiert und als Label im „about“-Objekt hinzugefügt.
first_seen.value principal.domain.first_seen_time Aus dem Feld „first_seen.value“ im Rohlog in das Zeitstempelformat konvertiert.
ga4.[].value about.labels.ga4 Aus dem GA4-Array extrahiert und als Label im „about“-Objekt hinzugefügt.
google_analytics.value about.labels.google_analytics Aus google_analytics.value extrahiert und als Label im „about“-Objekt hinzugefügt.
gtm_codes.[].value about.labels.gtm_codes Aus dem gtm_codes-Array extrahiert und als Label im „about“-Objekt hinzugefügt.
hotjar_codes.[].value about.labels.hotjar_codes Aus dem Array „hotjar_codes“ extrahiert und als Label im Objekt „about“ hinzugefügt.
ip.[].address.value principal.ip Das erste Element des IP-Arrays wird principal.ip zugeordnet.
ip.[].address.value about.labels.ip_address Die verbleibenden Elemente des IP-Arrays werden als Labels mit dem Schlüssel „ip_address“ im „about“-Objekt hinzugefügt.
ip.[].asn.[].value network.asn Das erste Element des ersten ip.asn-Arrays wird network.asn zugeordnet.
ip.[].asn.[].value about.labels.asn Die verbleibenden Elemente der ip.asn-Arrays werden als Labels mit dem Schlüssel „asn“ im „about“-Objekt hinzugefügt.
ip.[].country_code.value principal.location.country_or_region Der country_code.value des ersten Elements im IP-Array wird principal.location.country_or_region zugeordnet.
ip.[].country_code.value about.location.country_or_region Der country_code.value der verbleibenden Elemente im IP-Array wird about.location.country_or_region zugeordnet.
ip.[].isp.value principal.labels.isp Der isp.value des ersten Elements im IP-Array wird principal.labels.isp zugeordnet.
ip.[].isp.value about.labels.isp Der isp.value der verbleibenden Elemente im IP-Array wird about.labels.isp zugeordnet.
matomo_codes.[].value about.labels.matomo_codes Aus dem Array „matomo_codes“ extrahiert und als Label im Objekt „about“ hinzugefügt.
monitor_domain about.labels.monitor_domain Direkt aus dem Feld „monitor_domain“ im Rohlog zugeordnet und als Label im „about“-Objekt hinzugefügt.
monitoring_domain_list_name about.labels.monitoring_domain_list_name Direkt aus dem Feld „monitoring_domain_list_name“ im Rohlog zugeordnet und als Label im „about“-Objekt hinzugefügt.
mx.[].domain.value about.domain.name Direkt aus dem Feld „mx.[].domain.value“ im Rohlog zugeordnet.
mx.[].host.value about.hostname Direkt aus dem Feld „mx.[].host.value“ im Rohlog zugeordnet.
mx.[].ip.[].value about.ip Aus dem Array „mx.[].ip“ extrahiert und dem Feld „ip“ hinzugefügt.
mx.[].priority about.security_result.priority_details Direkt aus dem Feld „mx.[].priority“ im Rohlog zugeordnet.
name_server.[].domain.value about.labels.name_server_domain Wird aus „name_server.[].domain.value“ extrahiert und als Label mit dem Schlüssel „name_server_domain“ im „about“-Objekt hinzugefügt.
name_server.[].host.value principal.domain.name_server Wird aus „name_server.[].host.value“ extrahiert und dem Feld „name_server“ hinzugefügt.
name_server.[].host.value about.domain.name_server Wird aus „name_server.[].host.value“ extrahiert und dem Feld „name_server“ hinzugefügt.
name_server.[].ip.[].value about.labels.ip Wird aus dem Array „name_server.[].ip“ extrahiert und als Label mit dem Schlüssel „ip“ im „about“-Objekt hinzugefügt.
popularity_rank about.labels.popularity_rank Direkt aus dem Feld „popularity_rank“ im Rohlog zugeordnet und als Label im „about“-Objekt hinzugefügt.
redirect.value about.labels.redirect Aus „redirect.value“ extrahiert und als Label im „about“-Objekt hinzugefügt.
redirect_domain.value about.labels.redirect_domain Aus redirect_domain.value extrahiert und als Label im „about“-Objekt hinzugefügt.
registrant_contact.city.value principal.domain.registrant.office_address.city Direkt aus dem Feld „registrant_contact.city.value“ im Rohlog zugeordnet.
registrant_contact.country.value principal.domain.registrant.office_address.country_or_region Direkt aus dem Feld „registrant_contact.country.value“ im Rohlog zugeordnet.
registrant_contact.email.[].value principal.domain.registrant.email_addresses Aus dem Array „registrant_contact.email“ extrahiert und dem Feld „email_addresses“ hinzugefügt.
registrant_contact.fax.value principal.domain.registrant.attribute.labels.fax Aus registrant_contact.fax.value extrahiert und als Label mit dem Schlüssel „fax“ im Attribut „registrant“ hinzugefügt.
registrant_contact.name.value principal.domain.registrant.user_display_name Direkt aus dem Feld „registrant_contact.name.value“ im Rohlog zugeordnet.
registrant_contact.org.value principal.domain.registrant.company_name Direkt aus dem Feld „registrant_contact.org.value“ im Rohlog zugeordnet.
registrant_contact.phone.value principal.domain.registrant.phone_numbers Direkt aus dem Feld „registrant_contact.phone.value“ im Rohlog zugeordnet.
registrant_contact.postal.value principal.domain.registrant.attribute.labels.postal Aus registrant_contact.postal.value extrahiert und als Label mit dem Schlüssel „postal“ im Attribut „registrant“ hinzugefügt.
registrant_contact.state.value principal.domain.registrant.office_address.state Direkt aus dem Feld „registrant_contact.state.value“ im Rohlog zugeordnet.
registrant_contact.street.value principal.domain.registrant.office_address.name Direkt aus dem Feld „registrant_contact.street.value“ im Rohlog zugeordnet.
registrant_name.value about.labels.registrant_name Aus registrant_name.value extrahiert und als Label im „about“-Objekt hinzugefügt.
registrant_org.value about.labels.registrant_org Aus registrant_org.value extrahiert und als Label im „about“-Objekt hinzugefügt.
registrar.value principal.domain.registrar Direkt aus dem Feld „registrar.value“ im Rohlog zugeordnet.
registrar_status about.labels.registrar_status Aus dem Array „registrar_status“ extrahiert und als Label im Objekt „about“ hinzugefügt.
server_type network.tls.client.server_name Direkt aus dem Feld „server_type“ im Rohlog zugeordnet.
soa_email.[].value principal.user.email_addresses Aus dem soa_email-Array extrahiert und dem Feld „email_addresses“ hinzugefügt.
spf_info about.labels.spf_info Direkt aus dem Feld „spf_info“ im Rohlog zugeordnet und als Label im „about“-Objekt hinzugefügt.
ssl_email.[].value about.labels.ssl_email Aus dem ssl_email-Array extrahiert und als Label im „about“-Objekt hinzugefügt.
ssl_info.[].alt_names.[].value about.labels.alt_names Aus dem Array „ssl_info.[].alt_names“ extrahiert und als Label im „about“-Objekt hinzugefügt.
ssl_info.[].common_name.value about.labels.common_name Aus ssl_info.[].common_name.value extrahiert und als Label im about-Objekt hinzugefügt.
ssl_info.[].duration.value about.labels.duration Wird aus „ssl_info.[].duration.value“ extrahiert und als Label im „about“-Objekt hinzugefügt.
ssl_info.[].email.[].value about.labels.ssl_info_email Aus dem Array „ssl_info.[].email“ extrahiert und als Label mit dem Schlüssel „ssl_info_email“ im „about“-Objekt hinzugefügt.
ssl_info.[].hash.value network.tls.server.certificate.sha1 Der hash.value des ersten Elements im ssl_info-Array wird network.tls.server.certificate.sha1 zugeordnet.
ssl_info.[].hash.value about.labels.hash Der hash.value der verbleibenden Elemente im ssl_info-Array wird about.labels.hash zugeordnet.
ssl_info.[].issuer_common_name.value network.tls.server.certificate.issuer Der issuer_common_name.value des ersten Elements im ssl_info-Array wird network.tls.server.certificate.issuer zugeordnet.
ssl_info.[].issuer_common_name.value about.labels.issuer_common_name Der issuer_common_name.value der verbleibenden Elemente im ssl_info-Array wird about.labels.issuer_common_name zugeordnet.
ssl_info.[].not_after.value network.tls.server.certificate.not_after Der not_after.value des ersten Elements im ssl_info-Array wird in das Zeitstempelformat konvertiert und network.tls.server.certificate.not_after zugeordnet.
ssl_info.[].not_after.value about.labels.not_after Der not_after.value der verbleibenden Elemente im ssl_info-Array wird about.labels.not_after zugeordnet.
ssl_info.[].not_before.value network.tls.server.certificate.not_before Der Wert „not_before.value“ des ersten Elements im Array „ssl_info“ wird in das Zeitstempelformat konvertiert und „network.tls.server.certificate.not_before“ zugeordnet.
ssl_info.[].not_before.value about.labels.not_before Der not_before.value der verbleibenden Elemente im ssl_info-Array wird about.labels.not_before zugeordnet.
ssl_info.[].organization.value network.organization_name Der organization.value des ersten Elements im ssl_info-Array wird network.organization_name zugeordnet.
ssl_info.[].organization.value about.labels.organization Der organization.value der verbleibenden Elemente im ssl_info-Array wird about.labels.organization zugeordnet.
ssl_info.[].subject.value about.labels.subject Aus ssl_info.[].subject.value extrahiert und als Label im „about“-Objekt hinzugefügt.
statcounter_project_codes.[].value about.labels.statcounter_project_codes Aus dem Array „statcounter_project_codes“ extrahiert und als Label im „about“-Objekt hinzugefügt.
statcounter_security_codes.[].value about.labels.statcounter_security_codes Aus dem Array „statcounter_security_codes“ extrahiert und als Label im „about“-Objekt hinzugefügt.
tags.[].label about.file.tags Aus „tags.[].label“ extrahiert und dem Feld „tags“ hinzugefügt.
tags.[].scope security_result.detection_fields.scope Aus tags.[].scope extrahiert und als Erkennungsfeld mit dem Schlüssel „scope“ im security_result-Objekt hinzugefügt.
tags.[].tagged_at security_result.detection_fields.tagged_at Aus Tags extrahiert.[].tagged_at und als Erkennungsfeld mit dem Schlüssel „tagged_at“ im security_result-Objekt hinzugefügt.
technical_contact.city.value principal.domain.tech.office_address.city Direkt aus dem Feld „technical_contact.city.value“ im Rohlog zugeordnet.
technical_contact.country.value principal.domain.tech.office_address.country_or_region Direkt aus dem Feld „technical_contact.country.value“ im Rohlog zugeordnet.
technical_contact.email.[].value principal.domain.tech.email_addresses Aus dem Array „technical_contact.email“ extrahiert und dem Feld „email_addresses“ hinzugefügt.
technical_contact.fax.value principal.domain.tech.attribute.labels.fax Aus technical_contact.fax.value extrahiert und als Label mit dem Schlüssel „fax“ im Attribut „tech“ hinzugefügt.
technical_contact.name.value principal.domain.tech.user_display_name Direkt aus dem Feld „technical_contact.name.value“ im Rohlog zugeordnet.
technical_contact.org.value principal.domain.tech.company_name Direkt aus dem Feld „technical_contact.org.value“ im Rohlog zugeordnet.
technical_contact.phone.value principal.domain.tech.phone_numbers Direkt aus dem Feld „technical_contact.phone.value“ im Rohlog zugeordnet.
technical_contact.postal.value principal.domain.tech.attribute.labels.postal Aus technical_contact.postal.value extrahiert und als Label mit dem Schlüssel „postal“ im Attribut „tech“ hinzugefügt.
technical_contact.state.value principal.domain.tech.office_address.state Direkt aus dem Feld „technical_contact.state.value“ im Rohlog zugeordnet.
technical_contact.street.value principal.domain.tech.office_address.name Direkt aus dem Feld „technical_contact.street.value“ im Rohlog zugeordnet.
tld about.labels.tld Direkt aus dem Feld „tld“ im Rohlog zugeordnet und als Label im Objekt „about“ hinzugefügt.
timestamp about.labels.timestamp Direkt aus dem Zeitstempelfeld im Rohlog zugeordnet und als Label im „about“-Objekt hinzugefügt.
website_response principal.network.http.response_code Direkt aus dem Feld „website_response“ im Rohlog zugeordnet.
website_title about.labels.website_title Direkt aus dem Feld „website_title“ im Rohlog zugeordnet und als Label im „about“-Objekt hinzugefügt.
whois_url principal.domain.whois_server Direkt aus dem Feld „whois_url“ im Rohlog zugeordnet.
yandex_codes.[].value about.labels.yandex_codes Aus dem Array „yandex_codes“ extrahiert und als Label im Objekt „about“ hinzugefügt.
edr.client.hostname Wird auf den Wert des Felds „Domain“ festgelegt.
edr.client.ip_addresses Wird auf den Wert des ersten Elements im IP-Array festgelegt, genauer gesagt auf „ip.[0].address.value“.
edr.raw_event_name Auf „STATUS_UPDATE“ festlegen, wenn „principal.hostname“ vorhanden ist, andernfalls auf „GENERIC_EVENT“.
metadata.event_timestamp Wird aus dem Feld „create_time“ der obersten Ebene im Rohlog kopiert.
metadata.event_type Auf „STATUS_UPDATE“ festlegen, wenn „principal.hostname“ vorhanden ist, andernfalls auf „GENERIC_EVENT“.
metadata.log_type Legen Sie diesen Wert auf „DOMAINTOOLS_THREATINTEL“ fest.
metadata.product_name Legen Sie diesen Wert auf „DOMAINTOOLS“ fest.
metadata.vendor_name Legen Sie diesen Wert auf „DOMAINTOOLS“ fest.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten