Wie kann die Gruppenrichtlinieneinstellung "Kennwortverlauf erzwingen" programmgesteuert abgerufen werden?

Wie kann ich programmatisch das @ bekommPasswortverlauf erzwingen Gruppenrichtlinieneinstellung?

Forschungsaufwand

Sie finden die Gruppenrichtlinienoption unter:

** Computerkonfiguration \ Windows-Einstellungen \ Sicherheitseinstellungen \ Kontorichtlinien \ Kennwortrichtlinie **

Passwortverlauf erzwingen

Diese Sicherheitseinstellung bestimmt die Anzahl der eindeutigen neuen Kennwörter, die einem Benutzerkonto zugeordnet werden müssen, bevor ein altes Kennwort wiederverwendet werden kann. Der Wert muss zwischen 0 und 24 Passwörtern liegen.

Mit dieser Richtlinie können Administratoren die Sicherheit verbessern, indem sie sicherstellen, dass alte Kennwörter nicht ständig wiederverwendet werden.

Wie alle Gruppenrichtlinienoptionen wird es in der Registrierung gespeichert. Leider ist es an einem undokumentierten Speicherort in der Registrierung gespeichert:

HKEY_LOCAL_MACHINE \ SAM \ SAM \ Domains \ Account \ F

In einem (nundokumentiertes binäres Blob-Format.

Dort ist eine WMI Klasse RSOP_SecuritySettingBoolean, aber ohne Kontext, es ist nur ein Name, der da draußen hängt - ich habe keine Ahnung, wie man COM / native liest.

NetValidatePasswordPolicy

Windows bietet einNetValidatePasswordPolicy API das ermöglicht es ihm, Ihr Passwort für Dinge wie zu validieren:

zu viele schlechte VersucheAccount Lockoutsperre automatische rücksetzungmindestes Kennwortaltermaximales Kennwortalter Passwortwiederverwendung

und all diese Aktionen werden gemäß der auf dem Computer geltenden Gruppenrichtlinie ausgeführt. Und alles funktioniert super, außer im Passwortverlauf.

Die Funktion erfordert die Übergabe einer Liste von Passwort-Hashes,

$2a$14$mACnM5lzNigHMaf7O1py1OLCBgGL4tYUF0N/4rS9CwDsI7ytwL4D6$2a$14$mACnM5lzNigHMaf7O1py1O3vlf6.BA8k8x3IoJ.Tq3IB/2e7g61Km$2a$12$.TtQJ4Jr6isd4Hp.mVfZeuh6Gws4rOQ/vdBczhDx.19NFK0Y84Dle$2a$12$Ro0CUfOqk6cXEKf3dyaM7OhSCvnwM9s4wIX9JeLapehKK5YdLxKcm

sowie der Hash des neuen Kandidatenpassworts,

$2a$10$1JsBs47iuMNsV166PKV.u.56hlT5/tRe9V5t5FIdfA0axpDSQuNN

Dies wird dazu führen, NetValidatePasswordPolicy, um zu überprüfen, ob Ihr aktueller Hash mit einem der vorhandenen Hashes übereinstimmt. Leider funktioniert das gesamte Konzept der Überprüfung früherer Passwort-Hashes nur, wenn Sie einen schwachen Passwort-Algorithmus verwenden wie PBKDF2, das Windows verwendet).

Weil ich ein modernes,teue, gesalze, Passwort-Hashing-Algorithmus (BCrypt / SCrypt), ein Hash kann nicht allein aus einem Passwort deterministisch generiert werden - ich kann die alte Liste nicht einfach überprüfen. Ich müsste das neue Passwort des Benutzers erneut mit @ abgleichejede zuvor gespeichertes Salz.

nicht nur ist dies eine teure Operation; Es dauert möglicherweise 12 Sekunden, um alle 24 gespeicherten Hashes zu überprüfen.Ich weiß nicht, wann ich aufhören soll, da ich den Gruppenrichtlinienwert "Kennwortverlauf" nicht kenne (z. B. würde ich alle 24 gespeicherten Hashes überprüfen, wenn ich nur Null überprüfen muss).

Ich habe überlegt, @ anzurufNetValidatePasswordPolicy mit einer Dummy-Liste von 24 gespeicherten Passwort-Hashes,

abcd ...vwx

Die API teilt mir dann mit, dass das Kennwort in @ nicht mit dem übereinstimmn Geschichte. Die API ist jedoch auch so konzipiert, dass Sie zurückerhalten, was Sie aufbewahren müssen. Eskönnt dann zurück:

$2a$10$1JsBs47iuMNsV166PKV.u.56hlT5/tRe9V5t5FIdfA0axpDSQuNNabc

nd daraus könnte ich schließen, dass das Passwort histo, ry Länge ist vier.

Aber ich bin noch nicht dort angekommen.

Ich bin drei Tage in diesem und die Geduld zu verlieren.

Warum hat Microsoft die Gruppenrichtlinien verschleiert? Warum hat Microsoft es nicht zugelassen, dass Benutzer es lesen? warum ist es undokumentiert? Wie bekomme ich es trotzdem?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage