Windows AppLocker-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Windows AppLocker-Logs mit dem Bindplane-Agent in Google Security Operations aufnehmen.

Windows AppLocker ist eine in Windows integrierte Funktion zur Anwendungssteuerung, die Ereignisse zur Richtlinienerzwingung, zum Audit und zur Ausführung von Anwendungen generiert. AppLocker schreibt diese Ereignisse in vier Windows-Ereignisprotokollkanäle unter Anwendungs- und Dienstprotokolle > Microsoft > Windows > AppLocker: EXE und DLL, MSI und Skript, Bereitstellung von Paket-Apps und Ausführung von Paket-Apps.

Sie können die Aufnahme mit einer von zwei unterstützten Methoden konfigurieren:

  • Methode 1: NXLog-Weiterleitung an den Bindplane-Agent (empfohlen). NXLog liest die AppLocker-Channels auf jedem Endpunkt und leitet die Ereignisse als Syslog mit einer JSON-Nutzlast an einen Bindplane-Agent weiter, der sie unter dem Logtyp WINDOWS_APPLOCKER an Google SecOps sendet. Dieses Format wird vom WINDOWS_APPLOCKER-Parser erwartet. Die AppLocker-Regel und die Dateifelder bleiben erhalten.
  • Methode 2: Bindplane-Agent – direkter Channel-Lesevorgang Der Bindplane-Agent auf jedem Endpunkt liest die AppLocker-Kanäle nativ und sendet die unformatierten Windows-Ereignis-XML-Daten unter dem Logtyp WINEVTLOG an Google SecOps. Es ist kein Dateiexport oder zusätzlicher Agent erforderlich, aber die Ereignisse werden vom generischen Windows-Ereignisprotokoll-Parser geparst.

Hinweis

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher oder Windows 10 oder höher mit konfigurierten AppLocker-Richtlinien
  • Administratorzugriff auf die Windows-Endpunkte
  • Wenn der Agent hinter einem Proxy ausgeführt wird, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Für Methode 1: einen Windows- oder Linux-Host für den Bindplane-Agent, den die Endpunkte über den TCP-Port 514 erreichen können

Google SecOps-Anmeldedaten für den Bindplane-Agenten abrufen

Wählen Sie eine der folgenden Methoden aus, um den Bindplane-Agent bei Google SecOps zu authentifizieren:

  • Neue Deployments: Verwenden Sie die Chronicle API (Option 1).
  • Legacy-Bereitstellungen: Verwenden Sie die Authentifizierungsdatei für die Datenaufnahme (Option 2) weiter, bis die Ingestion API am 20. Juli 2027 eingestellt wird.
  1. Melden Sie sich in der Google Cloud Console an und wählen Sie das Google Cloud -Projekt aus, das mit Ihrer Google SecOps-Instanz verknüpft ist.
  2. Rufen Sie IAM und Verwaltung > Dienstkonten auf.
  3. Klicken Sie auf Dienstkonto erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B. bindplane-ingest.
    • Dienstkontobeschreibung: Geben Sie eine Beschreibung ein (z. B. Bindplane agent log ingestion).
  5. Klicken Sie auf Erstellen und fortfahren.
  6. Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Rolle auswählen und wählen Sie Chronicle Editor aus.
  7. Klicken Sie auf Weiter und dann auf Fertig.
  8. Klicken Sie auf das von Ihnen erstellte Dienstkonto und rufen Sie den Tab Schlüssel auf.
  9. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  10. Wählen Sie JSON aus und klicken Sie auf Erstellen. Die Schlüsseldatei wird auf Ihren Computer heruntergeladen.
  11. Speichern Sie die Schlüsseldatei als ingestion-auth.json im Bindplane-Collector-Verzeichnis (/opt/observiq-otel-collector/ingestion-auth.json unter Linux oder C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json unter Windows) oder aktualisieren Sie creds_file_path in config.yaml, sodass der Pfad mit dem Pfad übereinstimmt, unter dem Sie die Datei speichern.
  12. Rufen Sie IAM und Verwaltung > Einstellungen auf und kopieren Sie die Projektnummer. Sie benötigen sie für die Exporter-Konfiguration.

Option 2: Authentifizierungsdatei für die Aufnahme herunterladen (Legacy)

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Erfassungs-Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Datenaufnahme herunter.
  4. Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert werden soll.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profil auf.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organization Details (Organisationsdetails).

Bindplane-Agent installieren

Installieren Sie den Bindplane-Agent gemäß der folgenden Anleitung. Installieren Sie ihn für Methode 1 auf dem Host, der Syslog von NXLog empfängt. Bei Methode 2 installieren Sie ihn auf jedem Endpunkt, dessen AppLocker-Ereignisse Sie erfassen möchten.

Windows-Installation

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Warte, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sc query observiq-otel-collector
    

    Der Dienst sollte als RUNNING angezeigt werden.

Linux-Installation

  1. Öffnen Sie ein Terminal mit Root- oder sudo-Berechtigungen.
  2. Führen Sie dazu diesen Befehl aus:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Zusätzliche Installationsressourcen

Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agenten.

Methode 1: NXLog-Weiterleitung an Bindplane-Agent

Bindplane-Agent für den Empfang von Syslog-Daten und das Senden an Google SecOps konfigurieren

  1. Öffnen Sie die Konfigurationsdatei auf dem Bindplane-Agent-Host:

    Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

    Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  2. Ersetzen Sie den gesamten Inhalt von config.yaml durch die folgende Konfiguration:

    receivers:
      tcplog/applocker:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/windows_applocker:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/path/to/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: WINDOWS_APPLOCKER
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/applocker_to_chronicle:
          receivers:
            - tcplog/applocker
          exporters:
            - chronicle/windows_applocker
    
  3. Ersetzen Sie die folgenden Platzhalter:

    • listen_address: Die IP-Adresse und der Port, auf dem der Agent überwacht. 0.0.0.0:514 akzeptiert Syslog an jeder Schnittstelle über den TCP-Port 514. Verwenden Sie unter Linux einen Port über 1024, wenn der Agent nicht als Root ausgeführt wird, und öffnen Sie den Port in der Host-Firewall.
    • creds_file_path: Vollständiger Pfad zur JSON-Schlüsseldatei des Dienstkontos (Option 1):
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
    • <customer_id>: Kunden-ID aus dem Abschnitt „Google SecOps-Kundennummer abrufen“
    • location: Ersetzen Sie <LOCATION> durch die Region Ihrer Google SecOps-Instanz (z. B. us, europe oder asia-southeast1). Der Exporteur stellt diesem Wert das Präfix chronicle.googleapis.com voran. Eine vollständige Liste finden Sie unter Regionale Endpunkte.
    • project: Ersetzen Sie <PROJECT_NUMBER> durch die Projektnummer aus IAM & Verwaltung > Einstellungen.
    • endpoint: Behalten Sie die Einstellung chronicle.googleapis.com bei.
    • ingestion_labels: Optionale Labels im YAML-Format (z. B. env: production)
  4. Speichern Sie die Datei.

  5. Starten Sie den Bindplane-Agent neu:

    Windows:

    net stop observiq-otel-collector && net start observiq-otel-collector
    

    Linux:

    sudo systemctl restart observiq-otel-collector
    

Legacy-Ingestion-API-Exporter

  • Wenn Sie die Authentifizierungsdatei für die Datenaufnahme aus Option 2 verwenden, ersetzen Sie den Block exporters durch Folgendes. Legen Sie für creds_file_path den Pfad zur Authentifizierungsdatei für die Datenaufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Sie malachiteingestion-pa.googleapis.com durch Ihren regionalen Endpunkt (z. B. europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/windows_applocker:
        compression: gzip
        creds_file_path: '/path/to/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: WINDOWS_APPLOCKER
        raw_log_field: body
        ingestion_labels:
          env: production
    

NXLog auf den Windows-Endpunkten installieren

  1. Laden Sie den NXLog-Agent (früher NXLog Enterprise Edition) für Windows von der NXLog-Website herunter.
  2. Führen Sie das Installationsprogramm auf jedem Endpunkt aus, dessen AppLocker-Ereignisse Sie erfassen möchten, und akzeptieren Sie das Standardinstallationsverzeichnis (C:\Program Files\nxlog).

NXLog so konfigurieren, dass AppLocker-Ereignisse weitergeleitet werden

  1. Öffnen Sie den Datei-Explorer und rufen Sie C:\Program Files\nxlog\conf auf.
  2. Öffnen Sie die Datei nxlog.conf in Notepad oder einem Texteditor mit Administratorberechtigungen.
  3. Ersetzen Sie den gesamten Inhalt durch die folgende Konfiguration:

    define ROOT C:\Program Files\nxlog
    define LOGDIR %ROOT%\data
    define LOGFILE %LOGDIR%\nxlog.log
    
    Moduledir %ROOT%\modules
    CacheDir %ROOT%\data
    Pidfile %ROOT%\data\nxlog.pid
    SpoolDir %ROOT%\data
    LogFile %LOGFILE%
    
    <Extension json>
        Module      xm_json
    </Extension>
    
    <Extension xml>
        Module      xm_xml
    </Extension>
    
    <Extension syslog>
        Module      xm_syslog
    </Extension>
    
    <Input applocker_events>
        Module      im_msvistalog
        <QueryXML>
            <QueryList>
                <Query Id="0">
                    <Select Path="Microsoft-Windows-AppLocker/EXE and DLL">*</Select>
                    <Select Path="Microsoft-Windows-AppLocker/MSI and Script">*</Select>
                    <Select Path="Microsoft-Windows-AppLocker/Packaged app-Deployment">*</Select>
                    <Select Path="Microsoft-Windows-AppLocker/Packaged app-Execution">*</Select>
                </Query>
            </QueryList>
        </QueryXML>
        <Exec>
            # AppLocker keeps the rule and file details in the UserData part of the
            # event. parse_xml() turns them into RuleAndFileData.* fields, which
            # the parser expects.
            if $UserData parse_xml($UserData);
            $Message = to_json();
            to_syslog_bsd();
        </Exec>
    </Input>
    
    <Output bindplane_syslog>
        Module      om_tcp
        Host        <BINDPLANE_AGENT_IP>
        Port        514
    </Output>
    
    <Route applocker_to_bindplane>
        Path        applocker_events => bindplane_syslog
    </Route>
    
  4. Ersetzen Sie <BINDPLANE_AGENT_IP> durch die IP-Adresse des Bindplane-Agent-Hosts und 514 durch den Port aus listen_address, falls Sie ihn geändert haben.

  5. Speichern Sie die Datei nxlog.conf.

NXLog-Dienst neu starten

  1. Öffnen Sie Dienste, indem Sie Win+R drücken, services.msc eingeben und die Eingabetaste drücken.
  2. Suchen Sie in der Liste der Dienste nach nxlog.
  3. Klicken Sie mit der rechten Maustaste auf nxlog und wählen Sie Neu starten aus.
  4. Prüfen Sie, ob der Dienststatus Wird ausgeführt lautet.
  • Alternativ können Sie NXLog über die Eingabeaufforderung als Administrator neu starten:

    net stop nxlog && net start nxlog
    

Prüfen, ob AppLocker-Ereignisse weitergeleitet werden

  1. Öffnen Sie die Ereignisanzeige auf dem Windows-Endpunkt.
  2. Gehen Sie zu Anwendungs- und Dienstprotokolle > Microsoft > Windows > AppLocker > EXE und DLL.
  3. Prüfen Sie, ob AppLocker-Ereignisse (z. B. die Ereignis-IDs 8002, 8003 oder 8004) vorhanden sind. Wenn das Protokoll leer ist, prüfen Sie, ob eine AppLocker-Richtlinie angewendet wird und der Dienst Anwendungsidentität ausgeführt wird.
  4. Prüfen Sie die NXLog-Protokolldatei unter C:\Program Files\nxlog\data\nxlog.log auf Fehler oder Warnungen.
  5. Prüfen Sie auf dem Bindplane-Agent-Host das Agent-Log auf Fehler:

    Windows:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

    Linux:

    sudo tail -f /opt/observiq-otel-collector/log/collector.log
    

Methode 2: Bindplane-Agent liest direkt aus dem Kanal

Verwenden Sie diese Methode, wenn Sie NXLog nicht bereitstellen möchten. Der auf jedem Endpunkt installierte Bindplane-Agent liest die AppLocker-Kanäle direkt aus dem Windows-Ereignisprotokoll und sendet die Rohereignis-XML unter dem Logtyp WINEVTLOG an Google SecOps.

Bindplane-Agent zum Lesen der AppLocker-Kanäle konfigurieren

  1. Öffnen Sie auf dem Windows-Endpunkt die Konfigurationsdatei:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    
  2. Ersetzen Sie den gesamten Inhalt von config.yaml durch die folgende Konfiguration:

    receivers:
      windowseventlog/applocker_exe_dll:
        channel: Microsoft-Windows-AppLocker/EXE and DLL
        raw: true
        max_reads: 100
        poll_interval: 5s
        start_at: end
    
      windowseventlog/applocker_msi_script:
        channel: Microsoft-Windows-AppLocker/MSI and Script
        raw: true
        max_reads: 100
        poll_interval: 5s
        start_at: end
    
      windowseventlog/applocker_packaged_deployment:
        channel: Microsoft-Windows-AppLocker/Packaged app-Deployment
        raw: true
        max_reads: 100
        poll_interval: 5s
        start_at: end
    
      windowseventlog/applocker_packaged_execution:
        channel: Microsoft-Windows-AppLocker/Packaged app-Execution
        raw: true
        max_reads: 100
        poll_interval: 5s
        start_at: end
    
    exporters:
      chronicle/winevtlog:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: WINEVTLOG
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/applocker_to_chronicle:
          receivers:
            - windowseventlog/applocker_exe_dll
            - windowseventlog/applocker_msi_script
            - windowseventlog/applocker_packaged_deployment
            - windowseventlog/applocker_packaged_execution
          exporters:
            - chronicle/winevtlog
    
  3. Ersetzen Sie die folgenden Platzhalter:

    • <customer_id>: Kundennummer aus dem Abschnitt „Google SecOps-Kundennummer abrufen“
    • endpoint: Regionale Endpunkt-URL, wie in Methode 1 aufgeführt
    • ingestion_labels: Optionale Labels im YAML-Format (z. B. env: production)
    • start_at: Legen Sie end fest, um nur neue Ereignisse zu erfassen, oder beginning, um auch die Ereignisse zu erfassen, die sich bereits in den Kanälen befinden.
  4. Speichern Sie die Datei.

  5. Starten Sie den Bindplane-Agent neu:

    net stop observiq-otel-collector && net start observiq-otel-collector
    
  6. Prüfen Sie, ob der Dienst ausgeführt wird, und sehen Sie im Agent-Log nach Fehlern:

    sc query observiq-otel-collector
    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Exporter für die Legacy Ingestion API

  • Wenn Sie die Datei zur Authentifizierung bei der Aufnahme aus Option 2 verwenden, ersetzen Sie den Block exporters durch Folgendes. Legen Sie creds_file_path auf den Pfad zur Datei für die Authentifizierung bei der Aufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Sie malachiteingestion-pa.googleapis.com durch Ihren regionalen Endpunkt (z. B. europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/winevtlog:
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: WINEVTLOG
        raw_log_field: body
        ingestion_labels:
          env: production
    

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
syslog_ts metadata.event_timestamp Geparst als yyyy-MM-ddTHH:mm:ss Z
event_type metadata.event_type Direkt zugeordnet
EventID metadata.product_event_type Direkt zugeordnet
sourceName metadata.product_name Direkt zugeordnet
SourceModuleType observer.application Umbenannt/zugeordnet
Domain principal.administrative_domain Umbenannt/zugeordnet
Hostname principal.hostname Umbenannt/zugeordnet
principal_ip1 principal.ip Zusammengeführt
roles principal.user.attribute.roles Zusammengeführt
AccountName principal.user.userid Umbenannt/zugeordnet
EventID security_result.about.labels Zugeordnet: 8002,8005, 8006, 8020 → ssdl
ssdl security_result.about.labels Zusammengeführt
message1 security_result.action Zugeordnet: allowed to run → security_action
security_action security_result.action Zusammengeführt
message1 security_result.description Direkt zugeordnet
RuleAndFileData.RuleId security_result.rule_id Umbenannt/zugeordnet
EventID security_result.rule_name Direkt zugeordnet
RuleAndFileData.RuleName security_result.rule_name Umbenannt/zugeordnet
EventType security_result.severity Zugeordnet: INFO → INFORMATIONAL, WARNING → LOW
RuleAndFileData.PolicyName security_result.summary Umbenannt/zugeordnet
ThreadID security_result.threat_id Umbenannt/zugeordnet
RuleAndFileData.FullFilePath target.process.file.full_path Umbenannt/zugeordnet
filePath target.process.file.full_path Umbenannt/zugeordnet
ProcessID target.process.pid Direkt zugeordnet
RuleAndFileData.TargetProcessId target.process.pid Umbenannt/zugeordnet
ProviderGuid target.resource.product_object_id Umbenannt/zugeordnet
UserID target.user.userid Umbenannt/zugeordnet
– metadata.vendor_name Konstante: Microsoft
– security_result.severity Konstante: INFORMATIONAL

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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