it-swarm-pt.tech

Como você executa o CMD.exe na conta do sistema local?

No momento, estou executando o Vista e gostaria de concluir manualmente as mesmas operações do meu Serviço do Windows. Como o serviço do Windows está sendo executado na conta do sistema local, gostaria de emular esse mesmo comportamento. Basicamente, gostaria de executar o CMD.EXE na conta do sistema local.

Eu encontrei informações on-line que sugerem lançando o CMD.exe usando o comando do Agendador de Tarefas do DOS AT, mas recebi um aviso do Vista que "devido a aprimoramentos de segurança, essa tarefa será executada no momento excluída, mas não interativamente". Aqui está um exemplo de comando:

AT 12:00 /interactive cmd.exe

Outra solução sugeriu a criação de um serviço secundário do Windows por meio do Service Control (sc.exe), que simplesmente inicia o CMD.exe. 

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

Nesse caso, o serviço falha ao iniciar e resulta na seguinte mensagem de erro:

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

A terceira sugestão foi lançar o CMD.exe através de uma tarefa agendada. Embora você possa executar tarefas agendadas em várias contas, não acredito que a conta do sistema local seja uma delas.

Eu tentei usar o Runas também, mas acho que estou correndo para a mesma restrição encontrada quando executando uma tarefa agendada.

Até agora, cada uma das minhas tentativas terminou em fracasso. Alguma sugestão?

124
Ben Griswold
  1. Baixar psexec.exe de Sysinternals .
  2. Coloque-o na sua unidade C: \.
  3. Faça logon como usuário padrão ou administrador e use o seguinte comando: cd \. Isso coloca você no diretório raiz da sua unidade, onde o psexec está localizado.
  4. Use o seguinte comando: psexec -i -s cmd.exe onde -i é para interativo e -s é para a conta do sistema.
  5. Quando o comando terminar, um shell cmd será iniciado. Digite whoami; dirá 'sistema'
  6. Abra o gerenciador de tarefas. Mate o Explorer.exe.
  7. De um comando elevado Tipo de shell start Explorer.exe.
  8. Quando o Explorer é iniciado, observe o nome "sistema" na barra de menu inicial. Agora você pode excluir alguns arquivos no diretório system32 que como administrador você não pode excluir ou como administrador, você teria que tentar muito para alterar as permissões para excluir esses arquivos.

Usuários que tentam renomear ou delegar Arquivos do sistema em qualquer diretório protegido do Windows devem saber que todos os arquivos do Windows são protegidos pelo DACLS enquanto renomeam um arquivo que você tem que mudar o proprietário e substituir TrustedInstaller que possui o arquivo e fazer qualquer usuário como um usuário pertence ao grupo administrador como proprietário do arquivo, em seguida, tentar renomeá-lo depois de alterar a permissão, ele vai funcionar e enquanto você estiver executando o Windows Explorer com privilégios de kernel você está um pouco limitado em termos de acesso à rede por razões de segurança e ainda é um tópico de pesquisa para eu ter acesso de volta

39
raven

Encontrou uma resposta aqui que parece resolver o problema adicionando/k start ao parâmetro binPath. Então isso te daria:

sc create testsvc binpath= "cmd /K start" type= own type= interact

No entanto, Ben disse que não funcionou para ele e quando eu tentei no Windows Server 2008 ele criou o processo cmd.exe no sistema local, mas não foi interativo (não consegui ver a janela). 

Eu não acho que há uma maneira fácil de fazer o que você pede, mas estou me perguntando por que você está fazendo isso de alguma forma? Você está apenas tentando ver o que está acontecendo quando administra seu serviço? Parece que você poderia apenas usar o log para determinar o que está acontecendo em vez de ter que executar o exe como sistema local ...

9
Bryant

Eu recomendaria que você trabalhasse o conjunto mínimo de permissões que seu serviço realmente precisa e usaria isso, em vez do contexto do Sistema Local muito privilegiado. Por exemplo, Serviço local .

Os serviços interativos não funcionam mais - ou pelo menos não mostram mais a interface do usuário - no Windows Vista e no Windows Server 2008 devido ao isolamento de session 0 .

6
Mike Dimmick

Usando o Secure Desktop para executar cmd.exe como system

Podemos obter acesso ao kernel através de CMD no Windows XP/Vista/7/8.1 facilmente anexando um depurador:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. Executar CMD como administrador

  2. Então use este comando em Elevated:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. Em seguida, execute osk (onscreenkeyboard). Ele ainda não é executado com o nível Integridade do sistema se você verificar no processo Explorer, mas se você puder usar o OSK na sessão de serviço, ele será executado como NT Authority\SYSTEM

então eu tive a idéia que você tem que executá-lo no Secure Desktop.

Inicie qualquer arquivo como administrador. Quando os prompts do UAC aparecerem, basta pressionar Win+U e inicie OSK e iniciará CMD. Em seguida, no prompt elevado, digite whoami e você receberá NT Authority\System. Depois disso, você pode iniciar o Explorer a partir do shell de comando do sistema e usar o perfil do sistema, mas você está um pouco limitado ao que pode fazer na rede por meio de privilégios SYSTEM por motivos de segurança. Vou adicionar mais explicações mais tarde, como descobri há um ano.

Uma breve explicação de como isso acontece

Executando Cmd.exe em conta do sistema local sem usar PsExec. Este método executa a técnica Debugger Trap que foi descoberta anteriormente, bem, esta técnica tem seus próprios benefícios, ela pode ser usada para capturar algum malware ou malware crafty/malicioso no depurador e executar algum outro exe para parar a propagação ou danificar temporariamente. aqui esta chave do registro captura o teclado na tela no depurador nativo do Windows e executa o cmd.exe em seu lugar, mas o cmd ainda será executado com privilégios de usuários registrados, no entanto, se executarmos cmd na sessão0, poderemos obter o shell do sistema. Então, adicionamos aqui uma outra idéia que abrangemos o cmd no desktop seguro. Lembre-se de execuções seguras na área de trabalho na sessão 0 na conta do sistema e obtemos o Shell do sistema. Portanto, sempre que você executar algo tão elevado, terá que responder aos prompts do UAC e do UAC em uma área de trabalho não interativa e escura, e, depois de vê-lo, é necessário pressionar Win+U e, em seguida, selecione OSK e você obterá CMD.exe executando sob privilégios do sistema local. Existem ainda mais formas de obter acesso ao sistema local com CMD

3
raven

uma alternativa para isso é Process hacker se você for executado como ... (Interativo não funciona para pessoas com os aprimoramentos de segurança, mas isso não importa) e quando a caixa for aberta, coloque Service em o tipo de caixa e coloque SYSTEM em caixa de usuário e colocar C:\Usuários\Windows\system32\cmd.exe deixar o resto clique ok e boch você tem uma janela com cmd sobre ele e executar como sistema agora fazer as outras etapas por si mesmo porque estou sugerindo que você os conhece

3
James5001

Existe outro caminho. Existe um programa chamado PowerRun que permite que o cmd elevado seja executado. Mesmo com os direitos do TrustedInstaller. Ele permite comandos do console e GUI. 

2
Alexander Haakan

se você puder gravar um arquivo em lotes que não precise ser interativo, tente executar esse arquivo em lote como um serviço, para fazer o que precisa ser feito.

1

Eu uso o utilitário RunAsTi para executar como TrustedInstaller (privilégio alto). O utilitário pode ser usado mesmo no modo de recuperação do Windows (o modo que você insere fazendo Shift + Restart), o utilitário psexec não funciona lá. Mas você precisa adicionar seus caminhos C:\Windows e C:\Windows\System32 (não X:\Windows e X:\Windows\System32) à variável de ambiente PATH, caso contrário RunAsTi não funcionará no modo de recuperação, apenas imprimirá: AdjustTokenPrivileges for SeImpersonateName: Nem todos os privilégios ou grupos referenciados são atribuídos ao chamador.

0
anton_rh