So aktivieren und exportieren Sie PowerShell Script Block Logs

So aktivieren und exportieren Sie PowerShell Script Block Logs

SOC Prime Team
SOC Prime Team linkedin icon Folgen

PowerShell-Skriptblockprotokolle sind vorhanden in Anwendungen und Dienstprotokolle → Microsoft → Windows → PowerShell → Operational, als Ereignis 4104. Sie sind nur vollständig, wenn die Protokollierung von Skriptblöcken aktiviert ist. Um sie zu exportieren:

wevtutil epl "Microsoft-Windows-PowerShell/Operational" C:logspowershell.evtx

PowerShell 7 ist ein separates Produkt mit einem separaten Kanal, PowerShellCore/Operational, und einer eigenen Richtlinieneinstellung.

Wenn ein Angreifer auf einen Windows-Rechner zugegriffen hat, ist PowerShell wahrscheinlich involviert. Die Protokollierung von Skriptblöcken zeichnet den tatsächlich ausgeführten Code auf, oft nachdem die Verschleierungsschichten entfernt wurden. Prime Core verfügt über 663 Erkennungsregeln für PowerShell-Protokolle, die 417 MITRE ATT&CK-Techniken zugeordnet sind. Sie decken böswillige PowerShell-Nutzung (T1059.001), Verschleierung (T1027) und Download-Halterungen ab, die Tools anziehen (T1105).

Kostenlos starten

Bevor Sie beginnen

Ist die Protokollierung von Skriptblöcken aktiviert?

reg query "HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging"

EnableScriptBlockLogging auf 0x1 bedeutet ja. Wenn der Schlüssel nicht existiert, ist er aus. Dennoch protokolliert Windows PowerShell 5.1 weiterhin Skriptblöcke, die es als verdächtig erachtet, als 4104-Ereignisse auf Warnungsebene. Sie können also einige Ereignisse finden. Verwechseln Sie sie jedoch nicht mit dem Gesamtbild.

Das Einschalten hilft ab sofort und nicht für bereits Geschehenes. Verwenden Sie die Gruppenrichtlinieneinstellung Administrative Vorlagen → Windows-Komponenten → Windows PowerShell → PowerShell-Skriptblockprotokollierung aktivieren, oder setzen Sie den Registrierungswert direkt:

reg add "HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f

PowerShell 7 liest seinen eigenen Richtlinien-Schlüssel unter HKLMSOFTWAREPoliciesMicrosoftPowerShellCore. Wenn es aus einem Zip und nicht dem MSI installiert wurde, kann sein Ereigniskanal nicht registriert sein, bis Sie RegisterManifest.ps1 von $PSHOME ausführen.

Erwarten Sie Volumen. Jedes Skript und Modul, das ausgeführt wird, endet im Protokoll. Erhöhen Sie die maximale Größe des Kanals, oder Sie behalten nur wenige Stunden.

Erwarten Sie Geheimnisse. Administrator-Skripte enthalten manchmal Passwörter und API-Schlüssel im Klartext, und die Protokollierung von Skriptblöcken zeichnet diese originalgetreu auf. Beachten Sie dies, bevor diese Datei irgendwohin gelangt, und lesen Sie den Abschnitt LogTotal unten.

Exportieren Sie die Protokolle

Im Ereignisanzeige, Rechtsklick Operational unter PowerShell und wählen Sie Alle Ereignisse speichern unter… Von der Kommandozeile:

:: nur Skriptblöcke

wevtutil epl "Microsoft-Windows-PowerShell/Operational" C:logsps_4104.evtx /q:"*[System[(EventID=4104)]]"




:: PowerShell 7

wevtutil epl "PowerShellCore/Operational" C:logspwsh.evtx




:: das klassische "Windows PowerShell"-Protokoll: Engine-Startereignisse mit der Host-Befehlszeile

wevtutil epl "Windows PowerShell" C:logswindows_powershell.evtx

Das letzte ist leicht zu vergessen, aber es lohnt sich, es zu erfassen. Ereignis 400 protokolliert jeden Motorstart, einschließlich der Motorversion. Eine EngineVersion von 2.0 auf einem modernen System bedeutet normalerweise, dass jemand bewusst heruntergestuft hat, um die Protokollierung von Skriptblöcken zu umgehen.

Hochladen und Überprüfung in LogTotal

LogTotal liest EVTX nativ. Ein Punkt, den Sie vorher wissen sollten: LogTotal bereinigt EVTX-Dateien noch nicht. Mit PowerShell-Protokollen ist das mehr als üblich wichtig, wegen der oben erwähnten Geheimnisse. Verwenden Sie EVTX-Uploads frei für Testmaschinen. Für Produktionshosts holen Sie sich zuerst ein Ja von demjenigen, der für die Datenverarbeitung zuständig ist.

  1. Hochladen. Öffnen logtotal.com und ziehen Sie die Datei hinein.
  2. Überprüfen.

Wenn es falsch läuft

SymptomWahrscheinliche UrsacheFix
Keine 4104-Ereignisse überhauptScript-Block-Protokollierung ist aus und nichts sah verdächtig ausAktivieren Sie es für die Zukunft; überprüfen Sie das Windows PowerShell-Protokoll auf das, was Sie noch bekommen können
Nur eine Handvoll von 4104-Ereignissen, alle WarnungenProtokollierung ist aus; Sie sehen die automatische Protokollierung verdächtiger BlöckeDas gleiche wie oben
PowerShellCore/Operational wurde nicht gefundenPowerShell 7 ist nicht installiert oder sein Manifest ist nicht registriertFühren Sie RegisterManifest.ps1 von $PSHOME aus
4104-Text ist unlesbare GeheimschriftGeschütztes Ereignisprotokollieren ist aktiviertSie benötigen das Entschlüsslungszertifikat
Protokoll deckt nur ein paar Stunden abStandardgröße, hohes VolumenErhöhen Sie die maximale Größe des Kanals

FAQ

Erfasst die Protokollierung von Skriptblöcken verschleierten Code?

Größtenteils ja. Sie protokolliert Skriptblöcke, während sie kompiliert werden. Wenn verschleierter Code die nächste Stufe erstellt und ausführt, wird diese Stufe als eigener Block protokolliert, oft in lesbarer Form.

Was ist der Unterschied zur Transkription?

Transkription schreibt Textdateien des Sitzungsinput und -outputs in einen Ordner. Die Protokollierung von Skriptblöcken zeichnet den Code selbst im Ereignisprotokoll auf. Sie ergänzen sich und beide sind es wert, zu haben.

Treten Sie der Detection as Code-Plattform von SOC Prime bei um die Sichtbarkeit der für Ihr Unternehmen relevantesten Bedrohungen zu verbessern. Um Ihnen den Einstieg zu erleichtern und unmittelbaren Mehrwert zu erzielen, buchen Sie jetzt ein Treffen mit den Experten von SOC Prime.