Come si esegue CMD.exe con l'account di sistema locale?


144

Attualmente sto eseguendo Vista e vorrei completare manualmente le stesse operazioni del mio servizio Windows. Poiché il servizio Windows è in esecuzione con l'account di sistema locale, vorrei emulare questo stesso comportamento. Fondamentalmente, vorrei eseguire CMD.EXE con l'account di sistema locale.

Ho trovato informazioni online che suggeriscono di lanciare CMD.exe utilizzando il comando AT Utilità di pianificazione DOS, ma ho ricevuto un avviso Vista che "a causa di miglioramenti della sicurezza, questa attività verrà eseguita al momento escluso ma non in modo interattivo". Ecco un comando di esempio:

AT 12:00 /interactive cmd.exe

Un'altra soluzione ha suggerito di creare un servizio Windows secondario tramite Service Control (sc.exe) che avvia semplicemente CMD.exe.

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

In questo caso il servizio non si avvia e genera il seguente messaggio di errore:

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

Il terzo suggerimento era di avviare CMD.exe tramite un'attività pianificata. Sebbene sia possibile eseguire attività pianificate con vari account, non credo che l'account di sistema locale sia uno di questi.

Ho provato a usare anche le Runas, ma penso che sto correndo con le stesse restrizioni che ho riscontrato durante l'esecuzione di un'attività pianificata.

Finora, ciascuno dei miei tentativi è fallito. Eventuali suggerimenti?

Risposte:


221

Anche se non ho testato personalmente, ho buone ragioni per credere che la soluzione AT COMMAND sopra menzionata funzionerà per XP, 2000 e Server 2003. Per i test my e Bryant, abbiamo identificato che lo stesso approccio non funziona con Vista o Windows Server 2008 - molto probabilmente a causa della maggiore sicurezza e del parametro / Interactive che è obsoleto.

Tuttavia, mi sono imbattuto in questo articolo , che dimostra l'uso di PsTools da Sysinternals (che è stata acquisita da Microsoft nel luglio 2006.) ho lanciato la linea di comando tramite il seguente e improvvisamente mi è stato in esecuzione con l'account Amministratore locale come per magia:

psexec -i -s cmd.exe

PSTools funziona bene. È un set di strumenti leggero e ben documentato che fornisce una soluzione adeguata al mio problema.

Mille grazie a coloro che hanno offerto aiuto.


11
Mi piace di più con l' -daggiunta, in modo da poter continuare a utilizzare la console da cui è stato avviato.
SamB

1
Ho appena provato su Vista x64 e ho ottenuto "Il servizio PsExec in esecuzione su ... è una versione incompatibile." Provato direttamente da \\ live.sysinternals.com \ tools \ psexec e dall'ultimo binario. Non sembra esserci la versione x64
ZXX

52
  1. Scarica psexec.exe da Sysinternals .
  2. Inseriscilo nel tuo disco C: \.
  3. Accedere come utente standard o admin e utilizzare il comando seguente: cd \ . Questo ti mette nella directory principale del tuo disco, dove si trova psexec.
  4. Utilizzare il comando seguente: psexec -i -s cmd.exedove -i è per interattivo e -s è per l'account di sistema.
  5. Al termine del comando, verrà lanciata una shell cmd. generewhoami ; dirà "sistema"
  6. Apri taskmanager. Kill explorer.exe.
  7. Da un tipo elevato di shell dei comandi start explorer.exe .
  8. Quando viene avviato Explorer, notare il nome "sistema" nella barra dei menu di avvio. Ora puoi eliminare alcuni file nella directory system32 che come amministratore non puoi eliminare o come amministratore dovresti provare a cambiare le autorizzazioni per eliminare quei file.

Gli utenti che provano a rinominare o eliminare i file di sistema in qualsiasi directory protetta di Windows devono sapere che tutti i file Windows sono protetti da DACLS durante la ridenominazione di un file che è necessario modificare il proprietario e sostituire TrustedInstaller che possiede il file e rendere qualsiasi utente come un utente che appartiene al gruppo di amministratori come proprietario del file, quindi prova a rinominarlo dopo aver modificato l'autorizzazione, funzionerà e mentre stai eseguendo windows explorer con i privilegi del kernel sei un po 'limitato in termini di accesso alla rete per motivi di sicurezza ed è ancora un argomento di ricerca per me riaccedere


Uso questo trucco per avviare Explorer spesso come utente elevato. Soprattutto, quando ci si collega tramite VNC a un PC, dove è necessario configurare le impostazioni di rete, ad esempio. +1 da me
TPAKTOPA

Questo trucco sembra non valido ora. Il mio sistema operativo è Windows 7 SP1. Sono arrivato al punto di vedere il "sistema" nella barra dei menu di avvio. Ma ancora quando si rinomina un file nella cartella system32, si dice che l'autorizzazione è stata negata. La cartella system32 è ora di proprietà di TrustedInstaller e anche l'account di sistema locale ha solo autorizzazioni speciali.
Shaohua Li,

se si tenta di rinominare o eliminare qualsiasi file che si trova in una directory di Windows protetta di proprietà di TrustedInstaller, l'utente corrente deve essere il proprietario del file modificando l'autorizzazione, quindi è possibile rinominarlo o eliminarlo, spesso utilizzato per delimitare slmgr. exe e altri file di sistema per ottenere l'accesso illimitato alla versione trail di Windows senza pagare per essa
raven

10

Ho trovato una risposta qui che sembra risolvere il problema aggiungendo / k start al parametro binPath. Quindi questo ti darebbe:

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

Tuttavia, Ben ha detto che non ha funzionato per lui e quando l'ho provato su Windows Server 2008 ha creato il processo cmd.exe nel sistema locale, ma non era interattivo (non riuscivo a vedere la finestra).

Non penso che ci sia un modo semplice per fare ciò che chiedi, ma mi chiedo perché lo stai facendo? Stai solo cercando di vedere cosa sta succedendo quando esegui il tuo servizio? Sembra che potresti semplicemente usare la registrazione per determinare cosa sta succedendo invece di dover eseguire l'exe come sistema locale ...


Ciao Bryant. Questa soluzione è essenzialmente delineata nella domanda. Funziona davvero per te? Sta causando un fallimento per me. Grazie.
Ben Griswold,

Bryant, ho un servizio che gestisce l'installazione e la disinstallazione di un altro componente. Voglio dare al nostro gruppo di supporto un modo semplice per disinstallare "forzatamente" il componente se il mio Servizio non riesce a fare il suo lavoro. Durante il test, vorrei poter forzare anche la disinstallazione. Grazie per l'aiuto ..
Ben Griswold,

1
@Ben: il tipo di avvio "Rilevamento servizi interattivi" è impostato su "Manuale" o "Disabilitato"?
Hello71,

1
Per consentire i servizi interattivi per Server 2012, è HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServicesnecessario impostare come 0 (predefinito 1)
Ivan Chau


6

Ti consiglierei di elaborare il set minimo di autorizzazioni di cui il tuo servizio ha davvero bisogno e di usarlo, piuttosto che il contesto del sistema locale troppo privilegiato. Ad esempio, Servizio locale .

I servizi interattivi non funzionano più - o almeno non mostrano più l'interfaccia utente - su Windows Vista e Windows Server 2008 a causa dell'isolamento della sessione 0 .


4
Mike, grazie per la risposta. Sebbene sia d'accordo con la tua raccomandazione e penso che tutti trarranno beneficio dalla tua risposta, non credo che tu abbia risposto alla domanda.
Ben Griswold,

@Ben Griswold: Tuttavia, sottolinea esattamente cosa fa fallire il vecchio modo in Vista. +1.
SamB

1
La domanda è "Come si esegue CMD.exe con l'account di sistema locale?"
Jaco Pretorius,

2
@SamB, ed è a questo che servono i commenti, quando hai qualcosa da contribuire che in realtà non è una risposta .
Synetech,

6

Utilizzo di Secure Desktop per l'esecuzione cmd.exe comesystem

Possiamo accedere facilmente al kernel CMDin Windows XP / Vista / 7 / 8.1 collegando un debugger:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. Esegui CMDcome amministratore

  2. Quindi utilizzare questo comando in Elevato:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. Quindi eseguire osk(su schermo). Non viene ancora eseguito con il livello di integrità del sistema se si controlla attraverso Esplora processi, ma se è possibile utilizzare OSK nella sessione di servizio, verrà eseguito comeNT Authority\SYSTEM

quindi ho avuto l'idea che dovevi eseguirlo su Secure Desktop.

Avvia qualsiasi file come amministratore. Quando vengono visualizzati i prompt di Controllo dell'account utente, basta premere Win+ Ue avviare OSKe inizierà CMDinvece. Quindi nel prompt elevato, digita whoamie otterraiNT Authority\System . Successivamente, è possibile avviare Explorer dalla shell dei comandi di sistema e utilizzare il profilo Sistema, ma si è in qualche modo limitati su ciò che è possibile fare sulla rete attraverso i privilegi di SISTEMA per motivi di sicurezza. Aggiungerò ulteriori spiegazioni dopo come l'ho scoperto un anno fa.

Una breve spiegazione di come ciò avvenga

Esecuzione con Cmd.exeaccount di sistema locale senza utilizzoPsExec . Questo metodo esegue la tecnica Debugger Trap che è stata scoperta in precedenza, beh, questa tecnica ha i suoi vantaggi e può essere utilizzata per intrappolare alcuni worm furtivi / dannosi o malware nel debugger ed eseguire altri exe invece di fermare la diffusione o il danno temporaneo. qui questa chiave di registro intercetta la tastiera su schermo nel debugger nativo di Windows ed esegue invece cmd.exe ma cmd verrà comunque eseguito con i privilegi degli Utenti connessi, tuttavia se eseguiamo cmd in session0 possiamo ottenere la shell di sistema. quindi aggiungiamo qui un'altra idea che abbracciamo il cmd sul desktop sicuro, ricordiamo che il desktop sicuro viene eseguito nella sessione 0 sotto l'account di sistema e otteniamo la shell di sistema. Quindi ogni volta che esegui qualcosa di elevato, devi rispondere al prompt UAC e ai prompt UAC su desktop scuro e non interattivo e una volta che lo vedi devi premereWin +Ue quindi seleziona OSKsaraiCMD.exein esecuzione con i privilegi di sistema locale. Esistono ancora più modi per ottenere l'accesso al sistema localeCMD


ya ci sono anche altri modi per eseguire cmd come privilegi elevati con autorizzazione NT
corvo

Questo è molto carino. Molto bella. Odio fare affidamento su componenti aggiuntivi di terze parti per fare qualcosa. Questo è super veloce e facile. Permanente anche :-) L'unico problema è che devi eseguire tutti i comandi nella finestra UAC e che solo alcune applicazioni si aprono. Explorer.exe non si apre ad esempio. Voglio sperimentare se c'è un altro modo per innescare questo. Voglio essere in grado di eseguire altre app nell'ambiente Windows nativo senza l'UAC che limita determinate app. Grandi cose Raven!
KonaRin,

3

un'alternativa a questo è Process hacker se vai in esecuzione come ... (Interactive non funziona per le persone con miglioramenti della sicurezza ma che non contano) e quando la casella si apre metti Servizio nel tipo di casella e metti SISTEMA nella casella utente e metti C : \ Users \ Windows \ system32 \ cmd.exe lascia il resto fai clic su OK e boch hai una finestra con cmd su di esso ed esegui come sistema ora fai gli altri passaggi per te perché sto suggerendo di conoscerli


2

C'è un altro modo. Esiste un programma chiamato PowerRun che consente l'esecuzione di cmd elevati. Anche con diritti TrustedInstaller. Consente sia i comandi della console che quelli della GUI.


1

se è possibile scrivere un file batch che non deve essere interattivo, provare a eseguire quel file batch come servizio, per fare ciò che deve essere fatto.


0

Io uso il utilità RunAsTi per funzionare come TrustedInstaller (privilegio elevato). L'utilità può essere utilizzata anche in modalità di ripristino di Windows (la modalità che si accede facendoShift+Restart), il psexec utilità non funziona lì. Ma è necessario aggiungere i tuoi C:\Windowse C:\Windows\System32(non X:\Windowse X:\Windows\System32) percorsi alla PATHvariabile d'ambiente, altrimenti RunAsTi non funziona in modalità di ripristino, sarà solo la stampa: AdjustTokenPrivileges per SeImpersonateName: Non tutti i privilegi o gruppi di riferimento sono assegnati al chiamante .


0

Utilizzando l'utilità di pianificazione, pianificare un'esecuzione di CMDKEY in esecuzione in SYSTEM con gli argomenti appropriati di / add: / user: e / pass:

Non è necessario installare nulla.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.