Eingabeaufforderung mit lokalen Systemdienst-Rechten unter Windows 8 und Windows Server 2012


Gerade erst gebloggt und doch schon nicht mehr aktuell. Blöd sowas aber wer konnte damit rechnen, dass Microsoft eine bestehende Funktionen die seit Ewigkeiten da ist, degradiert. Es geht um diesen Artikel: https://newyear2006.wordpress.com/2012/12/29/eingabeaufforderung-mit-lokalen-systemdienst-rechten-unter-windows/

Ausgehend von

sc create ntauthcmd binpath= "cmd /K start" type= own type= interact

und mittels

sc start ntauthcmd

konnte bisher eine Kommandozeile mit lokalen Systemdienstrechten gestartet werden und mehr oder weniger einfach darauf zugegriffen werden.

Dies funktioniert unter Windows 8 und Windows Server 2012 nicht mehr! Zumindest von Haus aus.

Wenn man unter diesen Systemen den Dienst startet, wird kein Icon in der Taskleiste angezeigt. Die Frage ist generell ob die Methode überhaupt noch funktioniert?

Mittels

TASKLIST /FI "IMAGENAME eq cmd.exe"

bekommt man jedoch schnell Klarheit. Denn mit jedem Aufruf von sc start ntauthcmd wird ein weiterer cmd.exe Eintrag hinzugefügt. Auch taucht die cmd.exe unter Services und mit Nummer 0 auf, also scheint dies noch perfekt zu funktionieren. Auch der Taskmanager führt die CMD.EXEs als Hintergrundprozesse.

Aber wie kommt man nun in die 0er Session?

Auf der Suche nach der Lösung hatte ich mir natürlich den Dienst UI0Detect, auch bekannt als “Erkennung interaktiver Dienste” oder in englisch “Interactive Service Detection”, angeschaut. Zunächst dachte ich, die Lösung wäre ganz einfach, denn dieser Dienst ist unter Windows 8 einfach auf manuellen Start eingestellt.

Mittels

sc qc UI0Detect

bekommt man die passenden Infos über den Dienst, hier die Ausgabe bei Windows 7

[SC] QueryServiceConfig ERFOLG

SERVICE_NAME: UI0Detect
        TYPE               : 110  WIN32_OWN_PROCESS (interactive)
        START_TYPE         : 3   DEMAND_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\Windows\system32\UI0Detect.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Erkennung interaktiver Dienste
        DEPENDENCIES       :
        SERVICE_START_NAME : LocalSystem

Was soll das? DEMAND_START ist Starttyp Manuell in der GUI! Also kein Unterschied, dennoch läuft das Ding auf Windows 7 automatisch aber bei Windows 8 nicht. Wer es startet? Keine Ahnung.

Aber man kann ja den Dienst einfach mal selber starten. Was scheren einen schon unzählige Programme die leider immer noch nicht sauber mit der Trennung von Diensten und UI umgehen können. Also

sc start UI0Detect

abgesetzt und dies erhalten

SERVICE_NAME: ui0detect
        TYPE               : 110  WIN32_OWN_PROCESS  (interactive)
        STATE              : 4  RUNNING
                                (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 6804
        FLAGS              :

Na also sieht doch gut aus, blöd nur dass

sq query ui0detect

dies zurückgibt

SERVICE_NAME: ui0detect
        TYPE               : 110  WIN32_OWN_PROCESS  (interactive)
        STATE              : 1 STOPPED
        WIN32_EXIT_CODE    : 1  (0x1)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

Verdammt, es könnte alles so einfach sein. Unter der GUI heißt die offizielle Meldung:

Der Dienst "Erkennung interaktiver Dienste" auf "Lokaler Computer" konnte nicht gestartet werden.

Fehler 1: Unzulässige Funktion.

Supi und jetzt?

Die Suchmaschine meines Vertrauens förderte gleich beim ersten Eintrag einen brauchbaren Link hervor, nachdem man sie mit den richtigen Parametern gefüttert hatte. https://www.google.de/search?q="interactive+service+detection"+"error+1"

Der Link ist http://www.coretechnologies.com/WindowsServices/FAQ.html#UI0DetectFailsToStart und beschreibt genau obiges Problem. Dabei wird ein Registrierungseintrag beschrieben  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows mit Namen NoInteractiveServices beschrieben.

Also diesen mal kurz abgefragt mittels

reg query HKLM\SYSTEM\CurrentControlSet\Control\Windows /v N
oInteractiveServices

ergibt unter Windows 7

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows
    NoInteractiveServices    REG_DWORD    0x0

und unter Windows 8:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows
    NoInteractiveServices    REG_DWORD    0x1

Also tatsächlich ein Unterschied. Also diesen Wert mittels

reg add HKLM\SYSTEM\CurrentControlSet\Control\Windows /v N
oInteractiveServices /t REG_DWORD /d 0

geändert und nochmal den Dienst gestartet und flutsch, alles funktioniert wieder so wie gewohnt!

So das war mal wieder viel Geschreibsel für nichts. Aber die entscheidenden Zeilen unter Windows 8 sind:

sc create ntauthcmd binpath= "cmd /K start" type= own type= interact

reg add HKLM\SYSTEM\CurrentControlSet\Control\Windows /v NoInteractiveServices /t REG_DWORD /d 0

sc start ntauthcmd

Dabei ist anzumerken, dass die Änderung an der Registrierung nur einmalig gemacht werden muss. Danach reagiert Windows 8 wie Windows 7 und reagiert auf künftige sc start ntauthcmd automatisch.

Auf der Suche nach der Lösung bin ich noch über diese Blogeinträge gestolpert, welche einem das Thema mit UI0Detect und mögliche Problemlösungen nahebringen: http://blogs.msdn.com/b/patricka/archive/2010/04/27/what-is-interactive-services-detection-and-why-is-it-blinking-at-me.aspx und http://blogs.msdn.com/b/patricka/archive/2011/03/14/troubleshooting-interactive-services-detection.aspx. Wenn ich mir dabei die Kommentare so anschaue, dann scheint das immer noch aktuell ein Thema zu sein, dabei ist die Umstellung, wo mit Vista kam, jetzt schon so alt. Vielleicht hat MS die Funktion doch zu früh deaktiviert.

5 Antworten to “Eingabeaufforderung mit lokalen Systemdienst-Rechten unter Windows 8 und Windows Server 2012”

  1. Wifi Netzwerksicherheitsschlüssel unter Windows per Powershell auslesen « Das nie endende Chaos! Says:

    […] Aber doch der Versuch etwas Ordnung reinzubringen. « Eingabeaufforderung mit lokalen Systemdienst-Rechten unter Windows 8 und Windows Server 2012 […]

  2. Andy Says:

    Danke für den Tip zu:
    Der Dienst „Erkennung interaktiver Dienste“ auf „Lokaler Computer“ konnte nicht gestartet werden.

    Fehler 1: Unzulässige Funktion.

    Hat perfekt funktioniert. Mann, was habe ich gesucht …

  3. Patrick Says:

    Trotz Änderung des Registry-Wertes, abschalten der Benutzerkontensteuerung und starten der „Interactive Service Detection“ bekomme ich sowohl unter Win7 als auch unter Win8 dieses Problem nicht in den Griff.
    Hat hier vlt. noch wer einen Lösungsansatz für mich?

  4. Quirel Says:

    Hier eine weitere Variante, wie man zum Ziel kommt, diese funktioniert sogar unter Windows 10:

    Powershell -command „Set-ItemProperty ‚HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\OSK.EXE‘ -Name Debugger -Type String -Value ‚CMD.EXE‘ -Force; (New-Object -ComObject Shell.Application).WindowsSecurity()“

    Nun muss man nur noch am Windows Sicherheitsbildschirm das Symbol für die Eingabehilfen (Kreis mit zwei Pfeilen) anklicken und dort auf Bildschirmtastatur. Schon ist ist wieder eine Eingabeaufforderung offen mit whoami nt-autorität\system.

    So einfach ist das…

  5. Quirel Says:

    Wer sich noch etwas tiefer im System umschauen möchte, dem sei wie immer Powershell ans Herz gelegt, vor allem mit der tollen Funktion Invoke-TokenManipulation hier: https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-TokenManipulation.ps1. Damit kann man einen Prozess mit beliebigen Rechten starten. Hat keine Abhängigkeiten und lässt sich direkt ausführen.

    In Verbindung mit den Erklärungen hier http://blogs.technet.com/b/heyscriptingguy/archive/2014/11/23/weekend-scripter-manage-ntfs-inheritance-and-use-privileges.aspx wird schnell klar was damit alles machbar ist. Weitere Erklärung in diesem Zusammenhang: http://blogs.technet.com/b/heyscriptingguy/archive/2012/07/05/use-powershell-to-duplicate-process-tokens-via-p-invoke.aspx

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: