Jony Schats

Wachtwoord? Zie Omschrijving”.

systeembeheerders maken het soms té makkelijk

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:

Topdesk omschrijving

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 descriptionop van alle accounts waarvan het veld description niet leeg is.

Topdesk omschrijving2

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 .

Topdesk omschrijving3

Vervolgens verschijnt er een pop-up waar we de logingegevens kunnen invoeren.

Topdesk omschrijving4

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.

Topdesk omschrijving5

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:

ldapsearch -H ldap://10.0.0.3 -x -W -D "jschats@playground.local" -b "dc=playground,dc=local" "(&(objectClass=user)(description=*))" "samaccountname" "description"

Hiermee vinden we hetzelfde resultaat als in Windows:

Ldap Query

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!