Wachtwoord? Zie “Omschrijving”.
Systeembeheerders slaan wachtwoorden voor niet-persoonsgebonden accounts regelmatig op in het veld Omschrijving (Engels: Description) van het account. Handig, zo kunnen andere beheerders ook in het account. Standaard is dit veld in Active Directory echter leesbaar voor iedereen.
Voorbeeld
In ons testdomein playground.local
is een gebruikersaccount aangemaakt met de naam Topdesk
. Het wachtwoord dat is ingesteld (T0pDesk!
) is ook genoteerd in het veld description
. Dit kan handig zijn: zo kan het IT-personeel het gedeelde account (gemaakt, in dit voorbeeld, om de applicatie TopDesk te beheren) gebruiken door het wachtwoord, heel makkelijk, uit Active Directory te lezen. Hieronder zie je een screenshot van de eigenschappen van deze gebruiker:
Uitlezen gegevens Active Directory
Deze gegevens kunnen echter door elke gebruiker binnen het domein worden opgevraagd. Met behulp van bijvoorbeeld de tool PowerView, of ADModule (de Powershell-beheerbibliotheek voor Active Directory van Microsoft) is het mogelijk om te zoeken naar accounts waarbij dit veld is ingevuld:
Get-ADUser -Filter {description -like '*'} -Properties samaccountname, description | Select-Object samaccountname, description
Dit commando vraagt de velden samaccountname
en description
op van alle accounts waarvan het veld description
niet leeg is.
In de uitvoer van het commando zien we alle accounts met een ingevuld description
-veld. Bij het account Topdesk
zien we een omschrijving die erg lijkt op een wachtwoord…
Een aanvaller zou deze gegevens kunnen gebruiken door daarmee in te loggen op elke machine binnen het domein. Het is bijvoorbeeld mogelijk dat dit account lokale beheerrechten heeft op een computerobject (in dit voorbeeld waarschijnlijk op de server waarop TopDesk geïnstalleerd is), of dat het toegang heeft tot interessante shares. Of natuurlijk tot gevoelige informatie in de applicatie TopDesk zelf.
Wat te doen als beheerder
Het is mogelijk om deze gegevens op te vragen met behulp van de Microsoft Active Directory Management DLL. Deze DLL is standaard te vinden op elke Domain Controller en staat op elke Windows-computer waarop de Remote System Administration Tools geïnstalleerd staan. Hetzelfde commando als hierboven kan gebruikt worden:
Get-ADUser -Filter {description -like '*'} -Properties samaccountname, description | Select-Object samaccountname, description
Als er accounts zijn waar het wachtwoord in het veld description
staat adviseren wij om dit veld leeg te maken. Dit is mogelijk met het commando:
Set-ADUser Topdesk -Description $null
Veilig opslaan van wachtwoorden
Er is een betere manier om wachtwoorden voor dergelijke accounts te delen: met een wachtwoordmanager zoals bijvoorbeeld Keepass. Hier kunt u binnenkort meer over lezen, in onze volgende blog.
Hoe vraag je deze gegevens op zonder lid te zijn van het domein?
De gegevens kunnen ook worden opgevraagd vanaf een Windows-computer die niet lid is van het domein. Het is wel vereist om geldige logingegevens van een normale domeingebruiker mee te geven. Dit kunnen wij doen door deze op te slaan in een variabele met behulp van de cmdlet get-credential
.
Vervolgens verschijnt er een pop-up waar we de logingegevens kunnen invoeren.
Met onderstaand commando vragen wij met PowerView de gegevens op van alle accounts binnen het domein van de Domain Controller met IP-adres 10.0.0.3
. Met Where-Object
filteren we de accounts weg waarvan het veld description
leeg is, en tenslotte tonen we alleen de velden samaccountname
en description
.
get-netuser -Domain playground.local -DomainController 10.0.0.3 -Credential $creds | Where-Object -Property description | select samaccountname, description
In de uitvoer zien we bij het account Topdesk
een beschrijving die erg lijkt op een wachtwoord. De rest van de omschrijvingen zijn standaard omschrijvingen voor standaard domein-accounts.
Testen vanuit Linux/UNIX
Als geen Windows-systeem beschikbaar is, of detectie door antivirus is een issue (bijvoorbeeld bij pentests of Red Team-opdrachten), dan is het ook mogelijk om vanuit een UNIX/Linux-systeem (bijvoorbeeld Kali Linux) direct een LDAP query te sturen naar de domain controller:
Hiermee vinden we hetzelfde resultaat als in Windows:
Tot slot
Het is beter om een password manager te gebruiken dan het veld Omschrijving of Description, want dat veld is leesbaar voor veel meer gebruikers dan je als beheerder wilt. Inbrekers kunnen zo ook hun toegang binnen je domain verder uitbouwen.
Hopelijk hebben we je in deze blogpost voldoende tools gegeven om oude wachtwoordlekkages op te ruimen!