Jony Schats

Wordt het wachtwoord van de lokale administrator in jouw omgeving hergebruikt?

Het Windows besturingssysteem bevat standaard een beheeraccount voor beheerdoeleinden waarvan het wachtwoord bij veel omgevingen op meerdere systemen hetzelfde is.

Waarom hergebruik van het wachtwoord vaak voorkomt

Het wachtwoord van het lokale administrator account wordt regelmatig hergebruikt en is dus hetzelfde op meerdere systemen binnen de organisatie. Dit kan bijvoorbeeld komen omdat er één image gebruikt wordt voor alle servers en één image voor alle werkplekken. In deze image is het lokale administrator account ingesteld en het wachtwoord wordt vervolgens nooit gewijzigd. Of men gebruikt een script om een standaard wachtwoord op elk systeem in te stellen.

Als een aanvaller administrator rechten heeft tot één van deze machines en het wachtwoord of versleutelde versie hiervan weet te achterhalen kan hij deze hergebruiken om toegang te krijgen tot meerdere of soms alle systemen binnen het domein.

Overzicht testomgeving

In ons test domein playground.local is hetzelfde lokale administrator wachtwoord gebruikt voor alle systemen in het domein. De versleutelde versie van het wachtwoord(NTLM-hash) is te achterhalen door de lokale Sam database op een van deze systemen uit te lezen.

Een hash is de output van een cryptografische functie die het wachtwoord versleuteld. Op deze manier kan men controleren of iemand het juiste wachtwoord ingevoerd heeft zonder dat dat wachtwoord opgeslagen is op een manier die terug te rekenen is naar het oorspronkelijke wachtwoord.

Het is mogelijk om deze hash te gebruiken voor een pass the hash aanval. Met deze aanval biedt je in plaats van het wachtwoord, de hash aan om te authenticeren. NTLM authenticatie is een van de ondersteunde authenticatiemethodes in Active Directory.

Om dit te demonstreren hebben wij een lab omgeving opgezet bestaande uit één Windows cliënt en twee Windows servers waaronder een webserver en een domeincontroller. Het lab ziet er als volgt uit:

Laps blog

Uitvoeren van de aanval

In ons lab demonstreren we deze aanval door gebruik te maken van een account die lokale administrator rechten heeft op een werkstation. Een aanvaller met lokale administrator rechten kan met behulp van Invoke-Mimikatzuit uit Powersploit de hashes uitlezen van de (lokale) gebruikers, onder andere van het lokale administrator account. Het volgende commando kan daar voor worden gebruikt:

Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "lsadump::sam"'

Laps blog2

De hash (48e723f6efb3eff9ae669e239c42fff3) van het lokale administrator account kan gebruikt worden door de aanvaller om een pass the hash aanval uit te voeren waarbij hij zich probeert te authenticeren als de lokale administrator op elke machine binnen het domein. Dit kan een aanvaller bijvoorbeeld doen met de tool Crackmapexec.

Laps blog3

De output laat zien dat hij als lokale beheerder toegang heeft tot twee systemen binnen het domein, in dit geval alle systemen behalve de domeincontroller. Het is standaard niet mogelijk om met het lokale administrator account op een domeincontroller in te loggen aangezien deze alleen gebruikt kan worden in de ADrestore mode. Een oplossing om deze aanval te voorkomen is de Local Administrator Password Solution (LAPS) van Microsoft.

Wat is de Local Administrator Password Solution (LAPS) van Microsoft

LAPS is een management tool van Microsoft voor het beheren van lokale administrator wachtwoorden en kan deze op alle systemen periodiek wijzigen. De applicatie dient op elk werkstation en server geïnstalleerd te worden indien het lokale administrator account door LAPS beheerd dient te worden. De oplossing kan ook als client geïnstalleerd worden zodat het via een GUI en PowerShell wachtwoorden kan opvragen. LAPS zorgt ervoor dat wachtwoorden in een apart beveiligd attribuut binnen het computerobject in Active Directory worden opgeslagen. LAPS voegt de volgende twee attributen toe:

  • Ms-Mcs-AdmPwd – bewaard het wachtwoord in tekst.
  • Ms-Mcs-AdmPwdExpirationTime – bewaard de tijd voor het resetten van het wachtwoord.
Laps blog4

Het opslaan van het niet versleutelde wachtwoord is geen probleem omdat het veld waarin dit gebeurt speciale rechten vereist om uitgelezen te kunnen worden. Als een aanvaller over een account beschikt die toegang heeft tot de domeincontroller om dit uit te lezen of een gebruikersaccount met rechten, beschikt hij over veel meer rechten dan lokale administrator accounts.

Het opvragen van LAPS wachtwoorden

De wachtwoorden worden, indien opgevraagd over het netwerk, door de LAPS GUI en PowerShell versleuteld verstuurd. De LAPS GUI ziet er als volgt uit indien een geautoriseerde gebruiker het wachtwoord opvraagt:

Laps blog5

Het is ook mogelijk om het wachtwoord op te vragen doormiddel vaan PowerShell met het volgende commando:

Get-AdmPwdPassword -Computername ‘computernaam’

Laps blog6

Toegang tot het wachtwoord wordt verleend via het recht Control access op het attribuut. Control access is een Extended Right in Active Directory, wat betekent dat als een gebruiker de machtiging All Extended rights heeft op dat attribuut of een object daarboven, hij het wachtwoord in kan zien. LAPS bevat een PowerShell module Find-AdmPwdExtendedrights om na te gaan wie deze rechten heeft. Deze toegangsrechten kunnen bijvoorbeeld worden toegevoegd aan de Domain Administrators of een andere beheergroep. Gebruikers die geen toegang hebben krijgen het wachtwoord niet te zien indien zij de GUI opstarten. 

Hoe worden de wachtwoorden automatisch gewijzigd

Het wijzigen van dit wachtwoord wordt gedaan in de context van het systeem, een serviceaccount is dus niet benodigd. Het wachtwoord wordt standaard elke 30 dagen gewijzigd en bestaat uit 14 karakters bestaande uit hoofdletters, kleine letters, cijfers en symbolen.

Laps blog7

Aanbeveling

Wij raden aan om gebruik te maken van LAPS voor het beheren van het lokale administrator account. Daarnaast raden wij u aan om een langere wachtwoordlengte in te stellen, in lijn met onze eerste blog, op minimaal 15 karakters. Aangezien LAPS het wachtwoord automatisch voor beheert, is het echter geen probleem om deze op het maximum van 64 te zetten. Maar dit word wel een probleem voor mensen die hem moeten overtypen.