PowerShell: Effektive Überwachungsrichtlinie ermitteln – Teil 1

Die gerade wirksame Überwachungsrichtlinie auf einem Windows-Rechner zu kennen ist wichtig – sei es für die Überprüfung der CIS-Konformität oder weil man bestimmte Audit Logs sammeln will und sicher gehen möchte, dass sie auch tatsächlich generiert werden. Microsoft hält dafür seit jeher das Kommandozeilenprogramm „auditpol.exe“ vor, welches sogar mit dem Zusatz-Parameter „/r“ dazu bewegt werden kann, Ausgabe im CSV-Format zu generieren. Nur leider hat die Sache einen Haken:

Der Klassiker – die Ausgabe ist abhängig von der Spracheinstellung! Besonders perfide: Die Kategorie- bzw. Subkategorienamen sind auf modernen Windows-Versionen sogar schon in Englisch, die Subkategorie ist zusätzlich als allgemeingültige GUID abgebildet, doch der eingestellte Wert ist leider immer sprachabhängig. Ein anderer Ansatz muss her.

.NET ist für diese Funktion leider keine direkte Hilfe, die Windows-API, die auditpol.exe aufruft, muss also direkt angesprochen werden. Für die Aufgabe, einfach die effektive Einstellung zu ermitteln, genügen uns zwei Funktionen: AuditQuerySystemPolicy und AuditEnumerateSubCategories. Nach einigem Fummeln kommen wir also zum folgenden Code:

Dieser gibt das absolut notwendige Minimum: die GUID und den eingestellten Wert: erstes Byte = Erfolg, zweites Byte  = Fehler, somit

  • 0 = keine Überwachung
  • 1 = Erfolg
  • 2 = Fehler
  • 3 = Erfolg und Fehler

Zusätzlich ermitteln wir noch den aus der Gruppenrichtlinie gesetzten Registry-Wert, der die Maschine zwingt, die „modernen“ Subkategorien statt der alten, einfachen Überwachungsrichtlinie zu verwenden.

Happy Audtitng! Im Teil 2 schauen wir uns an, wie das ganze remote aussieht.

2 Trackbacks / Pingbacks

  1. PowerShell: Effektive Überwachungsrichtlinie ermitteln – Teil 2 – Evgenij Smirnov – IT Pro aus Berlin
  2. PowerShell: Effektive Überwachungsrichtlinie ermitteln – Teil 3 – Evgenij Smirnov – IT Pro aus Berlin

Kommentare sind geschlossen.