Qual conta do Windows é usada quando ninguém está logado?

25

Quando ninguém está logado no Windows, (a tela de logon é exibida) para qual usuário os processos atuais estão sendo executados? (Os drivers de vídeo / som, sessão de login, qualquer software de servidor, controles de acessibilidade, etc. Eles não podem ser nenhum usuário ou o usuário anterior porque ninguém está logado. E os processos que foram iniciados por um usuário, mas continuam a executar após o logoff? (Por exemplo, servidores HTTP, FTP e outros itens de rede). Eles alternam para a conta SYSTEM? Se um processo iniciado pelo usuário alternar para SYSTEM, isso indica uma vulnerabilidade muito séria. O processo é executado como esse usuário continuar a ser executado como esse usuário após o logoff?

É por isso que o hack do SETHC permite que você use o CMD como sistema?

Kunal Chopra
fonte
"Trocar usuários" não é, na verdade, uma operação em preto e branco no Windows. Um serviço pode representar vários usuários ao mesmo tempo e ainda estar usando a conta original. Isso é útil para serviços que precisam agir em nome de usuários específicos, como visitantes autenticados do site.
MSalters
3
O Windows é um sistema operacional multiusuário, o que significa que processos diferentes podem pertencer a usuários diferentes ao mesmo tempo . Não é assim que você loga o computador inteiro "alterna" para sua conta.
El.pescado

Respostas:

40

Quando ninguém está logado no Windows, (a tela de logon é exibida) para qual usuário os processos atuais estão sendo executados? (Os drivers de vídeo / som, sessão de login, qualquer software de servidor, controles de acessibilidade, etc.

Quase todos os drivers são executados no modo kernel ; eles não precisam de uma conta, a menos que iniciem processos no espaço do usuário. Os poucos drivers de espaço do usuário são executados no SYSTEM.

Não posso verificar a sessão de login no momento, mas tenho certeza de que também usa SYSTEM. Você pode ver o logonui.exe no Process Hacker ou no SysInternals ProcExp . De fato, você pode ver tudo dessa maneira.

"Software servidor", consulte os serviços do Windows abaixo.

E os processos que foram iniciados por um usuário, mas continuam sendo executados após o logoff? (Por exemplo, HTTP, servidores FTP e outros itens de rede). Eles alternam para a conta SYSTEM?

Existem três tipos aqui:

  1. Processos antigos simples de "plano de fundo". Aqueles são executados na mesma conta que quem os iniciou e não são executados após o logoff. O processo de logoff mata todos eles.

    "HTTP, servidores FTP e outros itens de rede" não são executados como processos em segundo plano regulares. Eles funcionam como serviços.

  2. Processos de "serviço" do Windows. Esses não são iniciados diretamente, mas via Service Manager. Por padrão, os serviços são executados como LocalSystem (que isanae diz igual a SYSTEM), embora possam ter contas dedicadas configuradas.

    (Obviamente, praticamente ninguém se incomoda. Eles apenas instalam o XAMPP ou o WampServer ou alguma outra porcaria, e permitem que funcione como SYSTEM, para sempre sem patch.)

    Nos sistemas Windows recentes, acho que os serviços também podem ter seus próprios SIDs, mas, novamente, ainda não pesquisei muito sobre isso.

  3. Tarefas agendadas. Eles são iniciados pelo serviço "Agendador de tarefas" "em segundo plano" e sempre são executados na conta configurada na tarefa (geralmente quem criou a tarefa).

Se um processo iniciado pelo usuário mudar para SYSTEM, isso indica uma vulnerabilidade muito séria

Não é uma vulnerabilidade, porque você deve ter privilégios de administrador para instalar um serviço. Já ter privilégios de administrador permite fazer praticamente tudo.

(veja também várias outras não vulnerabilidades do mesmo tipo)

gravidade
fonte
2
Vale a pena notar que grande parte do IIS é executada em contas com privilégios mais baixos, criadas especificamente para processos do IIS prontas para uso. (Isso abrangeria muitos servidores HTTP, FTP, etc. do Windows.) Veja aqui alguns detalhes. Portanto, muitas vezes depende dos padrões de qualquer programa que você esteja usando.
Jpmc26 # 5/15
1
O SISTEMA e o Administrador local são essencialmente um e o mesmo. Depois de ter um, você pode obter o outro, e o sistema operacional apenas apresenta obstáculos destinados principalmente a evitar erros. (Nota: The Old New Thing não é documentação oficial da Microsoft.)
um CVn 05/10
3
Atualmente, muitos serviços são executados como NetworkService ou LocalService, não LocalSystem.
Ben Voigt
2
A partir do Windows 7 e 2008 R2, as Contas de Serviço Gerenciado e Contas Virtuais permitem a execução de serviços com suas próprias identidades, para que você não tenha muitos serviços compartilhando LocalService / NetworkService / LocalSystem, limitando o acesso se um serviço tiver uma vulnerabilidade.
afrazier
2

Os processos de login e pré-login são executados como SYSTEM (também chamado de LocalSystem). De fato, uma maneira de obter um shell (como um prompt do CMD) em execução como SYSTEM em algumas versões do Windows é substituir um programa de acessibilidade, como o leitor de tela, a lente de aumento ou o teclado na tela, por uma cópia de (ou link para) CMD.EXEe, em seguida, use o atalho para ativar esse recurso de acessibilidade antes de efetuar o login. Você receberá um prompt de comando, mesmo que não haja usuários conectados e CMDestará executando como SYSTEM.

(Nota: isso é perigoso, obviamente, pois permite que as pessoas ignorem o processo de login do Windows. Você nunca deve configurar um computador dessa maneira e deixá-lo assim.)

CBHacking
fonte
1
Funciona no Windows 7, substituiu sethc.exe por cmd.exe em C: \ Windows \ System32 \
1

Eles não "mudam" para nada; esses processos nunca são executados no contexto atual do usuário.
Eles pertencem ao SYSTEMusuário.

Todos os processos e serviços de propriedade de um usuário individual são encerrados no logout.
É isso que significa fazer logout .

Corridas de leveza com Monica
fonte
Não tenho certeza ... Em primeiro lugar, encontrei um post do MS Technet onde (não muito significa isso) uma resposta aceita pela equipe afirmou que os serviços não são encerrados no logout. Não estou certo de que este é uma definição precisa de Sair de modo mais geral, quer: Eu vi vários daemons em Linux ficar em torno depois de eu sair um usuário, em seguida, pscomo um outro
underscore_d
1
Isso não está correto. Os serviços podem ser iniciados como outro usuário e iniciarão e continuarão sendo executados sem o usuário "logado". Eles iniciarão sua própria sessão com as credenciais dos usuários, portanto, na verdade, o usuário efetuará login enquanto o serviço é executado, mas os programas de desktop / inicialização automática etc. não serão executados, e é isso que os usuários normais entendem como "logado". Ainda assim, o serviço será executado com as credenciais do usuário e terá acesso aos arquivos dos usuários.
Josef
@ Josef: Seu argumento parece se resumir a "algumas pessoas abusam do termo 'logado'". O conteúdo real do seu comentário concorda com a minha resposta: esse usuário é considerado logado enquanto tiver serviços / processos em execução em sua conta.
Lightness Races com Monica
@LightnessRacesinOrbit não, existe uma diferença real. Se você criar um serviço com sua conta e executar na inicialização, não haverá nenhum processo iniciado para você mostrar a área de trabalho (portanto, nenhum dwm.exe ou explorer.exe em execução), todos os seus programas de inicialização automática não serão executados. Portanto, se você tiver uma sessão de login interativa, muito mais coisas estarão ativas do que se apenas uma sessão de serviço estiver em execução. O que exatamente é "logado" está aberto ao debate. Mesmo se um serviço for executado com suas credenciais, você ainda precisará fazer login para usar o Windows!
Josef
1
Bem, "esses processos nunca são executados no contexto atual do usuário" ainda está errado. Os serviços são executados no contexto do usuário definido para eles. Para serviços internos do Windows, essa é uma das contas do sistema. Para outros serviços, pode ser qualquer conta. Especialmente, o software para servidor deve criar uma nova conta de usuário e executar com essas credenciais.
Josef