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.

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

 

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

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.

  1. 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

  1. 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.

Figura 16 – LAPS Set-LapsADComputerSelfPermission

  1. 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

Figura 21 – Windows LAPS DSRM Get-LapsADPassword AsPlainText

Figura 22 – Windows LAPS Get-LapsADPassword AsPlainText

Figura 23- Windows LAPS Get-LapsADPassword History

 

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.