Windows LAPS – Local Administrator Password Solution
Lo scorso giugno Microsoft ha pubblicato Windows 11 Insider Preview Build 25145 e al suo interno, fra le tante novità, troviamo quella che ha più colpito il mio interesse ovvero Windows LAPS. Announcing Windows 11 Insider Preview Build 25145 | Windows Insider Blog
Per chi non conoscesse LAPS (acronimo di Local Administrator Password Solution) potete approfondire l’argomento attraverso questo articolo di Nicola Ferrini Implementare Local Administrator Password Solution (LAPS) – ICT Power. LAPS è diventato negli anni uno degli strumenti fondamentali su cui le aziende devono puntare per proteggersi dalle minacce informatiche mitigando palesemente gli attacchi di tipologia Lateral Movement. La sua stabilità, facilità implementativa, facilità di fruizione ed altissimo contributo in ambito sicurezza lo hanno portato anno dopo anno a diventare uno strumento imprescindibile ed è per questo che Microsoft ha deciso di integrarlo nel sistema operativo (sia client che server). Ne approfitto per evidenziare che LAPS diventa ancora più efficace se affiancato ad Active Directory Tier Model siccome, attraverso loro sinergia:
- Aumentiamo lo sforzo che un attaccante deve fare per arrivare e compromettere i sistemi
- Mitighiamo le tecniche di attacco “Pass-the-Hash” e “Pass-the-ticket”
- Preveniamo tecniche di Lateral Movement e Privileged Escalation
- Evitiamo la Domain Dominance
-
Mitighiamo il Credential Stuff
Figura 1 – Windows LAPS and Active Directory Tier Model
Se volete approfondire il Tier Model vi consiglio questo mio articolo Implementare Active Directory Tier Model – ICT Power
Le novità di Windows LAPS
Ora però torniamo all’evoluzione di LAPS in Windows LAPS e quali sono le novità:
-
Integrato nel Sistema Operativo da Windows 11 Insider Preview Build 25145 e successivi e Windows Server Preview Build 25151 e successivi
Finalmente non dobbiamo più distribuire il “client LAPS” per installare la client-side extension. Windows LAPS è integrato nativamente e questo riduce lo sforzo implementativo siccome dobbiamo solo provvedere a gestirlo da GPO -
Utilizza nuovi admx
I nuovi admx fanno già parte del sistema operativo quindi non dobbiamo preoccuparci di copiarli sul central store GPO. All’interno del GPO editor vediamo la “vecchia folder LAPS” che continua a comprendere i settaggi del Legacy LAPS mentre i nuovi setting Windows LAPS li troviamo all’interno della folder System\LAPS
Figura 2- Windows LAPS admx Template
-
Ha una LAPS Event log view dedicata
All’interno del seguente path “Applications and Services > Logs > Microsoft > Windows > LAPS > Operational” troveremo tutte le informazioni riguardanti le attività LAPS come update password ed eventuali errori scrittura LAPS in AD e/o AAD
Figura 3 – Windows LAPS log view
-
Ha una nuova PowerShell cmdlets e modulo PowerShell integrato
Attraverso “Get-Command -Module LAPS” abbiamo a disposizione tutti i comandi per gestire Windows LAPS senza la necessità di importare o scaricare nessun modulo aggiuntivo
Figura 4 – Windows LAPS PS Command
-
Offre la possibilità di backup password su Azure AD
Possiamo finalmente effettuare il backup della local administrative password sull’oggetto account computer in Azure AD. Purtroppo, non sono ancora riuscito a provare questa feature siccome il supporto per lo scenario di Azure Active Directory di Windows LAPS è limitato a un numero limitato di utenti di Windows Insider.
Figura 5 – Windows LAPS Azure Active Directory
Figure 6 – Windows LAPS Intune
-
Un pannello dedicato ADUC (Active Directory Users and Computers)
Recupereremo le informazioni LAPS attraverso un tab dedicato nelle proprietà dell’oggetto account computer senza necessariamente andare a cercare fra gli attributi LAPS
Figure 7 – Windows LAPS ADUC
-
Offre la possibilità di imporre un limite sessione al local administrator attraverso la Post-authentication actions
Posso imporre un limite massimo di durata sessione (da 1 a 24 ore) per cui, allo scadere del limite, impongo una delle scelte che vedete in figura. La ritengo utile quando consegno ad un utente la LAPS password ma desidero che la sessione aperta con quelle credenziali abbia un vincolo temporale.
Figura 8 – Windows LAPS Post-authentication actions
-
Crea nuovi attributi AD msLAPS-* oltre gli attributi del legacy LAPS ms-Mcs-Adm* (se presenti)
‘ms-LAPS-Password’
‘ms-LAPS-PasswordExpirationTime’
‘ms-LAPS-EncryptedPassword’
‘ms-LAPS-EncryptedPasswordHistory’
‘ms-LAPS-EncryptedDSRMPassword’
‘ms-LAPS-EncryptedDSRMPasswordHistory’
‘ms-LAPS-Encrypted-Password-Attributes’
-
Con Domain Functional Level 2016 offre la possibilità di cifrare l’attributo password
Gli attributi AD sono protetti dalle autorizzazioni fornite per loro ma attraverso la crittografia otteniamo un ulteriore livello di sicurezza.
Figura 9 – Windows LAPS Enable password encryption
Per decrittografare le password, è necessario utilizzare l’impostazione “Configure authorized password decryptors” per designare utenti o gruppi specifici per questa attività. Riporto per praticità i comandi Power Shell per ottenere facilmente il SID utente “snieri” ed il SID del gruppo “ServiceDesk” interrogando AD.
1 2 3 4 5 |
# Get user SID Get-ADUser -Identity 'snieri' | select SID # Get group SID Get-ADGroup -Identity 'ServiceDesk' | select SID |
Figura 10 – Windows LAPS Configure authorized password decryptors
-
Con Domain Functional Level 2016 offre la possibilità di gestire la DSRM password dei Domain Controller
La Directory Services Restore Mode (DSRM) password è in pratica la local admin password dei Domain Controller. In genere nessuno ricorda mai che tipo di DSRM password hanno i DC e spesso, nei momenti più stressanti nella vita di un sistemista (mi riferisco a restart DC in restore Mode a causa di attacchi informatici), potremo rimpiangere di non aver segnato e/o adeguatamente considerato il salvataggio di quella password.Altro motivo per cui gestire e rendere univoche le DSRM password è la criticità che riporto a questo url Sneaky Active Directory Persistence #13: DSRM Persistence v2 – Active Directory Security (adsecurity.org).
Windows LAPS ci permette di gestire le DSRM come una qualsiasi LAPS password e quindi di salvarle e gestirle in AD.
Figura 11 – LAPS DSRM password
Attraverso il comando seguente siamo in grado di ottenere la DSRM password in chiaro
1 2 |
#DSRM LAPS Password cifrata Get-LapsADPassword -identity DC2 -AsPlainText |
Figura 12 – LAPS DSRM password LapsADPassword
-
Con Domain Functional Level 2016 offre la possibilità di impostare il password History (max 12)
A mio avviso la novità più interessante! Quante volte mi son sentito dire dai clienti “LAPS non va!”. Il motivo è che, se una macchina ha una LAPS password registrata in AD ed il Service Desk per vari motivi effettua un roll-back del device, avremo probabilmente una LAPS password diversa rispetto quella scritta in AD. Avremo la password precedente (che è stata sovrascritta in AD) rischiando di tagliarci fuori dall’accesso al dispositivo. La stessa criticità vale anche per i server sotto snapshot.
Attraverso questa feature possiamo salvare sull’attributo un history password fino ad un massimo di 12 record.
Figura 13 – LAPS password History
Attraverso il comando seguente siamo in grado di ottenere l’history password in chiaro
1 2 |
#LAPS Password History Get-LapsADPassword -identity W11 -AsPlainText –IncludeHistory |
Figura 14 – LAPS password History LapsADPassword
Installazione Windows LAPS
L’implementazione di Windows LAPS non si discosta di tanto dal Legacy LAPS: si inizia aggiornando l’AD Schema, delegando gli oggetti account computer a scrivere sul proprio attributo ed infine creando una LAPS GPO.
-
Update Active Directory Schema
Dal Domain Controller Windows Server 2022, eseguiamo un Powershell con privilegi amministrativi, verifichiamo i comandi a disposizione con “Get-Command -Module LAPS” ed aggiorniamo lo schema con il comando “Update-LapsADSchema“.
Figura 15 – LAPS Update-LapsADSchema
-
Set SelfUpdatePermissions
Questo passaggio serve permette ai computer gestiti con LAPS di potersi aggiornare la propria local administrative password sull’attributo AD msLAPS-EncryptedPassword.
Andremo a definire i path AD dove si trovano gli oggetti computer e vi ricordo di lanciare questo comando anche sulla OU dei domain controllers se volete gestire la DSRM password.
1 2 3 4 |
# Diritti oggetti computer di aggiornare le password Windows LAPS Set-LapsADComputerSelfPermission -identity 'OU=Servers,OU=Demo,DC=demo,DC=lab' Set-LapsADComputerSelfPermission -identity 'OU=Workstations,OU=Demo,DC=demo,DC=lab' Set-LapsADComputerSelfPermission -identity 'OU=Domain Controllers,DC=demo,DC=lab' |
Figura 16 – LAPS Set-LapsADComputerSelfPermission
-
Group Policy
Questo passaggio mi rifaccio alla figura 2 e a quanto vi ho elencato dettagliatamente nelle novità di Windows LAPS in questo articolo.Qui sotto trovate un esempio di LAPS policy linkata alle workstations e server che scrive la password in AD, ha una history di tre record, usa la password encryption, setta complessità, durata, lunghezza password e fa Post-Authentication actions dopo un’ora forzando il restart e change password.
Figura 17 – Windows LAPS Group Policy
Questa GPO invece è relativa al LAPS DSRM policy linkata ai Domain Controllers che gestisce soltanto la DSRM password.
Figura 18 – Windows LAPS DSRM Group Policy
Qui sotto potete notare che la laps legacy Workstation GPO è linkata alla OU Worstations, la stessa OU dove è linkata la GPO LAPS.
Figura 19 – Windows LAPS Group Policy
Le due soluzioni non vanno in conflitto e possono anche stare in una unica Group Policy LAPS (legacy e Windows LAPS) per i seguenti motivi:
I sistemi operativi pre Windows 11 Insider Preview Build 25145 non possono interpretare gli admx di Windows LAPS
I sistemi operativi post Windows 11 Insider Preview Build 25145 non possono interpretare gli admx LAPS (legacy) siccome per “ascoltarli” dovrebbero installarsi il “client LAPS” e relativa client-side extension
Possono tranquillamente COESISTERE
Leggere le LAPS password
Ora che abbiamo implementato LAPS e relative Group Policy non ci resta che scoprire come leggere le password salvate in AD o AAD. Annuncio subito che ad oggi, la nostra amata LAPS UI sembra non aver futuro siccome al momento l’unico modo per ottenere la password è via Power Shell o GUI. Questo è un bel peccato siccome è decisamente utile per i Service Desk Operators oppure per chi ha poca dimestichezza con Powershell.
C’è un però: la nuova LAPS cmdlets riesce a leggere i valori dei Legacy LAPS come evidenziato in figura alla riga Source: LegacyLapsCleartextPassword. Questo mi fa sperare che magari nelle prossime relase LAPS (oggi siamo alla 6.2) inseriscano la capacità di poter legger anche le LAPS password encrypted… vedremo!
Figura 20 – Windows LAPS and LAPS UI
Per ora mi limito alle certezze: i comandi Powershell
1 2 |
# Comando per ottenere la DSRM password encrypted in chiaro da Active Directory Get-LapsADPassword -identity DC2 -AsPlainText |
Figura 21 – Windows LAPS DSRM Get-LapsADPassword AsPlainText
1 2 |
# Comando per ottenere la password encrypted in chiaro da Active Directory Get-LapsADPassword -identity W11 -AsPlainText |
Figura 22 – Windows LAPS Get-LapsADPassword AsPlainText
1 2 |
# Comando per ottenere la password History encrypted in chiaro da Active Directory Get-LapsADPassword -identity W11 -AsPlainText -IncludeHistory |
Figura 23- Windows LAPS Get-LapsADPassword History
1 2 3 |
# Comando per ottenere la password History encrypted in chiaro da AZURE Active Directory # Al momento supportato solo per alcuni tenant Test Get-LapsAADPassword -DeviceIds W11 -IncludePasswords -AsPlainText |
Conclusioni
Come abbiamo visto, l’implementazione Windows LAPS è concettualmente identica alla precedente ma con la comodità di aver tutto integrato e di avere un approccio più Cloud attraverso il backup password su AAD, il recupero LAPS password con Graph e il management by Intune che andrò a dettagliare in questo articolo appena estenderanno la feature a tutti i tenant.