Wie kann die Gruppenrichtlinieneinstellung "Kennwortverlauf erzwingen" programmgesteuert abgerufen werden?
Wie kann ich programmatisch das @ bekommPasswortverlauf erzwingen Gruppenrichtlinieneinstellung?
ForschungsaufwandSie 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.
NetValidatePasswordPolicyWindows bietet einNetValidatePasswordPolicy
API das ermöglicht es ihm, Ihr Passwort für Dinge wie zu validieren:
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,
a
b
c
d
...v
w
x
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/tRe9V5t5FIdfA0axpDSQuNN
a
b
c
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?