Elevação: Adquirindo o Token de Administrador no Administrador vs Contas Padrão no Windows

1

Recentemente, fiquei confuso com o funcionamento do UAC entre contas padrão e contas de administrador,

Como todos sabemos, quando o UAC está ativado, o UAC permite que contas padrão ou Administrador no Modo de Aprovação de Administrador obtenham acesso ao token de administrador para executar tarefas que exigem acesso administrativo à máquina - permitindo a troca de tokens sem alternar usuários,

No entanto, parece que a troca de tokens não é realmente o que acontece: Há algum tempo, eu corri um aplicativo que modificava o shell (explorer.exe). Eu executei o programa em uma conta padrão, mas precisava de acesso elevado: portanto, usei o UAC para fornecer credenciais de administrador para que ele pudesse ser concluído. Eu não vi nenhuma mudança na casca; Eu então entrei na conta de administrador cujas credenciais eu usei e vi que o shell na conta tinha sido alterado, o que obviamente não era o que eu queria

Pareceu-me que o UAC era basicamente uma transação do tipo "Executar como usuário", na qual ele realmente executava o programa como esse usuário. Isso significava que eu não estava apenas executando-o de forma elevada: estava literalmente executando o programa como esse usuário,

Minha pergunta é: é possível que uma conta padrão use o token de administrador, mas na verdade execute o programa como um usuário padrão e use o perfil do usuário atual? Caso contrário, parece-me que, se você precisa executar alguma tarefa de administrador, é muito necessário fazer login em uma conta de administrador que anula todo o propósito do UAC - já que o UAC executa um programa como administrador, em vez de usar apenas direitos de administrador,

Esta separação de token e perfil é possível? Ou todos os usuários precisam ser administradores nesse caso? Parece-me que isso seria responsável por muitas organizações que apenas concedem acesso total de administrador a todos os usuários,

Alguém por favor pode esclarecer isso?

Gostaria de saber se teria sido possível fornecer um token de administrador ao programa, mas executá-lo na conta de usuário atual, não na conta de usuário do administrador cujas credenciais foram fornecidas - em outras palavras, teria sido possível modificar o shell na conta padrão com esse programa? O objetivo seria lançar o processo como usuário logado (independentemente dos privilégios atuais) com direitos administrativos, não como um processo em uma conta com direitos de administrador.

Espero que isso faça sentido,

ESCLARECIMENTO : Não estou me referindo ao Modo de Aprovação do Administrador ou como o UAC funciona. Eu já sei que, se o UAC estiver definido como seguro, até mesmo os Administradores serão solicitados e, a menos que estejam desativados, os administradores usarão o token padrão por padrão. Eu estou falando sobre quando o token de administrador é ganho, é possível ainda executar o processo como o usuário logado, apenas com o token de administrador? (não usando Run 'user' mas talvez algo como run as / with 'token'), etc ... Desta forma, seria usando privilégios administrativos genéricos ao invés de privilégios administrativos de um usuário.

Isso é possível, ou eu acabei de apontar um recurso que não está na Janela?

Eu, para alcançar a meta descrita aqui, teria que talvez transformar a conta padrão em uma conta de administrador a qualquer momento em qualquer coisa que exija elevação e depois transformá-la em uma conta padrão quando isso for feito? Com base nos comentários, parece que isso não é possível e que parece ser uma falha no sistema operacional porque torna o UAC basicamente inútil.

CASE IN POINT : Há alguns anos, eu estava tentando executar um programa que mudaria o tema do meu computador que precisava corrigir o sistema (um desses programas de terceiros). Requeria direitos de administrador. Eu não vi nenhuma alteração, mas então eu entrei na conta de administrador cuja senha eu tinha usado, e achei que toda a atividade tinha sido aplicada a essa conta !! Eu tive que mexer com isso algumas vezes para fazê-lo funcionar, mas foi um processo muito complicado. A solução mais fácil seria apenas promover temporariamente essa conta padrão para um administrador e depois rebaixá-la posteriormente?

    
por InterLinked 02.06.2016 / 14:58

2 respostas

1

Você não pode ter um programa em execução em uma conta padrão, mas com permissões de administrador.

Você está enganado que o UAC é um "Executar como outro usuário". Programas executados sob o nome de usuário de um Admin são executados com permissões padrão por padrão. Somente quando um programa é "elevado" obtém permissões de administrador. Isso ocorre mesmo se sua conta de usuário for um administrador.

O UAC foi criado para resolver o problema de que todos os processos em execução sob um usuário que era administrador tinham permissões de administrador.

    
por 02.06.2016 / 21:31
1

Sim, é possível ...
Abra um console e digite " runas "

use the /profile switch to select a profile to run the program...
use the /savecred switch to save the admin credentials you choose...

...

RUNAS USAGE:

RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
        /user:<UserName> program

RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
        /smartcard [/user:<UserName>] program

RUNAS /trustlevel:<TrustLevel> program


   /noprofile        specifies that the user's profile should not be loaded.
                     This causes the application to load more quickly, but
                     can cause some applications to malfunction.
   /profile          specifies that the user's profile should be loaded.
                     This is the default.
   /env              to use current environment instead of user's.
   /netonly          use if the credentials specified are for remote
                     access only.
   /savecred         to use credentials previously saved by the user.
                     This option is not available on Windows 7 Home or Windows 7 Starter Editions
                     and will be ignored.
   /smartcard        use if the credentials are to be supplied from a
                     smartcard.
   /user             <UserName> should be in form USER@DOMAIN or DOMAIN\USER
   /showtrustlevels  displays the trust levels that can be used as arguments
                     to /trustlevel.
   /trustlevel       <Level> should be one of levels enumerated
                     in /showtrustlevels.
   program         command line for EXE.  See below for examples

Examples:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:[email protected] "notepad \"my file.txt\""

NOTE:  Enter user's password only when prompted.
NOTE:  /profile is not compatible with /netonly.
NOTE:  /savecred is not compatible with /smartcard.
    
por 02.06.2016 / 22:37