Area41 2024 - Ein Rückblick
Michael Schneider
So funktioniert die lokale Adminpasswortverwaltung mit LAPS
Windows LAPS ist nativ im Betriebssystem integriert und muss nicht mehr über ein MSI-Paket installiert werden. Updates werden so über den gewohnten Update-Kanal verteilt. Neu unterstützt LAPS verschlüsselte Passwörter und die Nutzung des Azure Active Directory (AAD). Passwörter im AAD werden über Microsoft Graph ausgelesen und die Zugriffsrechte mit Azure-Role-Based-Access-Control-Richtlinien (Azure RBAC) verwaltet. Die Passwortverwaltung erfolgt über das Azure Portal und die Richtlinien werden mittels Intune verteilt. Am 21. April 2023 wurde die AAD-Unterstützung für LAPS als Public Preview freigegeben.
Im Artikel beschreiben wir die neuen Funktionen der Active-Directory-Integration, die Verschlüsselung der Passworte, die Nutzung von LAPS und worauf bei der Migration von Legacy LAPS geachtet werden muss. Die Nutzung von LAPS in Azure Active Directory ist nicht Bestandteil des Artikels.
Für die Nutzung in einer Active-Directory-Infrastruktur entwickelte Microsoft neue Funktionen. Neu wird der Benutzername und das Passwort in einem Attribut im AD-Objekt gespeichert. Das Attribut kann nun auch verschlüsselt hinterlegt werden, dies war eine der meistgefragten Funktion in Legacy LAPS. Es ist zudem möglich eine Passwort-History zu konfigurieren, um alte Passwörter abzufragen. Dies ist unter anderem nützlich, wenn ein System aus einem Backup wiederhergestellt wurde. Wenn ein LAPS-Account auf einem System benutzt wurde, kann das Passwort danach automatisch rotiert werden, um das Risiko zu minimieren, falls das Passwort in dem Einsatz kompromitiert wurde.
Neben der nativen Integration ins Betriebssystem wurden neue Gruppenrichtlinien-Einstellungen sowie die Integration in die AD-Management-Tools implementiert. LAPS verfügt neu über einen eigenen Event-Log-Channel. Neben der Verwaltung von lokalen Administratorenaccounts kann LAPS auch zur Rotation der Passwörter für Directory Services Restore Mode (DSRM) verwendet werden.
Eine Demonstration von LAPS wird im Video Managing local admin account passwords in AD and Azure AD von Microsofts Jay Simmons gezeigt.
Als Voraussetzung für Windows LAPS gilt Windows 10, 11 und Windows Server 2019, 2022 sowie der Domain Functional Level (DFL) Windows Server 2016
und die Installation des Security Updates April 2023.
In Legacy LAPS wurde das Passwort im AD-Objekt unter dem Attribut ms-Mcs-AdmPwd
unverschlüsselt gespeichert. Durch das Setzen einer ACL konnte der Zugriff auf dieses Attribut auf berechtige Benutzer und Gruppen eingeschränkt werden. In der neuen Version implementierte Microsoft eine Verschlüsselung für das Speichern der Passwörter.
In der Dokumentation Key concepts in Windows LAPS ist die Verschlüsselungsfunktion nur oberflächlich beschrieben. Es wird die Cryptography API: Next Generation Data Protection API (CNG DPAPI) eingesetzt, LAPS unterstützt dabei nur die Verschlüsselung gegen einen AD-Security-Principal (Benutzer oder Gruppe) und basiert auf dem Verfahren AES-256. Der Principal kann mittels GPO definiert werden, standardmässig handelt es sich um die Gruppe Domain Admins
. Der Verschlüsselungsvorgang findet auf dem Client statt, in das Attribut msLAPS-EncryptedPassword
wird direkt der verschlüsselte Blob gespeichert.
Das Schlüsselmaterial wird gemäss Microsoft auf Domain Controllern gespeichert und über das AD repliziert. Unsere Annahme ist, das Microsoft für Windows LAPS auf das gleiche Prinzip wie für Managed Services Accounts (gMSA) setzt und dazu Key Distribution Services KDS Root Keys verwendet. Das Verfahren wird von Microsofts Windows und Authentication Spezialist Steve Syfuhs im Artikel How Managed Service Accounts in Active Directory Work ausführlich erklärt.
Jordan Borean, Senior Software Engineer bei Red Hat, arbeitet an einem Projekt zur Entschlüsselung von LAPS, was weitere Einblicke in die Funktionalität bringen kann. Seine Arbeit veröffentlicht er auf GitHub im Repository sansldap. Weitere Research wurde durch Adam Chester durchgeführt, er veröffentlichte zudem einen Proof of Concept auf GitHub.
Die Einführung von LAPS wird von Microsoft im Artikel Get started with Windows LAPS and Windows Server Active Directory dokumentiert.
Die Grundvoraussetzung ist die Installation des Security Updates April 2023. Da Windows LAPS neue AD-Attribute verwendet, ist eine Schema-Erweiterung notwendig. Dazu kann das PowerShell-Cmdlet Update-LapsADSchema
verwendet werden. Die Schema-Erweiterung ist unter Windows LAPS schema extensions reference dokumentiert.
Für die Ausrollung von LAPS wird eine Organizational Unit (OU) definiert und den LAPS-Clients muss die Berechtigung zur Selbstverwaltung ihres AD-Objekts erteilt werden. Dazu steht das Cmdlet Set-LapsADComputerSelfPermission
zur Verfügung.
PS C:\Windows\system32> Set-LapsADComputerSelfPermission -Identity 'OU=t2_Workstations,OU=Systems,OU=scip-red.ch,DC=lab,DC=scip-red,DC=ch' Name DistinguishedName ---- ----------------- t2_Workstations OU=t2_Workstations,OU=Systems,OU=scip-red.ch,DC=lab,DC=scip-red,DC=ch
Die ACL für den Zugriff auf die LAPS-Attribute ist essentiell für die Sicherheit von LAPS. Mit dem Cmdlet Find-LapsADExtendedRights
kann geprüft werden, wer Zugriff auf die Attribute hat. Standardmässig handelt es sich um die Gruppe Domain Admins.
PS C:\Windows\system32> Find-LapsADExtendedRights -Identity 'OU=t2_Workstations,OU=Systems,OU=scip-red.ch,DC=lab,DC=scip-red,DC=ch' ObjectDN ExtendedRightHolders -------- -------------------- OU=t2_Workstations,OU=Systems,OU=scip-red.ch,DC=lab,DC=scip-red,DC=ch {NT AUTHORITY\SYSTEM, LAB\Domain Admins}
Nach der Installation und der Rechtevergabe muss eine Richtlinie erstellt werden. Die Einstellungen sind neu unter Administrative Templates\System\LAPS zu finden. Als erstes wird mit der Einstellung Configure password backup directory
definiert, wo die Passwörter gespeichert werden, im AD oder AAD – beides ist nicht möglich.
Weitere Einstellungen sind die Verwendung der Passwortverschlüsselung, die Definition des Security Principals, welcher Passworte entschlüsseln darf, der Name des zu verwaltenden Benutzers, Einstellungen zur Passwortkomplexität und Länge der Historie. Die Gruppenrichtlinieneinstellungen sind unter Configure policy settings for Windows LAPS dokumentiert.
Im ersten Schritt wurde LAPS aktiviert und die Verschlüsselung bewusst deaktiviert. Auf dem Client wurde die Richtlinie ausgerollt und das erste LAPS-Passwort gesetzt. Der Benutzer hat die LAPS-Zugriffsrechte und kann über das Cmdlet Get-LapsADPassword
das Passwort auslesen. Mit dem Parameter AsPlainText
wird das Passwort im Klartext zurückgegeben, standardmässig wird es als Secure String ausgegeben.
PS C:\> Get-LapsADPassword -Identity client01 -AsPlainText ComputerName : CLIENT01 DistinguishedName : CN=CLIENT01,OU=t2_Workstations,OU=Systems,OU=scip-red.ch,DC=lab,DC=scip-red,DC=ch Account : LapsAdmin Password : W1MH0B97/Aro&qpVR77;{Xj74Y9U}9o7 PasswordUpdateTime : 4/12/2023 2:18:40 PM ExpirationTimestamp : 5/12/2023 2:18:40 PM Source : CleartextPassword DecryptionStatus : NotApplicable AuthorizedDecryptor : NotApplicable
Im AD sind für den Client nun die Attribute für das Ablaufdatum und die Zugangsdaten hinterlegt:
msLAPS-Password: {"n":"LapsAdmin","t":"1d96d38ea49092f","p":"W1MH0B97/Aro&qpVR77;{Xj74Y9U}9o7"}; msLAPS-PasswordExpirationTime: 5/12/2023 2:18:40 PM W. Europe Daylight Time;
Wie erwähnt ist nun auch der Benutzername gespeichert. Das Passwort ist im Attribut msLAPS-Password
im Klartext ersichtlich. Nun wird die Richtline angepasst, dass das Passwort verschlüsselt wird und nur für den Security Principal LAB\laps_admins
entschlüsselbar sein soll. Bei der Abfrage mittels PowerShell ist nun die Quelle auf EncryptedPassword
gesetzt.
PS C:\> Get-LapsADPassword -Identity client01 -AsPlainText ComputerName : CLIENT01 DistinguishedName : CN=CLIENT01,OU=t2_Workstations,OU=Systems,OU=scip-red.ch,DC=lab,DC=scip-red,DC=ch Account : LapsAdmin Password : h460}65,O02wI[}9hv05$#!Z]1/DvN5] PasswordUpdateTime : 4/12/2023 2:20:59 PM ExpirationTimestamp : 5/12/2023 2:20:59 PM Source : EncryptedPassword DecryptionStatus : Success AuthorizedDecryptor : LAB\laps_admins
Im AD-Objekt selbst wurde das Attribut msLAPS-Password
entfernt und durch msLAPS-EncryptedPassword
ersetzt. In diesem Attribut wird der verschlüsselte Blob gespeichert.
msLAPS-EncryptedPassword: <ldp: Binary blob 1312 bytes>; msLAPS-EncryptedPasswordHistory: <ldp: Binary blob 1312 bytes>; msLAPS-PasswordExpirationTime: 5/12/2023 2:20:59 PM W. Europe Daylight Time;
Die Gruppe LAB\laps_admins
hat das Recht das Passwort zu entschlüsseln. In diesem Beispiel ist die Gruppe Domain Admins
nicht Mitglied dieser Gruppe. Daher ist es auch nicht möglich als Domänenadministrator das Passwort zu entschlüsseln:
PS C:\Windows\system32> Get-LapsADPassword -Identity client01 -AsPlainText ComputerName : CLIENT01 DistinguishedName : CN=CLIENT01,OU=t2_Workstations,OU=Systems,OU=scip-red.ch,DC=lab,DC=scip-red,DC=ch Account : Password : PasswordUpdateTime : 4/12/2023 2:20:59 PM ExpirationTimestamp : 5/12/2023 2:20:59 PM Source : EncryptedPassword DecryptionStatus : Unauthorized AuthorizedDecryptor : LAB\laps_admins
Die Entschlüsselung schlägt fehlt und der Status wird als Unauthorized zurückgegeben. Mit der Definition des Security Principals für die Entschlüsselung des Passworts kann dementsprechend eine weitere Sicherheitsschicht implementiert werden.
Die Migration von Legacy LAPS ist zum Zeitpunkt der Veröffentlichung noch nicht dokumentiert. In einem Kommentar zur Publikationsmeldung beschreibt Jay Simmons das Verfahren wie folgt, wenn Legacy LAPS mit einem zusätzlichen lokalen Account im Einsatz ist:
Falls LAPS für den Standard-Administratoraccount (RID 500) verwendet wird, ist ein Parallelbetrieb nicht möglich. Daher empfehlt Jay Simmons Legacy LAPS CSE auf den Clients zuerst zu deinstallieren und dann Windows LAPS auszurollen, eine Übergangsperiode ist nicht möglich.
Mit der neuen Version von LAPS hat Microsoft neue Funktionen eingeführt und den Kritikpunkt der fehlenden Verschlüsselung ausgeräumt. Nun ist es möglich mittels Gruppenrichtlinien die Verschlüsselung zu aktivieren und festzulegen, welcher Benutzer oder welche Gruppe ein Passwort entschlüsseln darf. Erlangt jemand (unbefugt) Zugriff auf das LAPS-AD-Attribut, hat aber kein Recht den Inhalt zu entschlüsseln, bringt der Zugriff alleine nichts.
Durch die native Integration ist die Handhabung von LAPS noch einfacher geworden und die Unterstützung für Azure Active Directory gibt Cloud-only-Infrastrukturen die Möglichkeit zur Verwaltung von lokalen Administratorenaccounts. LAPS bietet daher eine einfache Methode zur automatisierten Verwaltung des Passworts des lokalen Administratorenkontos und sollte in Windows-Infrastruktur genutzt werden.
Unsere Spezialisten kontaktieren Sie gern!
Michael Schneider
Michael Schneider
Michael Schneider
Michael Schneider
Unsere Spezialisten kontaktieren Sie gern!