Perché alcuni processi non di sistema sono elencati come SYSTEM sotto il nome utente nel Task Manager di Windows?
Alcuni retroscena:
I processi vengono sempre eseguiti nel contesto di un principale di sicurezza. Ogni principale di sicurezza è associato a un ID di sicurezza (SID). Questa è l'unità primaria di identificazione di chi sta eseguendo il processo. Windows guarda qualcosa chiamato token di accesso del processo per identificare il SID (il nome utente è solo un nome leggibile per i mortali)
Guarda più da vicino i contesti di esecuzione dei processi:
Lo scenario più tipico di creazione di un processo è per voi di fare doppio clic su un'applicazione o avviarla da un prompt di cmd. In entrambi questi casi, il processo di destinazione eredita il token di accesso del processo padre (explorer.exe o cmd.exe) e quindi viene eseguito nel vostro contesto utente. Questo perché explorer.exe è stato avviato nel vostro contesto utente quando vi siete loggati per la prima volta nella sessione corrente - (potete verificarlo nel task manager)
Quando vi disconnettete dalla vostra sessione utente, c'è un sacco di lavoro di pulizia che windows fa per voi, uno di questi è uccidere il processo explorer.exe. Questo uccide tutti i processi figli di explorer.
(perché i figli sono legati al tempo di vita del genitore attraverso qualcosa chiamato oggetti lavoro. Potete trovare maggiori informazioni qui - Oggetti di lavoro (Windows))
Il kernel di Windows e molti altri servizi critici non capiscono il concetto di utente/sessione ecc. e sono agnostici ad esso. Tutto ciò di cui hanno bisogno è il SID (che è disponibile in qualsiasi token di processo)
Ora, se ti disconnetti dal tuo account utente, certamente non significa che windows non sia in esecuzione.
(Se windows non fosse davvero in esecuzione, non sareste in grado di accedere di nuovo :) )
Per poter rientrare/perché windows continui ad eseguire altri servizi critici in background/perché il kernel stesso sia in esecuzione :--- c'è bisogno di un contesto di esecuzione che NON è legato a nessuna sessione utente.
Questo è il punto in cui entra in gioco NT AUTHORITY\SYSTEM. Questo è il più alto livello di privilegio che un processo potrebbe eseguire in un contesto non utente. Ci sono altri livelli di privilegio più bassi come SERVIZIO DI RETE, SERVIZIO LOCALE e.t.c.
Informazioni aggiuntive:
Il SISTEMA fa parte del gruppo "Amministratori" nella vostra macchina e quindi un processo in esecuzione nel suo contesto potrebbe potenzialmente fare qualsiasi cosa che un amministratore sarebbe in grado di fare alla vostra macchina.
(azioni privilegiate come la modifica del registro, l'installazione di driver, ecc.)
Si potrebbe scrivere un SERVIZIO NT, installarlo per essere eseguito come SYSTEM e poi chiamare:
cmd> Net start "service_name"
Questo eseguirebbe il vostro servizio nel contesto SYSTEM.
C'è anche uno strumento (scritto da Mark Russinovich | Facebook) chiamato psexec.exe, che può lanciare normali eseguibili in contesto SYSTEM.
Converte internamente il tuo .exe in una NT SERVICE dll, la installa ed esegue.
È disponibile per il download gratuito qui - PsExec
Articoli simili
- Cosa significano i dettagli sotto la parte della memoria nel task manager?
- Quali sono le attività che posso terminare in modo sicuro nel task manager di Windows? Il mio utilizzo della CPU e del disco è troppo alto.
- Cosa significa 'rss' nel programma task manager di xubuntu?
- Perché Task Manager mostra che ho 13 schede di Google Chrome aperte quando ne ho chiaramente 1?