Windows LAPS - Lokale Adminpasswortverwaltung neu aufgelegt

Windows LAPS

Lokale Adminpasswortverwaltung neu aufgelegt

Michael Schneider
von Michael Schneider
am 18. Mai 2023
Lesezeit: 11 Minuten

Keypoints

So funktioniert die lokale Adminpasswortverwaltung mit LAPS

  • Windows LAPS ist der Nachfolger der bisherigen Lösung, nun Legacy LAPS genannt
  • Windows LAPS unterstützt Passwortverschlüsselung und Azure Active Directory
  • Passwörter werden im AD/AAD verschlüsselt gespeichert, können durch bestimmten Security Principal entschlüsselt werden
  • Neben der Passwortverschlüsselung gibt es auch eine Passwort-History und eine Integration in die Verwaltungsoberfläche
  • LAPS ist nun nativ im Betriebssystem integriert und ist so einfacher zu verwalten und zu aktualisieren

Im Mai 2015 präsentierte Microsoft Local Administrator Password Solution (LAPS) im Security Advisory 3062591. LAPS ist eine Massnahme gegen Lateral-Movement-Angriffe, da jedes System über ein anderes zufällig generiertes Passwort für ein definiertes lokales Administratorkonto verfügt. Wir haben die Anwendung von LAPS sowie Vor- und Nachteile in einem Artikel im Jahr 2017 vorgestellt. Einige Jahre später veröffentlicht Microsoft mit dem Sicherheitsupdate April 2023 eine verbesserte Version namens Windows LAPS. Sinngemäss wird die erste Version in Legacy LAPS umbenannt.

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.

Active Directory

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.

Verschlüsselung von Passwörtern

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.

Windows LAPS im Einsatz

Die Einführung von LAPS wird von Microsoft im Artikel Get started with Windows LAPS and Windows Server Active Directory dokumentiert.

Installation und Konfiguration

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.

Nutzung

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.

Migration

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.

Fazit

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.

Über den Autor

Michael Schneider

Michael Schneider arbeitet seit dem Jahr 2000 in der IT. Im Jahr 2010 hat er sich auf die Informationssicherheit spezialisiert. Zu seinen Aufgaben gehören das Penetration Testing, Hardening und das Aufspüren von Schwachstellen in Betriebssystemen. Er ist bekannt für eine Vielzahl in PowerShell geschriebener Tools zum Finden, Ausnutzen und Beheben von Schwachstellen. (ORCID 0000-0003-0772-9761)

Links

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

×
Area41 2024

Area41 2024 - Ein Rückblick

Michael Schneider

Bericht und Dokumentation

Bericht und Dokumentation

Michael Schneider

Einführung von CVSS v4.0

Einführung von CVSS v4.0

Michael Schneider

Rogue Device

Rogue Device

Michael Schneider

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv