Et problem med Active Directory (AD) og tilhørende adgangskodepolitikker er, at selvom krav om adgangskodekompleksitet er slået til, så finder angribere (herunder penetration-testers) nemt dårlige bruger-adgangskoder, som IT administratorer eller sikkerhedsansvarlige ikke har mulighed for at opdage "out-of-the-box".
Simple og meget udbredte adgangskoder, så som "Sommer2015", "Oktober2015", "Password1", "[firmanavn]+[årstal]" o.s.v., lever alle op til almindelige krav om længde og kompleksitet, men i praksis er det utrolig dårlige koder, som vil være de første, en angriber vil forsøge med.
Brute-force og NTDS.DIT angreb
Et såkaldt "brute-force" angreb kan foretages ved enten at angribe én given bruger og forsøge med en hulens masse forskellige adgangskodekombinationer. Det vil i mange miljøer føre til at brugeren lukkes ude, og angrebet slutter efter få forsøg.
En bedre version af "brute-force" angrebet forsøger én velkendt og udbredt adgangskode, f.eks. "Sommer2015", mod samtlige brugere i miljøet (også kaldet "password spraying"). Dette leder ofte til, at angriberen kan logge på miljøet med en af disse brugerkonti, idet der sjældent er noget, der beskytter mod den form for angreb (som dog kan opdages, såfremt man overvåger korrekt).
Jeg har tidligere nævnt en metode til at opnå indblik i anvendte adgangskoder, hvor man offline angriber NTDS.DIT filen. Det er en lidt tung og manuel proces. Med et nyere PowerShell modul er det dog muligt at foretage en analyse "on-the-fly" - selvfølgelig under forudsætning af, at man har (opnået) de rette rettigheder (svarende til 'Domain Admin' eller 'Domain Controller'). Dette nye modul tilbyder med andre ord funktionalitet som DCSync, der for nylig er inkluderet i Mimikatz.
Get-bADpasswords
Jeg har udviklet et simpelt script, Get-bADpasswords, som udnytter denne funktionalitet til at gøre det muligt for IT-administratorer og sikkerhedsansvarlige, at opdage dårlige adgangskoder - forhåbentlig før angribere gør det.
Nedenstående tegning illustrerer konceptet.
En Domain Controller kontaktes og anmodes om at udlevere brugernavne og adgangskode hash-værdier (NT hash) for alle aktive brugere (under en given naming context).
Scriptet henter, fra en eller flere tekst-filer (wordlists), dårlige eller uacceptable (non-compliant) adgangskoder i miljøet, som så hashes (NT hash), så de kan sammenlignes med output fra AD.
Her ses et eksempel på indholdet af en sådan wordlist, der bør tilrettes den enkelte organisation, sprog osv.
Scriptet eksekveret med "-Verbose" udskriver løbende status til konsollen.
Scriptet kan skrive brugernavne for de brugere, som har dårlige adgangskoder til en CSV fil.
Scriptet kan skrive en logfil med løbende status, herunder detaljeret (verbose) information.
Bemærk som nævnt, at mit script antager, at DSInternals modulet er korrekt installeret på den eksekverende maskine.
Et par advarsler her til sidst.
Michael Grafnetter, som har udviklet DSInternals modulet, har endnu ikke frigivet kildekoden. Derfor skal man, såfremt man afvikler modulet i et produktionsmiljø, stole (blindt) på hans kode. Michael har dog sagt til mig, at han vil frigive koden sidst på året, når han har haft til til at rydde lidt op i den. Tak til Michael for hans store arbejde og hjælp.
Det er nok en god ide at få en godkendelse af HR og/eller juridisk afdeling, såfremt der måtte være indvendinger mod, at administratorer eller sikkerhedsansvarlige potentielt kan se brugeres adgangskoder. Det skal jeg ikke gøre mig klog på.
Dette script fungerer "after the fact", dvs. efter at brugere har anvendt en dårlig adgangskode. Der er i Windows en mulighed for at skrive Password Filters, som forhindrer at de overhovedet anvendes (afhængigt af scenarie), men det er en helt anden sag.
Mit PowerShell script kan hentes her: Get-bADpasswords.
I håbet om flere sikre Active Directory miljøer derude!
/Jakob

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.