Windows AppLocker-Logs erfassen
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_APPLOCKERan Google SecOps sendet. Dieses Format wird vomWINDOWS_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
WINEVTLOGan 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.
Option 1: Dienstkonto für die Chronicle API erstellen (empfohlen)
- 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.
- Rufen Sie IAM und Verwaltung > Dienstkonten auf.
- Klicken Sie auf Dienstkonto erstellen.
- 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).
- Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B.
- Klicken Sie auf Erstellen und fortfahren.
- Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Rolle auswählen und wählen Sie Chronicle Editor aus.
- Klicken Sie auf Weiter und dann auf Fertig.
- Klicken Sie auf das von Ihnen erstellte Dienstkonto und rufen Sie den Tab Schlüssel auf.
- Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
- Wählen Sie JSON aus und klicken Sie auf Erstellen. Die Schlüsseldatei wird auf Ihren Computer heruntergeladen.
- Speichern Sie die Schlüsseldatei als
ingestion-auth.jsonim Bindplane-Collector-Verzeichnis (/opt/observiq-otel-collector/ingestion-auth.jsonunter Linux oderC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonunter Windows) oder aktualisieren Siecreds_file_pathinconfig.yaml, sodass der Pfad mit dem Pfad übereinstimmt, unter dem Sie die Datei speichern. - 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)
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Erfassungs-Agents auf.
- Laden Sie die Authentifizierungsdatei für die Datenaufnahme herunter.
- Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert werden soll.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Profil auf.
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
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietWarte, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sc query observiq-otel-collectorDer Dienst sollte als RUNNING angezeigt werden.
Linux-Installation
- Öffnen Sie ein Terminal mit Root- oder sudo-Berechtigungen.
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
Ö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.yamlErsetzen Sie den gesamten Inhalt von
config.yamldurch 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_applockerErsetzen Sie die folgenden Platzhalter:
listen_address: Die IP-Adresse und der Port, auf dem der Agent überwacht.0.0.0.0:514akzeptiert 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
- Windows:
<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,europeoderasia-southeast1). Der Exporteur stellt diesem Wert das Präfixchronicle.googleapis.comvoran. 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 Einstellungchronicle.googleapis.combei.ingestion_labels: Optionale Labels im YAML-Format (z. B.env: production)
Speichern Sie die Datei.
Starten Sie den Bindplane-Agent neu:
Windows:
net stop observiq-otel-collector && net start observiq-otel-collectorLinux:
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
exportersdurch Folgendes. Legen Sie fürcreds_file_pathden Pfad zur Authentifizierungsdatei für die Datenaufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Siemalachiteingestion-pa.googleapis.comdurch 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
- Laden Sie den NXLog-Agent (früher NXLog Enterprise Edition) für Windows von der NXLog-Website herunter.
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
- Öffnen Sie den Datei-Explorer und rufen Sie
C:\Program Files\nxlog\confauf. - Öffnen Sie die Datei
nxlog.confin Notepad oder einem Texteditor mit Administratorberechtigungen. 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>Ersetzen Sie
<BINDPLANE_AGENT_IP>durch die IP-Adresse des Bindplane-Agent-Hosts und514durch den Port auslisten_address, falls Sie ihn geändert haben.Speichern Sie die Datei
nxlog.conf.
NXLog-Dienst neu starten
- Öffnen Sie Dienste, indem Sie
Win+Rdrücken,services.msceingeben und die Eingabetaste drücken. - Suchen Sie in der Liste der Dienste nach nxlog.
- Klicken Sie mit der rechten Maustaste auf nxlog und wählen Sie Neu starten aus.
- 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
- Öffnen Sie die Ereignisanzeige auf dem Windows-Endpunkt.
- Gehen Sie zu Anwendungs- und Dienstprotokolle > Microsoft > Windows > AppLocker > EXE und DLL.
- 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.
- Prüfen Sie die NXLog-Protokolldatei unter
C:\Program Files\nxlog\data\nxlog.logauf Fehler oder Warnungen. 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
Öffnen Sie auf dem Windows-Endpunkt die Konfigurationsdatei:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"Ersetzen Sie den gesamten Inhalt von
config.yamldurch 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/winevtlogErsetzen Sie die folgenden Platzhalter:
<customer_id>: Kundennummer aus dem Abschnitt „Google SecOps-Kundennummer abrufen“endpoint: Regionale Endpunkt-URL, wie in Methode 1 aufgeführtingestion_labels: Optionale Labels im YAML-Format (z. B.env: production)start_at: Legen Sieendfest, um nur neue Ereignisse zu erfassen, oderbeginning, um auch die Ereignisse zu erfassen, die sich bereits in den Kanälen befinden.
Speichern Sie die Datei.
Starten Sie den Bindplane-Agent neu:
net stop observiq-otel-collector && net start observiq-otel-collectorPrü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
exportersdurch Folgendes. Legen Siecreds_file_pathauf den Pfad zur Datei für die Authentifizierung bei der Aufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Siemalachiteingestion-pa.googleapis.comdurch 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