Passwort ändern von Windows Accounts im AD/Lokal via Skript mit Optionen

Das Passwort von Windows Accounts zu ändern ist eigentlich eine einfache Angelegenheit. Auch in der Konsole gibt es einen sehr einfachen Befehl:


Ein sehr simples Skript zum Neusetzen eines Passworts könnte also so aussehen:

Aber an dieser Stelle geht es mir natürlich nicht um das Ändern eines einzelnen Passworts. Es geht um die Massenänderung eines Passworts, beispielsweise eines Administratorpassworts auf jedem Computer eines Netzwerks.
Nun kann es jedoch bei Dutzenden, Hunderten oder Tausenden Nutzern/Computern zu verschiedenen Problemen oder Nebeneffekten kommen. Der Nutzer könnte nicht existieren, deaktiviert sein oder ein Password mit Ablaufdatum besitzen. Diese Faktoren sollten bedacht werden.

Ich habe ein Skript geschrieben, welches alle diese Faktoren berücksichtigt:

Erläuterung:
Anhand der Variablen lässt sich das Verhalten des Skriptes in bestimmten Situationen steuern. Die Kommentare sollten eigentlich alles soweit klar machen.
Ich habe das Skript noch nicht ausführlich getestet, es sollte aber eigentlich keine Probleme geben.

Nun gibt es noch ein letztes Problem: ein solches Skript sollte niemals einfach so auf den Netzlaufwerken liegen, schließlich steht das Passwort dort im Klartext. Und die Ordner, in denen die Gruppenrichtlinienskripte liegen, sind oftmals für die Computer- oder Nutzerobjekte der Domäne lesbar. IT-erfahrene Nutzer könnten also das Skript finden und einsehen.

Es ist also wichtig das Passwort oder das komplette Skript zu verschlüsseln. Je nach Firma, Größe, Nutzergruppe, Sicherheitsrichtlinien usw. muss man in diesen Punkt mehr oder weniger Arbeit stecken.
Ich habe an dieser Stelle ein sehr einfaches Tool gefunden, welches Batch Skripte in .exe Dateien kompilieren kann und damit den Inhalt (für die meisten Menschen) unlesbar macht: Bat To Exe Converter von F2KO macht genau das, was der Name sagt. Außerdem kann die .exe Datei mit einem Passwort verschlüsselt, unsichtbar ausgeführt und mit einem Icon sowie vielen Metainformationen versehen werden.
change-reset-local-user-passwords-bat-to-exe-compiler

Zufälliger Artikel:  Software-Deployment Sammelbeitrag - Firefox, Flash, Java, Reader, Skype

Also, Nutzer und endgültiges Passwort in das Skript eintragen, kompilieren und die .exe Datei auf das Netzlaufwerk legen und verteilen. Wenig später ist das Passwort überall neu gesetzt.

9 Kommentare

  1. Erstaunlich, VirusTotal erkennt 0/52. Also ich bin mir zwar zu 99% sicher, dass das ein False Positive sein müsste, aber versprechen kann ich natürlich nichts.
    Was für ein Virus wird denn erkannt? Irgendwas mit *Generic* im Namen? Hast du heuristische Erkennung aktiviert, wenn ja welche Stufe? Dann erkennen Antivirenscanner gerne und häufig beliebige Codebrocken als generische Viren, was natürlich quatsch ist.
    Ein Grund warum ich heuritische Checks immer deaktiviere oder maximal auf kleinster Stufe mitlaufen lasse.

  2. Also es ist die TMP-Datei die nebenbei kurz erstellt wird.

    Angeblich soll es: Win64:Evo-gen[Susp] sein

  3. Wie vermutet, „gen“ steht hier für generisch und heißt, dass dort Code vom Scanner gelesen wurde, der unter Umständen Schadcode sein könnte, rein von der Struktur und den Befehlen her. Das ist aber oftmals ganz normaler Code, der halt typische „Viren-Aktionen“ ausführt; also Dateisystemzugriffe usw.
    Bei generischen Viren also immer Augen auf; wo kommt die Datei her, Vertraue ich der Quelle, vielleicht mal mit VirusTotal oder anderen Virenscanner scannen und dann muss man der Datei entweder vertrauen oder eben nicht 😉

  4. Hätte ich noch Windows, würde mich ja mal interessieren, wie schwierig es ist, die unverschlüsselte *.bat-Datei aus dem Ding zu bekommen. Naja.
  5. super guter Artikel! Ich liebe es, wenn man coole Sachen mit Batch macht, aber warum eigentlich nicht mit der Powershell? Das Tool zum Übersetzen und Verschlüsseln der Batch-Dateien gucke ich mir aber auch mal an. 🙂 Denn auch ich mache immer noch viele einfache Dinge lieber mit Batch, als mti Powershell.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.