derwowusste
Goto Top

Code ausführen am Anmeldebildschirm von Windows

article-picture
Die folgende Anleitung zeigt auf, wie man mit einem einfachen Kunstgriff erreichen kann, an der Anmeldemaske schon vor der Anmeldung oder trotz Sperrung beliebigen Code auszuführen.

Ich habe mein Konzept zum Kennwortselbstreset für Windowsdomänen überarbeitet und mich dabei mit den Möglichkeiten, die einem der Anmeldebildschirm auch ohne Anmeldung bietet, befasst. Als Nebenprodukt fiel diese Idee ab.

Am Anmeldebildschirm steht einem neben den Anmeldezeilen der Button zum Herunterfahren zur Verfügung, sowie der Knopf "erleichterte Bedienung", auch bekannt als utility manager. Dann gibt es noch die Sprachauswahl, sowie wenige andere Executables, wie z.B. Magnify.exe, welche über Tastaturkürzel angesprochen werden können.

Alle mir bislang bekannten Ansätze arbeiten damit, diese Executables auszutauschen. Das ist kein guter Ansatz, denn Erstens verliert man die originale Funktionalität und zweitens unterbindet auch der Virenscanner ggf. den Austausch bzw. die Verwendung dieser ausgetauschten Dateien.

Mein Ansatz:
Ich ändere die Überwachungseinstellungen ("SACL") der Datei (z.B. des genannten Utility Managers) und überwache erfolgreiches Ausführen der Datei durch das Konto "System", welches am Anmeldebildschirm aktiv ist. Klickt man nun auf den utility manager, so wird der Zugriff ins Sicherheitseventlog protokolliert.

sacl1
angepasste SACL der utilman.exe aus c:\windows\system32

secpol
Eingeschaltete Überwachung von Dateizugriffen

seclog1
Eintrag im Sicherheitseventlog, nachdem man amAnmeldebildschirm auf den Utility manager geklickt hat

Mit diesem Event bestücke ich dann im Aufgabenplaner einen dazu passenden Tasktrigger wie folgt:
task1
Als Executor legt man z.B. "System" fest.
untitled
Man muss dazu einen "custom trigger" anlegen, mit folgendem xml-code:
<QueryList>
  <Query Id="0" Path="Security">  
    <Select Path="Security">  
*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (EventID=4663)]]  
and
*[EventData[Data[@Name='ObjectName'] and (Data='C:\Windows\System32\Utilman.exe')]]  
and
*[EventData[Data[@Name='SubjectUserSid'] and (Data='S-1-5-18')]]  
</Select>
  </Query>
</QueryList>

task_3_1
Als Testaktion lasse ich mir ein Popup "Hurra" senden.
Achtung1: achtet darauf, dass auf dem Reiter "Conditions"/(dt.) "Bedingungen" der Haken bei "Aufgabe nur starten, falls Computer im Netzbetrieb" entfernt wird.
Achtung2: es sollte klar sein, dass, wenn man einem unangemeldeten Nutzer die Möglichkeit gibt, Code mit hohen Rechten auszuführen, dieser Code/Skript nur von Admins veränderbar sein darf (es sei denn, ihr wollt das)!

Fertig! Auch wenn niemand angemeldet ist, oder wenn der Bildschirm gesperrt ist kann ich mit Klick auf den Utility Manager beliebigen Code ausführen!

Nachwort: diese Änderungen (Taskplaner, SACL) sind nur mit Adminrechten möglich. Ist es jedoch eingerichtet, kann es danach natürlich auch jedem Nichtadmin dienen. Meine Tests ergaben zudem, dass das Konto "System" ausführend nie auf diese Datei zugreift, so dass ich keine einzige ungewollte Ausführung verzeichnen konnte. Wenn Ihr das anders erlebt, bitte ich um Feedback.

Edit 11.4.24: Trigger präzisiert, so dass er wirklich nur auf das Systemkonto reagiert, selbst dann, wenn man auch Execute-Zugriffe aller Benutzer überwachen möchte

Content-ID: 81830088682

Url: https://administrator.de/tutorial/code-ausfuehren-am-anmeldebildschirm-von-windows-81830088682.html

Ausgedruckt am: 21.12.2024 um 14:12 Uhr

Celiko
Celiko 20.11.2023 um 15:44:37 Uhr
Goto Top
Moin,

Idee und workaround gefällt mir 👍

Werde mir den Post mal abspeichern falls ich so einen use case mal haben sollte.

Vg
Celiko
emeriks
emeriks 21.11.2023 um 12:57:00 Uhr
Goto Top
Respekt, DWW!
Klasse, trickreicher Ansatz!
Bei mir läuft gerade die Rolle an, wo man dieses Verfahren u.U. ähnlich ansetzen könnte ...
DerWoWusste
DerWoWusste 21.11.2023 aktualisiert um 14:00:16 Uhr
Goto Top
Moin.
Bei mir läuft gerade die Rolle an, wo man dieses Verfahren u.U. ähnlich ansetzen könnte
"Self-backdooring" zum Beispiel. Als Noteingang ein Skript hinterlegen, das einen Nutzer anlegt mit einem bekannten Kennwort (oder diesen aktiviert). Von außen ist ja nicht sichtbar, dass es dieses gibt, bzw. was es macht.
Ich habe es selbst benötigt, um ein Polling zu beschleunigen in oben genanntem SSPR-Konzept, da ich bei Tests nicht warten wollte.

Du könntest es auch nutzen, um schwachen Nutzern z.B. einen NIC-Reset zu ermöglichen, oder einen Backupstart oder sonstwas, was eben nur mit hohen Rechten funktioniert.
Globetrotter
Globetrotter 22.02.2024 um 17:08:08 Uhr
Goto Top
VeryVery C00L face-smile

Tnx!

Gruss Globe!