Jony Schats

Waarom Domain Administrators beter niet kunnen inloggen buiten de Domain Controllers

Ditmaal bekijken we een bevinding die we vaak doen en ons werk erg makkelijk maakt: Domain Administrators (domeinbeheerders) ingelogd op computers of servers die geen domain controller zijn. Het is voor een aanvaller die Local Administrator is op een computer of server namelijk mogelijk om de wachtwoorden (of hashes) te achterhalen van alle andere ingelogde gebruikers. Dus ook als die Domain Admin zijn!

Een hash is de versleutelde versie van het wachtwoord. Één van de authenticatiemogelijkheden binnen Active Directory is d.m.v. NTLM-hashes. Een pass the hash-aanval maakt hier gebruik van. Het handige hiervan is dat wij als aanvallers deze hash niet hoeven te kraken (ontsleutelen) — we kunnen gewoon inloggen met het versleutelde wachtwoord, de hash, zelf.

Ons opgezette lab

Om te demonstreren hoe we de rechten van een Domain Administrator kunnen overnemen als hij/​zij op ons systeem inlogt, hebben wij zelf een lab opgezet met het domein playground.local. Het domein bestaat uit drie machines: één Domain Controller, één fileserver en één workstation. Daarnaast plaatsen we twee aanvallende machines in het netwerk: één Windows-client en één Kali-machine. In de afbeelding hieronder wordt het domein afgebeeld:

Opgeztte lab

De aanval

We gaan in het lab laten zien hoe een inbreker, die al wel de controle heeft over één server, toegang gaat krijgen tot alle andere systemen in het domein.

De inbreker kan al inloggen als de gebruiker jschats (geen Domain Admin, maar wel Local Admin op de fileserver). Deze gebruiker had een zwak wachtwoord en dat heeft de inbreker weten te kraken.

Er is ook een account met de naam t0_jschats, die wel Domain Administrator is. Deze gebruiker logt in op de fileserver, en daarmee gaan we zijn account overnemen.

Stap 1: Ingelogde gebruikers vinden met Crackmapexec

De virtuele fileserver heet SRV-FILE01 en heeft IP-adres 10.0.0.4. Vanaf de Kali-machine gebruiken we de tool CrackMapExec om alle ingelogde gebruikers op te vragen van deze server. Daarvoor moet wel worden aangemeld als een Local Administrator; we gebruiken het account jschats, met wachtwoord Welkom123321!, dat lokale beheerrechten heeft op de fileserver. In de screenshot hieronder is te zien dat gebruiker t0_jschats ingelogd is op de server SRV-FILE01.

Aanval1

Stap 2: versleuteld wachtwoord uitlezen

Met behulp van de Lsassy module van crackmapexec is het mogelijk om de hashes en soms plain text wachtwoorden van alle ingelogde gebruikers te achterhalen. We voeren het volgende commando uit om vanaf de Kali-machine de versleutelde wachtwoorden van de ingelogde gebruikers op de fileserver uit te lezen:

Aanval2

Te zien is dat Crackmapexec de hash van het wactwoord van t0_jschats heeft gevonden: 0f2fa29c7c2463acb095ae2f7ac0f683.

Stap 3: pass the hash naar de Domain Controller

Vervolgens kan deze hash gebruikt worden voor een pass the hash-aanval en kunnen we commando’s uitvoeren op de Domain Controller SRV-DC01 (IP-adres 10.0.0.3) als de gebruiker t0_jschats. In onderstaand voorbeeld voeren we het commando hostname uit.

Aanval3

De output van het commando (srv-dc01) toont ons dat we op de domain controller commando’s kunnen uitvoeren en dus onze rechten hebben verhoogd tot die van een domain administrator. Dit betekent dat er volledige toegang kan worden verkregen tot alle machines en data binnen het domein. 

Hoe voorkom je dit?

Een oplossing die wij aanbevelen is het beperken van de mogelijkheid tot inloggen voor de leden van de Domain Administrator groep op alle systemen behalve Domain Controllers door een group policy aan te maken die dit verbiedt. Hierdoor kunnen Domain Administrators enkel inloggen op Domain Controllers en is het dus niet mogelijk dat inloggegevens van deze groep achterblijven op andere servers of werkstations.

De group policy regel die hiervoor gebruikt wordt is Deny log on locally” en is te vinden onder Computer configuration –> Windows Settings –> Security Settings –> User Rights Assignment”. Het is belangrijk dat de Domain Administrators en de Enterprise Administrators hieraan worden toegevoegd.

Voorkomen1

Als deze group policy is gelinkt aan een Organizational Unit (OU), waar alle normale werkstations en servers inzitten, kunnen de Domain- en Enterprise Administrators niet meer inloggen op deze werkstations en krijgt men een melding dat inloggen niet mogelijk is.

Voorkomen2

Op deze manier verklein je het aanvalsoppervlak voor een aanvaller of kwaadwillende gebruiker. Tevens dwing je op deze manier af dat IT-beheerders minstens een tweetal accounts moeten gaan gebruiken; één account met normale rechten voor de dagelijkse zaken en één Domain Administrator account voor het beheren van het domein.

Het Microsoft tiering model

Een veel uitgebreidere, maar ingewikkeldere, oplossing is het implementeren van het Microsoft Active Directory Administrative Tier model. Dit model maakt een logische scheiding tussen de Domain Controllers (Laag 0), servers (Laag 1) en werkstations (Laag 2). In de afbeelding hieronder zijn deze lagen visueel weergegeven:

Microsoft tiering model1

Het laag-model voorkomt escalatie van bevoegdheden door te beperken wat beheerders kunnen beheren en waar ze zich kunnen aanmelden. Het doel van dit laag-model is om systemen te beschermen met behulp van een set bufferzones tussen de meest waardevolle systemen en de risicovolle werkstations die aanvallers vaak compromitteren (bijvoorbeeld middels phishing). Voor elke laag zijn er aparte beheerders en gebruikers die alleen toegang hebben tot de systemen in hun laag. Daarnaast zijn er aparte beheerwerkstations, die extra beveiligd zijn, om te verbinden naar een hogere administratieve tier. In de afbeelding hieronder zijn de inlog-beperkingen weergegeven:

Microsoft tiering model2

Beheerders mogen nooit inloggen op machines in een lagere tier. Dit zorgt ervoor dat er nooit hogere privileges voor een systeem beschikbaar zijn op een systeem. Het uitlezen van inloggegevens uit het geheugen is dan niet meer effectief voor het verhogen van rechten binnen het domein.

Zie ook de Microsoft-documentatie hierover: Securing Privileged Access Reference Material