
Gostaria de usar 'psexec' em uma LAN para executar um comando como outro usuário que esteja logado no sistema ao mesmo tempo.
Em outras palavras: quero usar 'psexec' com a credencial de conta de administrador integrada para executar um programa na área de trabalho de Bob. Este programa precisa acreditar que foi lançado por Bob usando suas credenciais. Como estou usando a conta de Administrador, gostaria de evitar a necessidade da senha de Bob para fazer isso (com 'runas', talvez).
Editar 1
Esclarecimentos:
Já tenho acesso ao sistema, pois possuo a conta de Administrador.
Não estou com vontade de ter um agente/serviço/exe em execução o tempo todo em segundo plano.
Esta é uma configuração doméstica.
Eu estava pensando em algo assim:http://reboot.pro/files/file/237-runassystem-and-runfromtoken/mas aplicado a qualquer outro usuário.
Quero poder iniciar um programa como um jogo ou um cliente de e-mail que salve arquivos em caminhos por usuário.** Portanto, executar como Administrador não seria eficaz, pois o programa carregaria o perfil de dados do Administrador e não o de Bob (que é logado).
Meu objetivo final é poder iniciar o comando 'whoami' e dizer que sou o usuário logado.
Atualizar
Consegui obter um 'cmd.exe' como SYSTEM e, em seguida, obter uma instância como minha conta (protegida por senha) usando RunFromToken. Vou testar isso ainda mais.
Responder1
Não. Isto ignoraria completamente a questão da segurança individual.
Acrescentarei, porém, que se você tiver acesso a um sistema de implantação como o SCCM, poderá executar um pacote somente quando o usuário estiver conectado e ele será executado no contexto do usuário. Você também pode executar o pacote como parte de um script de logon que também seria executado no contexto do usuário.
Responder2
Todas essas respostas estão corretas no que diz respeito à representação de um usuário na rede. No entanto, você pode representar um usuário local sem a necessidade de senha, sob certas condições:
- Você deve ser membro do grupo de administradores locais.
- Você só pode se passar por outro usuário que esteja atualmente logado no sistema
- A representação do usuário é limitada ao sistema local. Você não pode representar um usuário em um sistema remoto sem antes estar conectado ao sistema remoto como membro do grupo de administradores locais.
Isso é permitido devido à forma como o Windows delega o PRIVILEGE para representar usuários conectados localmente ao SYSTEM e aos administradores locais. Você pode encontrar informações sobre este PRIVILÉGIO em política de grupo local > Políticas locais > Atribuições de direitos de usuário > Representar um cliente após autenticação.
Uma ferramenta que conheço que permite fazer isso é o Process Hacker 2. Execute a ferramenta como administrador e encontre um processo que esteja sendo executado como o usuário que você deseja representar. Clique com o botão direito nele, selecione Misc > Executar como este usuário... e digite o caminho binário que deseja executar como esse usuário, por exemplo cmd. O CMD seria então aberto como esse usuário sem solicitar a senha desse usuário.
Responder3
Você não pode fazer isso e por boas razões.
Seria o Santo Graal para qualquer vírus, se isso fosse possível.
Sempre há vários processos em execução em várias contas de administrador em um computador Windows (como contas LocalSystem e NetworkSystem, apenas para citar 2).
Se sua solicitação for possível, qualquer processo arbitrário pode inserir novos processos nessas contas: Há de jeito nenhum você seria capaz de proteger seu sistema contra vírus. (Qualquer processo arbitrário significa literalmente o que diz: isso também inclui vírus!)
Outras questões são privacidade e responsabilidade.
Se você puder falsificar a operação como se ela fosse executada por outro usuário, você poderá obter os dados de outros usuários. A privacidade sai pela janela.
E não há mais como saber se algo foi realmente feito por aquele usuário ou por alguém se passando por ele. Isso significa que você não pode mais rastrear com segurança quem fez o quê. Você perde a responsabilidade, o que é importante em sistemas que devem aderir aos regulamentos de conformidade, como os sistemas médicos.
Portanto, esses são bons motivos para isolar os ambientes das contas uns dos outros. (Há muito mais, mas isso está além do escopo desta questão.)
Responder4
Conforme observado por outras respostas, você provavelmente não deseja fazer isso. Se fosse tão fácil, eu poderia, por exemplo, forçar um usuário a carregar algum site ilegal onde seria demitido e preso. Nem mesmo os administradores deveriam ter esse tipo de poder divino.
Se tudo o que você realmente deseja fazer é descobrir quem está conectado a um computador (local ou remoto), considere o utilitário "psloggedon" do MS TechNet (anteriormente SysInternals):https://technet.microsoft.com/en-us/sysinternals/bb897545.aspx
Se você ainda precisa executar uma tarefa como usuário, verifique a execução de tarefas no login.correra tarefa como se você fosse o usuário em questão.