Existe um equivalente de SU para Windows

32

Existe uma maneira (quando conectado como administrador ou como membro do grupo de administradores) de se disfarçar como um usuário não privilegiado? Especialmente em um ambiente AD.

por exemplo, no mundo Unix, eu poderia fazer o seguinte (como root):

# whoami
root
# su johnsmith
johnsmith> whoami
johnsmith
johnsmith> exit
# exit

Preciso testar / configurar algo na conta de um usuário e não quero saber a senha ou redefini-la.

Edit:
runas não vai cortá-lo. Idealmente , toda a minha área de trabalho se tornaria o usuário etc., e não apenas em uma janela de cmd.

BIBD
fonte
Apenas curioso, mas por que você precisa fazer login como usuário? Normalmente, eu só precisaria fazer isso para configurar o email. No entanto, descobri que na maioria das vezes consigo configurar tudo via Diretiva de Grupo / Scripts / etc.
217 Dayton Brown

Respostas:

20

Tenho certeza de que não há maneira suportada de executar como um usuário diferente sem ter as credenciais desse usuário. É uma medida de não repúdio. Alguém não pode dizer: "Eu não fiz", porque eles fizeram ou alguém com suas credenciais. E, pelo segundo, teriam que dar as credenciais à outra pessoa.

Normalmente, como faço o que preciso fazer enquanto estiver conectado como outro usuário é usar a assistência remota para essencialmente o RDP na sessão e permitir que eles me concedam controle. Então eu faço o que quer que eles estejam assistindo (presumivelmente, pelo menos).

Normalmente, qualquer outra coisa pode ser feita com GPO / scripts.

Orihara
fonte
8
Eu acredito que isto está correto. E, IMHO, isso é uma melhoria de segurança no mundo UNIX. Gosto da ideia de que nem mesmo um administrador possa ser eu sem minha senha.
tomjedrz
3
Um administrador pode assumir outro usuário, redefinindo sua senha. Então eles podem entrar como você. No entanto, há uma trilha de evidências se você fizer isso. Primeiro, a senha dos usuários foi alterada para que eles saibam. Segundo, haverá logs de auditoria (supondo que a auditoria esteja ativada).
Erik Funkenbusch 01/06/09
3
Normalmente, é assim que eu também opero. No entanto, há pontos em que eu digo "Seria muito mais fácil fazer isso por Bob se eu fosse Bob", mas Bob foi para casa uma hora atrás.
BIBD
1
No que diz respeito ao "não-repúdio", me fazer redefinir sua senha primeiro não me impede de cometer atos maliciosos / estúpidos como outro usuário. Significa apenas que eu teria que trabalhar mais para encobrir quem era o responsável.
BIBD
9
Eu entendo o que eles estão tentando fazer. Eu apenas acho que é mais teatro de segurança do que segurança real.
BIBD
17

Eu notei muitas outras pessoas mencionando variações no comando runas e como você precisa saber a senha dos usuários, o que é verdade, mas não acho que alguém tenha respondido a pergunta silenciosamente. de "querer que toda a área de trabalho se tornasse usuário, etc., e não apenas em uma janela de cmd". Aqui está o que eu faço:

Nota : Vou me referir a este primeiro prompt de comando como CP1 para eliminar as confusões mais tarde.

Na sua conta de administrador, abra o prompt de comando

Para conta local

runas /profile /user:computernamehere\username cmd

Para conta de domínio

runas /profile /user:domainname\username cmd

OU da maneira que eu prefiro

runas /profile /user:username@domainname cmd

Nota: Um novo prompt de comando será aberto (CP2); este é o usuário no qual você está tentando efetuar login.

Abra o CP1 e digite:

taskkill /f /IM explorer.exe

Abra o CP2 e digite:

explorer.exe

Dependendo do computador, ele pode criar um perfil para o usuário se ele nunca tiver feito login antes. Você pode salvar o hassel mais tarde, mantendo as janelas do prompt de comando abertas para uso posterior.

Quando terminar o seu trabalho, faça o mesmo ao contrário.

No tipo CP2:

taskkill /f /IM explorer.exe

Abra o CP1 e digite:

explorer.exe

Agora você deve voltar à conta de administrador original. Você pode fazer uma verificação rápida tocando na tecla Windows e procurando o painel do usuário atual.

Espero que isso tenha ajudado.

Michael H
fonte
3
Isso é alguma mágica profunda.
mskfisher
@mskfisher Haha, se você acha que é doido, deveria ver o que eu tinha que fazer para descobrir como matar uma sessão psexec que havia trancado depois de executar um mau comando wmic. ... Pskill a partir de um segundo prompt de comando, apontado para a máquina remota, após usar o psservices para rastrear a identificação do processo para psexec no primeiro prompt de comando!
22615 Michael Jackson H
Bem, 4 anos depois, fui lembrado dessa pergunta e quando tive tempo de testá-la. UAU!
BIBD 26/10/16
No Windows 10, o uso de runas solicita a senha do usuário.
TheAmigo
7

Não há mecanismo interno no Windows para fazer isso. Isso pode ser feito, mas você precisará escrever algo para fazer o que quiser e provavelmente precisará mexer com APIs não documentadas.

Um dos pôsteres aqui, grawity, tem o direito de chamar CreateProcessAsUser (), mas você precisará criar um token com a API nativa não documentada zwCreateToken primeiro. Se você matou o Explorer e disparou uma nova instância do Explorer com CreateProcessAsUser (), tenho certeza de que você deseja o que deseja.

A Microsoft não facilita o que você quer fazer, porque não é do jeito que eles querem que você use o NT. Se você precisar fazer logon como usuário para solucionar seus problemas, na maioria dos casos, você estará fazendo isso de maneira não otimizada.

Você pode fazer alterações no registro do usuário sem fazer logon como ele (anexando a seção de registro e manipulando-a dessa maneira). Você pode fazer alterações nos arquivos em seu perfil de usuário sem estar conectado como usuário. Se você precisar "configurar o email" ou outras atividades "como o usuário", escreva scripts ou aproveite a funcionalidade interna (Modelos Administrativos de Diretiva de Grupo, preferências etc.) para fazer seu trabalho sujo.

Se você precisar fazer isso, dê uma olhada no RunAsEx no Code Project. Esse código deve fornecer uma boa idéia do que você precisa fazer. Eu não tentei o programa, mas parece que tudo está acontecendo da maneira certa.

Evan Anderson
fonte
5

Você pode usar o seguinte comando no Windows XP e posterior:

RunAs.exe

As opções da linha de comando estão disponíveis aqui .

Isso não funcionará sem saber a senha do usuário. Não acredito que exista uma maneira no Windows de operar com uma conta de usuário sem a senha devido à forma como os Identificadores de Segurança são carregados.

Doug Luxem
fonte
3
Eu acredito que o programa RunAs ainda requer que você saiba a senha dos usuários que eu acredito que os estados pergunta original não é conhecido
Kevin Kuphal
Você está certo ... eu tinha esquecido disso.
Doug Luxem
2

(Apenas um palpite.) Se sua conta tiver SeCreateTokenPrivilege, você poderá escrever um pequeno programa para criar um processo usando CreateProcessAsUser()uma função semelhante ... (Mas nem mesmo os administradores têm o privilégio por padrão.)

gravidade
fonte
2

Embora eu não tenha experiência pessoal com algumas das soluções sudo mencionadas neste site, recomendo o nonadmin iniciado pelo excelente Aaron Margosis . É uma grande ajuda à medida que você lança usuários limitados. Eu pulei principalmente com alguma coisa, já que todo mundo está dizendo que usa Runas. No entanto, acho que a maioria ou todos os chamados sudo for windows lidam mais com elevação, em vez de agir como outro usuário sem sua senha.

Knox
fonte
0

O Process Explorer procexp.exe em http://live.sysinternals.com tem uma execução como usuário limitado (no menu arquivo), que permite executar um programa usando suas credenciais atuais, mas com sua ACL reduzida à de uma normal usuário (não administrador). Não exatamente o que você queria, mas bom para testar.

Booji Boy
fonte