PsExec e as Coisas Desagradáveis que Ele Pode Fazer
a Maioria das ferramentas que usamos para administrar redes tendem a ser uma faca de dois gumes. Estas ferramentas proporcionam uma grande flexibilidade e permitem uma gestão mais fácil de dispositivos, serviços e software. Nas mãos certas não temos nada com que nos preocupar, mas nas mãos erradas as nossas ferramentas de administração remota tornam-se armas poderosas que podem ser usadas pelos atacantes para executar uma grande variedade de atividades maliciosas., Neste artigo vou falar sobre uma ferramenta que se encaixa nesta descrição. Esta ferramenta é a ferramenta Microsoft Sysinternals PsExec. Neste artigo, vou dar uma visão geral do que é o PsExec e quais são as suas capacidades do ponto de vista administrativo. Depois disso, vou assumir o papel de um adversário e demonstrar algumas das coisas desagradáveis que podem ser usadas em uma rede.este artigo pretende servir dois públicos., O primeiro público consiste dos administradores de sistema que é responsável por proteger suas redes do uso de ferramentas como PsExec para fins maliciosos. O outro público pretendido consiste em hackers éticos e Testadores de penetração profissional que podem ganhar algum benefício de saber um pouco mais sobre algumas das coisas PsExec pode ser usado para., Seja qual for a audiência em que você cair em seu importante que eu fornecer a disclaimer que alguns dos comandos e técnicas que eu discuto aqui podem ser completamente ilegais dependendo das circunstâncias em que são usados, assim que eu exorto a proceder com cautela se quaisquer ações que você está tomando podem ser questionáveis.o que é o PsExec?
o utilitário PsExec foi projetado como parte da suíte PsTools, originalmente desenvolvido por Mark Russinovich da Sysinternals, agora propriedade da Microsoft., A ferramenta é cunhada como uma ferramenta de administração remota baseada em linha de comando e permite a execução remota de processos em outros sistemas. É muito flexível na medida em que permitirá o uso de credenciais de autenticação alternativas ao invés das do usuário executando-o, o que significa que você pode gerenciar dispositivos separados por limites de domínio e site. Não só o PsExec pode executar programas em um sistema remoto, mas também pode redirecionar a entrada e saída do console entre sistemas para que você possa usar ferramentas interativas remotamente.,
Ao contrário da maioria dos softwares associados à Microsoft, o funcionamento interno do PsExec não é secreto e é bastante simples. O PsExec permite redirecionar a entrada e saída de um executável iniciado remotamente através do uso do SMB e da partilha $ADMIN escondida no sistema remoto. Com esta partilha, o PsExec usa a API do Gerenciador de controle de serviço Windows para iniciar o serviço PsExecsvc no sistema remoto, que cria um pipe com o qual o PsExec comunica. Este pipe chamado é o que permite redirecionamento de entrada/saída de volta para o sistema que lançou o PsExec.,
jogando bem com PsExec
de acordo com o seu projeto original, PsExec pode ser usado para fazer uma série de coisas muito úteis que podem auxiliar os administradores de Sistema. Um desses cenários que eu me encontrei em um número de vezes é um em que eu conheço o nome DNS de um computador, mas não as configurações de configuração IP exatas (servidor DNS, gateway Padrão, etc). Em circunstâncias normais eu usaria o ipconfig no sistema local para determinar esta informação., Na grande maioria dos casos, no entanto, isso pode significar que eu teria que dirigir para outro local ou pedir emprestado um computador do Usuário, inerentemente reduzindo a sua produtividade para o dia. Uma vez que o ipconfig não tem capacidades para ser executado contra uma máquina não-local, eu posso usar o PsExec para lançá-lo com sucesso, como mostrado na Figura 1.
Figura 1: Usando PsExec para lançar ipconfig em um sistema remoto
Depois de PsExec é chamado, o computador remoto é designado após o duplo de barra invertida (\\), seguido pelo comando ipconfig., Quando executa o PsExec, é por omissão a pasta% SYSTEM % no sistema remoto onde está a tentar executar o comando, razão pela qual não tive de indicar uma localização completa aqui. Por último, a opção /all para o ipconfig é especificada para enviar toda a informação disponível do ipconfig.
outra implementação comum do PsExec é usá-lo para a implantação de atualizações, patches e hotfixes. Embora o método preferido típico de fazer isso seja através da Política de grupo, pode haver casos em que esse método é muito lento., Eu estive em muitas situações onde eu precisava implantar um patch de segurança de alta prioridade que não pode esperar a duração do tempo padrão de atualização da Política de grupo, então eu virei para o PsExec para implantar o arquivo de uma forma mais rápida. Um exemplo disso é visto na Figura 2.
Figura 2: Lançamento de um patch executável remotamente
a imagem de comando acima utiliza algumas funcionalidades adicionais. Primeiro, observe que existem dois nomes de computador separados por vírgulas após a barra dupla (\\)., O PsExec permite-lhe indicar vários dispositivos de destino aqui, ou, em alternativa, um ficheiro que contém uma lista de nomes ou endereços dos dispositivos. O comando também inclui o switch /c, que é usado quando você deseja especificar um arquivo no sistema local a ser executado no sistema remoto. Neste caso, eu especificei o patch de arquivo.exe. O arquivo está localizado no meu sistema local na raiz da unidade C, então eu tive que especificar o caminho de arquivo completo. O botão /c aparece na pasta %SYSTEM% no sistema local por omissão., Como você pode ver, o arquivo é executado com sucesso e a saída é redirecionada de volta para a consola local de onde estamos executando PsExec.
uma última utilização amigável do PsExec I ” achou muito conveniente é usá-lo para administrar remotamente sistemas de um nível de privilégio mais elevado, ao usar um sistema sob uma conta privilegiada mais baixa. Não posso contar o número de vezes que estive no site trabalhando em um computador de usuários e recebi uma chamada que requer que eu execute uma função administrativa, como uma mudança de senha., Claro, em um ambiente de Diretório Ativo eu poderia simplesmente RDP em um controlador de domínio e executar esta mudança, mas eu”ve teve vários clientes que não usam diretório ativo ou RDP por várias razões. Quando esse é o caso, é bastante fácil de pop em uma pen USB e acessar a cópia do PsExec que eu instalei nele. No caso da Figura 3, eu “usei PsExec para resetar uma senha de usuário em um sistema elevando os privilégios” da ferramenta de rede como executado pelo PsExec.,
Figura 3: A alteração de um usuário”senha s ao elevar PsExec”s privilégios
Fazer Coisas Desagradáveis com PsExec
Agora vamos a”s dar um passeio no lado escuro e olhar para algumas coisas que podem ser feitas com PsExec por aqueles com potencial de más intenções. Em primeiro lugar, vamos considerar um cenário em que um atacante obteve credenciais para um sistema, mas não tem qualquer acesso direto a ele., Neste caso, o atacante está buscando ganhar GUI ou controle de linha de comando do sistema, mas as avenidas disponíveis para o uso dessas credenciais podem ser limitadas. Um método que pode ser útil nesta situação é usar PsExec para executar um executável backdoor no sistema, como o que é mostrado na Figura 4.
Figura 4: um executável malicioso a ser lançado remotamente
No caso desta imagem, um atacante remoto está a usar o PsExec com a opção / C para executar o ficheiro local nc.exe no sistema remoto., Junto com isso, os switches-u E-p são usados para especificar o nome de usuário e senha comprometidos para que o arquivo possa ser executado com privilégios de nível de root. Sem o conhecimento da vítima, o arquivo que está sendo executado silenciosamente em um backdoor que permitirá que o atacante se conecte ao sistema e receba uma linha de comando administrativo.
uma coisa interessante sobre o ataque que acabamos de ver é que você realmente não precisa nem mesmo de uma senha do Usuário para executá-lo. Em toda a realidade, tudo o que você precisa é o nome de usuário e senha hash do Usuário., No Windows, cálculos matemáticos são aplicados a senhas fornecidas pelo usuário, a fim de fazer essas senhas em uma cadeia de comprimento fixo criptografada, chamada de hash. Estes hashs são um recurso de segurança projetado para manter palavras-passe claras de serem transmitidas através de uma rede. Quando a autenticação ocorre, estes traços de senha são enviados de uma máquina para outra. Usando PsExec isso pode ser aproveitado simplesmente fornecendo a senha hash em vez da senha, mostrada na Figura 5.,
Figura 5: Utilizando um hash de senha para executar um arquivo remotamente
Este exemplo é o mesmo visto na Figura 4, a única diferença é que um hash de senha é usada no lugar da senha. O sistema receptor não tem problema em aceitar este hash para fins de autenticação. Há uma variedade de métodos para obter hashes de senha que estão um pouco além do escopo deste artigo. Eu escrevi outro artigo sobre este tema que pode ser visto aqui.,
outro truque legal que o PsExec torna possível é a capacidade de acessar arquivos e processos spawn com a conta incorporada do sistema. A conta do sistema em uma máquina Windows é a conta mais poderosa e permite o acesso a praticamente qualquer coisa, incluindo alguns itens que não são acessíveis pela conta de administrador e contas criadas pelo Usuário.. A figura 6 fornece um exemplo de acesso à aplicação regedit.,
Figura 6: aceder ao registo da vítima
o comando acima é executado directamente num sistema local, mas especifica o interruptor-s para usar a conta do sistema local. Isto é combinado com a opção-i (interativa) que executa regedit no modo interativo. A execução deste comando irá lançar o regedit com acesso ao sistema, que oferece acesso adicional a alguns ficheiros interessantes. Um exemplo disso é o arquivo SAM que contém traços de senha do Usuário., Dada a motivação certa, um atacante com acesso a um sistema e PsExec poderia facilmente extrair todas as senhas do sistema usando esta técnica, potencialmente fornecendo-lhe informações que podem permitir o compromisso de outros sistemas ou contas.
algumas advertências
credenciais no Claro-Se você está preocupado com quem pode estar ouvindo em sua atividade de rede, então PsExec provavelmente não é a melhor ferramenta para usar., O PsExec transmite todas as credenciais de usuário fornecidas a ele de forma clara, o que significa que se você fornecer um nome de usuário e senha para acessar um sistema remotamente, qualquer pessoa com uma cópia de Wireshark ou Tcpdump executando pode interceptar as credenciais.
Detecção de antivírus-este costumava não ser tanto de um problema, mas agora que a maioria das aplicações de varredura de vírus fazem algum nível de sistema e monitoramento de memória a maioria deles vai pegar PsExec sendo usado no sistema que eles estão monitorando., Se você está fazendo um teste de penetração em um sistema Windows e PsExec isn”t a funcionar como deve ser, então as chances são que você está ficando bloqueado pelo antivírus, e pior ainda, você pode estar deixando o usuário final sei que você está brincando com o seu sistema.PsExec e Metasploit-quando possível nunca mais uso PsExec por si só. Uma versão modificada do PsExec está agora incluída no framework Metasploit. Metasploit é uma estrutura de teste de penetração que fornece um pouco de funcionalidade., Se você quiser usar o PsExec para alguma forma de avaliação de segurança, em seguida, considerando olhar para a funcionalidade adicionada Metasploit fornece com ele. Eu realmente usei esta versão do PsExec em um artigo que eu escrevi antes ao passar as técnicas de Hash.
conclusão
a ferramenta PsExec tem muitos usos para uma variedade de intenções do Usuário. Esperançosamente, este artigo ajudou a educá-lo em algumas de suas características e como eles podem ser usados para fazer errado. PsExec é o tipo de ferramenta que permite que um atacante seja criativo., Embora eu tenha coberto apenas alguns usos exclusivos da ferramenta aqui eu ousaria dizer que dezenas ou mesmo centenas de vetores de ataque interessantes estão disponíveis usando seu conjunto de recursos. Em algum momento vou planejar escrever um artigo de acompanhamento contendo usos mais interessantes e avançados para PsExec. Entretanto, se você tiver algum truque PsExec interessante, então sinta-se à vontade para me escrever diretamente para inclusão no próximo artigo.