Raccogli i log di Elastic Defend

Parser Version: 5.0

Supportata in:

Questo documento spiega come importare i log di Elastic Defend in Google Security Operations utilizzando Google Cloud Storage V2 con una funzione Cloud Run.

Elastic Defend è una soluzione di rilevamento e risposta degli endpoint (EDR) all'interno di Elastic Security che fornisce funzionalità di prevenzione, rilevamento e risposta con una visibilità approfondita sui sistemi operativi Windows, macOS e Linux. Monitora l'esecuzione dei processi, l'attività dei file, le connessioni di rete, le modifiche al registro e i caricamenti delle librerie per rilevare e prevenire le minacce a livello di endpoint. I dati vengono archiviati in Elasticsearch e possono essere recuperati utilizzando l'API Elasticsearch Search.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto Google Cloud con le seguenti API abilitate:
    • Cloud Storage
    • Cloud Run Functions
    • Cloud Scheduler
    • Pub/Sub
    • IAM
  • Accesso a un cluster Elasticsearch con Elastic Defend distribuito
  • Autorizzazioni per creare chiavi API in Elasticsearch (privilegio del cluster manage_security, manage_api_key o manage_own_api_key)
  • Connettività di rete da Cloud Run Functions al cluster Elasticsearch

Crea un bucket Google Cloud Storage

  1. Vai alla console Google Cloud.
  2. Seleziona il tuo progetto o creane uno nuovo.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome globalmente univoco (ad esempio elastic-defend-logs)
    Tipo di località Scegli in base alle tue esigenze (Regione, a due regioni, multiregionale)
    Località Seleziona la località (ad esempio us-central1)
    Classe di archiviazione Standard (consigliato per i log ad accesso frequente)
    Controllo degli accessi Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Abilita il controllo delle versioni degli oggetti o la policy di conservazione
  6. Fai clic su Crea.

Raccogli le credenziali di Elastic Defend

Per consentire alla funzione Cloud Run di recuperare gli eventi Elastic Defend, devi creare una chiave API con autorizzazioni in lettura per i flussi di dati logs-endpoint.

Crea una chiave API utilizzando Kibana

  1. Accedi a Kibana.
  2. Nel menu di navigazione o nel campo di ricerca globale, vai a Stack Management > Chiavi API.
  3. Fai clic su Crea chiave API.
  4. Nel campo Nome, inserisci Google SecOps Cloud Storage Integration.
  5. Nel campo Scadenza, imposta facoltativamente una data di scadenza. Per impostazione predefinita, le chiavi API non scadono.
  6. Fai clic su Controlla i privilegi di sicurezza.
  7. Nella sezione Indici, fai clic su Aggiungi privilegio indice.
  8. Configura il privilegio per l'indice:
    • Indici: inserisci logs-endpoint.*
    • Privilegi: seleziona Lettura
  9. Lascia vuota la sezione Privilegi del cluster (non sono richiesti privilegi del cluster).
  10. Fai clic su Crea chiave API.

Registra le credenziali API

Dopo aver creato la chiave API, viene visualizzata una finestra di dialogo con le tue credenziali:

  • Encoded: la chiave API con codifica Base64 (ad esempio, VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==)

    Devi anche registrare l'URL dell'endpoint Elasticsearch:

  • Per Elastic Cloud: l'endpoint viene visualizzato nella console Cloud nella sezione Elasticsearch del tuo deployment (ad esempio, https://my-deployment.es.us-central1.gcp.cloud.es.io:443)

  • Per Elasticsearch autogestito: utilizza il nome host o l'indirizzo IP del cluster Elasticsearch con la porta (ad esempio, https://elasticsearch.example.com:9200)

Crea una chiave API utilizzando gli Strumenti per sviluppatori (metodo alternativo)

In alternativa, puoi creare una chiave API utilizzando Kibana Dev Tools:

  1. Accedi a Kibana.
  2. Vai a Gestione > Strumenti per sviluppatori.
  3. Nella console, esegui questo comando:

    POST /_security/api_key
    {
      "name": "Google SecOps Cloud Storage Integration",
      "role_descriptors": {
        "chronicle_reader": {
          "indices": [
            {
              "names": ["logs-endpoint.*"],
              "privileges": ["read"]
            }
          ]
        }
      },
      "metadata": {
        "application": "google-chronicle-gcs",
        "environment": "production"
      }
    }
    
  4. La risposta contiene le credenziali della chiave API:

    {
      "id": "VuaCfGcBCdbkQm-e5aOx",
      "name": "Google SecOps Cloud Storage Integration",
      "api_key": "ui2lp2axTNmsyakw9tvNnw",
      "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
    }
    
  5. Copia e salva il valore codificato. Questa è la chiave API con codifica base64 che utilizzerai per l'autenticazione.

Crea service account

Crea un account di servizio dedicato per la funzione Cloud Run.

  1. Nella console Google Cloud, vai a IAM e amministrazione > Account di servizio.
  2. Fai clic su Crea account di servizio.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome del service account: inserisci elastic-defend-collector
    • Descrizione account di servizio: inserisci Service account for Elastic Defend log collection to GCS
  4. Fai clic su Crea e continua.
  5. Nella sezione Concedi a questo account di servizio l'accesso al progetto, aggiungi i seguenti ruoli:
    1. Fai clic su Seleziona un ruolo e seleziona Storage Object Admin (roles/storage.objectAdmin).
    2. Fai clic su Aggiungi un altro ruolo e seleziona Cloud Run Invoker (roles/run.invoker).
  6. Fai clic su Continua.
  7. Fai clic su Fine.

Crea argomento Pub/Sub

Crea un argomento Pub/Sub per attivare la funzione Cloud Run da Cloud Scheduler.

  1. Nella console Google Cloud, vai a Pub/Sub > Argomenti.
  2. Fai clic su Crea argomento.
  3. Fornisci i seguenti dettagli di configurazione:
    • ID argomento: inserisci elastic-defend-trigger
    • Aggiungi una sottoscrizione predefinita: lascia l'opzione selezionata
  4. Fai clic su Crea.

Crea funzione Cloud Run

Crea una funzione Cloud Run che recupera gli eventi da Elasticsearch e li scrive in GCS.

Crea la funzione

  1. Nella console Google Cloud, vai a Cloud Run Functions.
  2. Fai clic su Crea funzione.
  3. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Ambiente 2ª gen.
    Nome della funzione elastic-defend-to-gcs
    Regione Seleziona la stessa regione del bucket GCS
    Tipo di trigger Cloud Pub/Sub
    Argomento Cloud Pub/Sub Seleziona elastic-defend-trigger
    Memoria allocata 512 MiB (aumenta per volumi di dati di grandi dimensioni)
    Timeout 540 secondi
    Service account di runtime Seleziona elastic-defend-collector
  4. Fai clic su Avanti.

Aggiungi variabili di ambiente

  • Aggiungi le seguenti variabili di ambiente nella sezione Impostazioni di runtime, build, connessioni e sicurezza:

    Variabile Valore
    GCS_BUCKET Nome del bucket GCS (ad esempio, elastic-defend-logs)
    GCS_PREFIX Prefisso per i file di log (ad esempio, elastic-defend)
    STATE_KEY Nome del file di stato (ad esempio state.json)
    ES_HOST URL Elasticsearch (ad esempio https://my-deployment.es.us-central1.gcp.cloud.es.io:443)
    ES_API_KEY Chiave API codificata dal passaggio di creazione delle credenziali
    MAX_RECORDS Numero massimo di record per esecuzione (ad esempio 100000)
    PAGE_SIZE Numero di record per richiesta di ricerca (ad esempio 1000)
    LOOKBACK_HOURS Ore da considerare per la prima esecuzione (ad esempio, 24)

Aggiungi il codice per la funzione

  1. Seleziona Python 3.11 come Runtime.
  2. Imposta Punto di ingresso su main.
  3. Nella sezione Codice sorgente, seleziona Editor incorporato.
  4. Sostituisci i contenuti di main.py con il seguente codice:

    import os
    import json
    import datetime
    import base64
    import requests
    from google.cloud import storage
    
    GCS_BUCKET = os.environ["GCS_BUCKET"]
    GCS_PREFIX = os.environ.get("GCS_PREFIX", "elastic-defend")
    STATE_KEY = os.environ.get("STATE_KEY", "state.json")
    ES_HOST = os.environ["ES_HOST"]
    ES_API_KEY = os.environ["ES_API_KEY"]
    MAX_RECORDS = int(os.environ.get("MAX_RECORDS", "100000"))
    PAGE_SIZE = int(os.environ.get("PAGE_SIZE", "1000"))
    LOOKBACK_HOURS = int(os.environ.get("LOOKBACK_HOURS", "24"))
    
    INDEX_PATTERN = "logs-endpoint.*"
    SEARCH_PATH = f"/{INDEX_PATTERN}/_search"
    
    def _gcs_client():
        return storage.Client()
    
    def _load_state(bucket):
        blob = bucket.blob(f"{GCS_PREFIX}/{STATE_KEY}")
        if blob.exists():
            return json.loads(blob.download_as_text())
        return {}
    
    def _save_state(bucket, state):
        blob = bucket.blob(f"{GCS_PREFIX}/{STATE_KEY}")
        blob.upload_from_string(
            json.dumps(state),
            content_type="application/json",
        )
    
    def _build_query(gte_ts, sort_after=None):
        body = {
            "size": PAGE_SIZE,
            "query": {
                "range": {
                    "@timestamp": {
                        "gte": gte_ts,
                        "format": "strict_date_optional_time",
                    }
                }
            },
            "sort": [
                {"@timestamp": {"order": "asc"}},
                {"_shard_doc": "asc"},
            ],
        }
        if sort_after:
            body["search_after"] = sort_after
        return body
    
    def _search(session, body):
        url = f"{ES_HOST.rstrip('/')}{SEARCH_PATH}"
        resp = session.post(
            url,
            json=body,
            headers={
                "Authorization": f"ApiKey {ES_API_KEY}",
                "Content-Type": "application/json",
            },
            timeout=120,
        )
        resp.raise_for_status()
        return resp.json()
    
    def _write_ndjson(bucket, records, ts_label):
        if not records:
            return
        now = datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ")
        blob_name = f"{GCS_PREFIX}/{ts_label}/{now}.ndjson"
        blob = bucket.blob(blob_name)
        ndjson = "\n".join(json.dumps(r, separators=(",", ":")) for r in records)
        blob.upload_from_string(ndjson, content_type="application/x-ndjson")
        print(f"Wrote {len(records)} records to gs://{GCS_BUCKET}/{blob_name}")
    
    def main(event, context):
        """Cloud Run function entry point triggered by Pub/Sub."""
        client = _gcs_client()
        bucket = client.bucket(GCS_BUCKET)
    
        state = _load_state(bucket)
        sort_after = state.get("sort_after")
    
        if state.get("last_timestamp"):
            gte_ts = state["last_timestamp"]
        else:
            gte_ts = (
                datetime.datetime.utcnow()
                - datetime.timedelta(hours=LOOKBACK_HOURS)
            ).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
    
        session = requests.Session()
        total = 0
        batch = []
        last_ts = gte_ts
        ts_label = datetime.datetime.utcnow().strftime("%Y/%m/%d/%H")
    
        while total < MAX_RECORDS:
            body = _build_query(gte_ts, sort_after)
            result = _search(session, body)
            hits = result.get("hits", {}).get("hits", [])
    
            if not hits:
                break
    
            for hit in hits:
                doc = hit.get("_source", {})
                doc["_id"] = hit.get("_id")
                doc["_index"] = hit.get("_index")
                batch.append(doc)
    
                hit_ts = doc.get("@timestamp", last_ts)
                if hit_ts > last_ts:
                    last_ts = hit_ts
    
            sort_after = hits[-1].get("sort")
            total += len(hits)
    
            if len(batch) >= PAGE_SIZE:
                _write_ndjson(bucket, batch, ts_label)
                batch = []
    
            if len(hits) < PAGE_SIZE:
                break
    
        if batch:
            _write_ndjson(bucket, batch, ts_label)
    
        new_state = {
            "last_timestamp": last_ts,
            "sort_after": sort_after,
        }
        _save_state(bucket, new_state)
        print(f"Done. Fetched {total} records. State: {json.dumps(new_state)}")
        return f"OK: {total} records"
    
  5. Sostituisci i contenuti di requirements.txt come segue:

    functions-framework==3.*
    google-cloud-storage==2.*
    requests==2.*
    
  6. Fai clic su Esegui il deployment.

  7. Attendi il completamento del deployment.

Crea job Cloud Scheduler

Crea un job Cloud Scheduler per attivare la funzione Cloud Run in base a una pianificazione regolare.

  1. Nella console Google Cloud, vai a Cloud Scheduler.
  2. Fai clic su Crea job.
  3. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Nome elastic-defend-scheduler
    Regione Seleziona la stessa regione della funzione Cloud Run
    Frequenza */5 * * * * (ogni 5 minuti)
    Fuso orario Seleziona il tuo fuso orario (ad es. UTC)
  4. Fai clic su Continua.

  5. Nella sezione Configura l'esecuzione:

    • Tipo di destinazione: seleziona Pub/Sub
    • Argomento Cloud Pub/Sub: seleziona elastic-defend-trigger
    • Corpo del messaggio: inserisci {"run": true}
  6. Fai clic su Crea.

Recupera il account di servizio Google SecOps e configura il feed

Google SecOps utilizza un account di servizio univoco per leggere i dati dal tuo bucket GCS. Devi concedere a questo account di servizio l'accesso al tuo bucket.

Recupera l'indirizzo email del account di servizio

  1. Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad es. Elastic Defend Events).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Elastic Defend come Tipo di log.
  7. Fai clic su Ottieni service account. Verrà visualizzato un indirizzo email univoco del account di servizio, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia questo indirizzo email per utilizzarlo nel passaggio successivo.

Configura il feed

  1. Fai clic su Avanti.
  2. Specifica i valori per i seguenti parametri di input:

    • URL bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:

      gs://elastic-defend-logs/elastic-defend/
      

      Sostituisci elastic-defend-logs con il nome del tuo bucket GCS.

    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:

      • Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
      • Elimina i file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina i file trasferiti e le directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.

    • Età massima dei file: includi i file modificati negli ultimi giorni (il valore predefinito è 180 giorni)

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset

    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.

  3. Fai clic su Avanti.

  4. Controlla la nuova configurazione del feed di notizie nella schermata Finalizza e poi fai clic su Invia.

Concedi le autorizzazioni IAM al account di servizio Google SecOps

Il account di servizio Google SecOps deve avere il ruolo Storage Object Viewer nel bucket GCS.

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (ad esempio elastic-defend-logs).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'indirizzo email del account di servizio Google SecOps
    • Assegna i ruoli: seleziona Storage Object Viewer
  6. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
_source.agent.id, _source.agent.type, _source.agent.version, _source.host.architecture, _source.event.agent_id_status, _source.event.id, _source.user.id, _source.group.id, _source.data_stream.type, _source.agent.build.original additional.fields Uniti con oggetti etichetta contenenti valori dei campi elencati
_source.process.Ext.session_info.logon_type extensions.auth.auth_details Valore copiato direttamente
_source.host.os.full hardware.cpu_platform Valore copiato direttamente
_source.host.id hardware.serial_number Valore copiato direttamente
_source.rule.description metadata.description Valore copiato direttamente
_source.@timestamp metadata.event_timestamp Conversione eseguita utilizzando il filtro della data con i formati ISO8601, yyyy-MM-ddTHH:mm:ss.SSSSSSSSSZ, yyyy-MM-ddTHH:mm:ss.SSSSSSZ, yyyy-MM-ddTHH:mm:ss.SSSZ, yyyy-MM-ddTHH:mm:ssZ
metadata.event_type Impostato in base alle condizioni index, event.action e has*
metadata.log_type Impostato su "ELASTIC_DEFEND"
metadata.product_event_type Impostato su "File Events" se _index ~ events.file; "Library Events" se events.library; "Network Events" se events.network; "Process Events" se events.process; "Registry Events" se events.registry; "Eventi di sicurezza" se events.security; "API Events" se events.api; "Alerts" se .alert
_id metadata.product_log_id Valore di _id se non è ["", " ", "null", "N/A"]
_source.ecs.version metadata.product_version Valore copiato direttamente
_source.network.type network.application_protocol_version Valore copiato direttamente
_source.network.transport network.ip_protocol Impostato su "TCP" se corrisponde a (?i)tcp; "UDP" se (?i)udp; "ICMP" se (?i)icmp; altrimenti "UNKNOWN_IP_PROTOCOL"
_source.destination.as.organization.name network.organization_name Valore copiato direttamente
_source.Endpoint.policy.applied.artifacts.global.identifiers observer.file.names Unito da _source.Endpoint.policy.applied.artifacts.global.identifiers
_source.Endpoint.policy.applied.artifacts.global.version, _source.Endpoint.policy.applied.artifacts.global.snapshot observer.resource.attribute.labels Uniti con oggetti etichetta contenenti valori dei campi elencati
_source.Endpoint.policy.applied.artifacts.user.version observer.user.attribute.labels Unito all'oggetto etichetta contenente il valore di _source.Endpoint.policy.applied.artifacts.user.version
_source.host.os.full principal.asset.hardware.cpu_platform Valore copiato direttamente
_source.host.id principal.asset.hardware.serial_number Valore copiato direttamente
_source.host.name principal.asset.hostname Valore copiato direttamente
_source.host.ip principal.asset.ip Unito da _source.host.ip
_source.host.os.type principal.asset.platform_software.platform Impostato su "WINDOWS" se corrisponde a (?i)windows; "LINUX" se (?i)linux; "MAC" se (?i)mac; "IOS" se (?i)ios; altrimenti "UNKNOWN_PLATFORM"
_source.host.os.kernel principal.asset.platform_software.platform_patch_level Valore copiato direttamente
_source.event.created principal.domain.creation_time Conversione eseguita utilizzando il filtro della data con i formati ISO8601, yyyy-MM-ddTHH:mm:ss.SSSSSSSSSZ, yyyy-MM-ddTHH:mm:ss.SSSSSSZ, yyyy-MM-ddTHH:mm:ss.SSSZ, yyyy-MM-ddTHH:mm:ssZ
_source.user.domain principal.domain.name Valore copiato direttamente
_source.process.thread.capabilities.effective principal.file.capabilities_tags Unito da _source.process.thread.capabilities.effective
_source.process.executable principal.file.full_path Valore copiato direttamente
_source.process.hash.md5 principal.file.md5 Valore copiato direttamente
_source.file.name principal.file.names Unito da _source.file.name
_source.process.hash.sha1 principal.file.sha1 Valore copiato direttamente
_source.process.hash.sha256 principal.file.sha256 Valore copiato direttamente
_source.host.hostname principal.hostname Valore copiato direttamente
_source.host.ip principal.ip Unito da _source.host.ip
_source.host.mac principal.mac Unito da _source.host.mac dopo aver sostituito - con :
_source.host.os.Ext.variant principal.platform_version Valore copiato direttamente
_source.source.port principal.port Convertito in stringa e poi in numero intero
_source.process.command_line, _source.process.name principal.process.command_line Valore di _source.process.command_line se non vuoto, altrimenti di _source.process.name
_source.process.thread.capabilities.permitted principal.process.file.capabilities_tags Unito da _source.process.thread.capabilities.permitted
_source.process.executable principal.process.file.full_path Valore copiato direttamente
_source.process.hash.md5 principal.process.file.md5 Valore copiato direttamente
_source.process.hash.sha1 principal.process.file.sha1 Valore copiato direttamente
_source.process.hash.sha256 principal.process.file.sha256 Valore copiato direttamente
_source.process.parent.executable principal.process.parent_process.file.full_path Valore copiato direttamente
_source.process.pid principal.process.pid Convertito in stringa e poi copiato
_source.process.Ext.api.name principal.resource.attribute.labels Unito all'oggetto etichetta contenente il valore di _source.process.Ext.api.name
_source.event.code principal.resource.product_object_id Valore copiato direttamente
_source.group.name principal.user.group_identifiers Unito da _source.group.name
_source.user.name principal.user.userid Valore copiato direttamente
_source.user.id principal.user.windows_sid Valore di _source.user.id se corrisponde alla regex ^S-\\d-(\\\\d+-){1,14}\\\\d+$
_source.file.Ext.malware_signature.primary.signature.hash.sha256 security_result.about.file.sha256 Valore copiato direttamente
_source.event.outcome security_result.action Valore di _source.event.outcome, in lettere maiuscole, quindi impostato su ALLOW se in [SUCCESS, ALLOW], BLOCK se in [FAILURE, DENY, SKIPPED, RATE_LIMIT], UNKNOWN_ACTION se UNKNOWN
_source.event.action security_result.action_details Valore copiato direttamente
_source.destination.geo.region_iso_code security_result.associations Unito all'oggetto contenente il nome di _source.destination.geo.region_iso_code
_source.kibana.alert.rule.parameters.threat.tactic.id, _source.kibana.alert.rule.parameters.threat.tactic.name security_result.attack_details.tactics Unito all'oggetto contenente l'ID e il nome dei campi elencati
_source.kibana.alert.rule.parameters.threat.technique.id, _source.kibana.alert.rule.parameters.threat.technique.name, _source.kibana.alert.rule.parameters.threat.technique.subtechnique.id, _source.kibana.alert.rule.parameters.threat.technique.subtechnique.name security_result.attack_details.techniques Unito a oggetti contenenti id, name, subtechnique_id, subtechnique_name dai campi elencati
_source.event.category security_result.category_details Unito da _source.event.category
_source.kibana.alert.rule.description security_result.description Valore copiato direttamente
_source.event.kind, _source.file.Ext.malware_signature.all_names, _source.file.Ext.malware_signature.identifier, _source.event.risk_score, _source.threat.tactic.reference, _source.threat.technique.reference, _source.threat.technique.subtechnique.reference security_result.detection_fields Uniti con oggetti etichetta contenenti valori dei campi elencati
_source.rule.id, _source.kibana.alert.rule.rule_id security_result.rule_id Valore di _source.rule.id se non vuoto, altrimenti di _source.kibana.alert.rule.rule_id
_source.rule.name, _source.kibana.alert.rule.name security_result.rule_name Valore di _source.rule.name se non è vuoto, altrimenti di _source.kibana.alert.rule.name
_source.rule.ruleset security_result.rule_set Valore copiato direttamente
security_result.severity Impostato su "LOW"; se _index corrisponde a .alert, impostato su "HIGH"; se _source.kibana.alert.rule.parameters.severity corrisponde a (?i)LOW, impostato su "LOW"
_source.message security_result.summary Valore copiato direttamente
_source.file.Ext.malware_signature.primary.signature.id security_result.threat_id Valore copiato direttamente
_source.file.Ext.malware_signature.primary.signature.name security_result.threat_name Valore copiato direttamente
_source.source.address, _source.source.ip src.asset.ip Unito da _source.source.address e _source.source.ip
_source.source.address, _source.source.ip src.ip Unito da _source.source.address e _source.source.ip
_source.host.name target.asset.hostname Valore copiato direttamente
_source.destination.address, _source.destination.ip target.asset.ip Unito da _source.destination.address e _source.destination.ip
_source.file.path, _source.dll.path, _source.process.executable, _source.Target.process.executable target.file.full_path Valore di _source.file.path se events.file, _source.dll.path se events.library, _source.process.executable se events.process o events.api, _source.Target.process.executable se events.api
_source.dll.hash.md5, _source.process.hash.md5 target.file.md5 Valore da _source.dll.hash.md5 se events.library, _source.process.hash.md5 se .alert
_source.dll.name, _source.process.name target.file.names Unito da _source.dll.name se events.library, _source.process.name se .alert
_source.dll.hash.sha1, _source.process.hash.sha1 target.file.sha1 Valore da _source.dll.hash.sha1 se events.library, _source.process.hash.sha1 se .alert
_source.dll.hash.sha256, _source.process.hash.sha256 target.file.sha256 Valore ottenuto da _source.dll.hash.sha256 se events.library, _source.process.hash.sha256 se .alert
_source.host.name target.hostname Valore copiato direttamente
_source.destination.address, _source.destination.ip target.ip Unito da _source.destination.address e _source.destination.ip
_source.destination.geo.city_name target.location.city Valore copiato direttamente
_source.destination.geo.country_name target.location.country_or_region Valore copiato direttamente
_source.destination.geo.continent_name target.location.name Valore copiato direttamente
_source.destination.geo.location.lat target.location.region_coordinates.latitude Convertito in stringa e poi in numero in virgola mobile
_source.destination.geo.location.lon target.location.region_coordinates.longitude Convertito in stringa e poi in numero in virgola mobile
_source.destination.geo.region_name target.location.state Valore copiato direttamente
_source.data_stream.namespace target.namespace Valore copiato direttamente
_source.destination.port target.port Convertito in stringa e poi in numero intero
_source.process.command_line target.process.command_line Valore copiato direttamente
_source.process.executable target.process.file.full_path Valore copiato direttamente
_source.process.hash.md5 target.process.file.md5 Valore copiato direttamente
_source.process.hash.sha1 target.process.file.sha1 Valore copiato direttamente
_source.process.hash.sha256 target.process.file.sha256 Valore copiato direttamente
_source.process.name target.process.file.names Unito da _source.process.name
_source.registry.key target.registry.registry_key Valore copiato direttamente
_source.registry.path target.registry.registry_value_data Valore copiato direttamente
_source.registry.value target.registry.registry_value_name Valore copiato direttamente
_source.data_stream.dataset target.resource.name Valore copiato direttamente
_source.process.entity_id target.user.userid Valore copiato direttamente
metadata.product_name Impostato su "Elastic Defend"
metadata.vendor_name Impostato su "Elastic"
_source.host.hostname event.idm.read_only_udm.intermediary.hostname Mappato dal log delle modifiche
_source.process.pid event.idm.read_only_udm.principal.process.pid Mappato dal log delle modifiche
_source.process.command_line event.idm.read_only_udm.principal.process.command_line Mappato dal log delle modifiche
_source.process.name event.idm.read_only_udm.principal.process.file.names Mappato dal log delle modifiche
_source.process.parent.executable event.idm.read_only_udm.principal.process.parent_process.file.full_path Mappato dal log delle modifiche
_source.process.Ext.token.integrity_level_name event.idm.read_only_udm.principal.resource.attribute.labels Mappato dal log delle modifiche
_source.process.Ext.code_signature event.idm.read_only_udm.principal.resource.attribute.labels Mappato dal log delle modifiche
_source.process.Ext.ancestry event.idm.read_only_udm.principal.resource.attribute.labels Mappato dal log delle modifiche
_source.process.Ext.protection event.idm.read_only_udm.principal.resource.attribute.labels Mappato dal log delle modifiche
_source.process.Ext.authentication_id event.idm.read_only_udm.principal.resource.attribute.labels Mappato dal log delle modifiche
_source.winlog.event_data.PrivilegeList event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
Privilege List event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
_source.event.ingested event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
Ingested event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
_source.event.provider event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
Provider event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
_source.user.name event.idm.read_only_udm.principal.user.userid Mappato dal log delle modifiche
_source.event.action event.idm.read_only_udm.security_result.action_details Mappato dal log delle modifiche
_source.host.domain event.idm.read_only_udm.principal.administrative_domain Mappato dal log delle modifiche
_source.event.sequence event.idm.read_only_udm.security_result.detection_fields Mappato dal log delle modifiche
_source.kibana.alert.rule.description event.idm.read_only_udm.security_result.description Mappato dal log delle modifiche
_source.kibana.alert.rule.rule_id event.idm.read_only_udm.security_result.rule_id Mappato dal log delle modifiche
_source.kibana.alert.rule.name event.idm.read_only_udm.security_result.rule_name Mappato dal log delle modifiche
_source.kibana.alert.rule.parameters.severity event.idm.read_only_udm.security_result.severity Mappato dal log delle modifiche
_source.kibana.alert.rule.parameters.threat.tactic.id event.idm.read_only_udm.security_result.attack_details.tactics Mappato dal log delle modifiche

Log delle modifiche

Visualizza il log delle modifiche per questo parser

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.