PsExec é uma ferramenta de linha de comando que permite aos usuários executar programas em sistemas remotos. Ele pode ser usado para executar comandos, scripts e aplicativos remotos em sistemas remotos, bem como para iniciar aplicativos baseados em GUI em sistemas remotos.
PsExec usa o Microsoft Windows Service Control Manager (SCM) para iniciar uma instância do serviço no sistema remoto, o que permite que a ferramenta execute o comando ou aplicativo especificado com os privilégios da conta do conta de serviço no sistema remoto.
Para estabelecer a conexão, o usuário remoto deverá ter privilégios de acesso à máquina alvo e fornecer o nome da máquina alvo, bem como seu nome de usuário e senha no seguinte formato:
PsExec -s \\MACHINE-NAME -u USERNAME -p PASSWORD COMMAND (the process to be executed following establishing the connection).
PsExec é uma poderosa ferramenta de linha de comando usada principalmente para administração remota e execução de processos em sistemas Windows. Ele permite que administradores de sistema e profissionais de segurança executem comandos ou programas em computadores remotos em um ambiente de rede. Aqui estão alguns casos de uso comuns para PsExec:
Administração Remota do Sistema: O PsExec permite que os administradores gerenciem e administrem remotamente vários sistemas Windows sem a necessidade de acesso físico. Ele permite que eles executem comandos, executem scripts, instalem software, modifiquem configurações do sistema e executem diversas tarefas administrativas em máquinas remotas a partir de um local central.
Implantação e atualizações de software: Com o PsExec, os administradores podem implantar remotamente pacotes de software, patches ou atualizações em vários computadores simultaneamente. Este recurso é particularmente útil em ambientes de grande escala onde a instalação manual em sistemas individuais seria demorada e impraticável.
Solução de problemas e diagnóstico: O PsExec pode ser usado para diagnosticar e solucionar problemas do sistema remotamente. Os administradores podem executar ferramentas de diagnóstico, acessar logs de eventos, recuperar informações do sistema ou executar scripts de solução de problemas em sistemas remotos para identificar e resolver problemas sem estarem fisicamente presentes.
Auditoria de segurança e gerenciamento de patches: Os profissionais de segurança costumam empregar o PsExec para realizar auditorias de segurança, avaliações de vulnerabilidades ou exercícios de testes de penetração. Ele permite que eles executem remotamente ferramentas de verificação de segurança, verifiquem os níveis de patch e avaliem a postura de segurança de sistemas remotos na rede.
Resposta a Incidentes e Forense: Durante as investigações de resposta a incidentes, o PsExec auxilia no acesso remoto a sistemas comprometidos para análise e coleta de evidências. Ele permite que analistas de segurança executem comandos ou ferramentas forenses em máquinas comprometidas sem interagir diretamente com elas, minimizando o risco de comprometimento adicional ou perda de dados.
Equipe Vermelha e Movimento lateral: em exercícios de red teaming, onde as organizações simulam ataques do mundo real para testar suas defesas de segurança, o PsExec é frequentemente usado para movimentos laterais dentro da rede. Os invasores podem usar o PsExec para executar comandos ou cargas maliciosas em sistemas comprometidos, movendo-se lateralmente e aumentando privilégios para obter acesso não autorizado a recursos confidenciais.
Automação e script: O PsExec pode ser integrado a scripts ou arquivos em lote, permitindo a automação de tarefas repetitivas em vários sistemas. Ele fornece um meio de executar scripts remotamente, permitindo que os administradores orquestrem operações complexas ou executem tarefas regulares de manutenção com eficiência.
No entanto, é importante notar que o PsExec também pode ser uma ferramenta poderosa nas mãos dos atacantes, uma vez que lhes permite executar código arbitrário em sistemas remotos, potencialmente levando a escalação de privilégios e movimento lateral na rede. Portanto, é importante usar o PsExec com segurança e limitar o uso do PsExec a usuários e sistemas confiáveis.
Instalar e configurar o PsExec é um processo simples que envolve as seguintes etapas:
Para instalar o PsExec, você pode visitar o site oficial da Microsoft ou repositórios de software confiáveis para baixar o arquivo executável do PsExec. Certifique-se de baixá-lo de uma fonte confiável para evitar riscos de segurança ou malware.
PsExec não requer um processo formal de instalação. Depois de baixar o arquivo executável PsExec, você pode salvá-lo em um diretório de sua escolha em seu sistema local. Recomenda-se colocá-lo em um local de fácil acesso e incluído na variável de ambiente PATH do sistema para uso conveniente.
Para conectar-se a um computador remoto usando PsExec, siga estas etapas:
a. Abra um prompt de comando ou terminal em seu sistema local.
b. Navegue até o diretório onde você salvou o arquivo executável PsExec.
c. Para estabelecer uma conexão com um computador remoto, use o seguinte comando:
psexec \\remote_computer_name_or_IP -u nome de usuário -p comando de senha
d. Pressione Enter para executar o comando. PsExec estabelecerá uma conexão com o computador remoto, autenticará usando as credenciais fornecidas e executará o comando especificado remotamente.
e. Você verá a saída do comando executado no prompt de comando local ou na janela do terminal.
É importante observar que o sucesso da conexão e execução de comandos usando PsExec depende da conectividade de rede entre o sistema local e o computador remoto, bem como das credenciais e permissões de autenticação corretas no sistema remoto.
PsExec oferece vários comandos comumente usados que fornecem aos administradores poderosos recursos de execução remota. Aqui estão alguns dos comandos PsExec mais comuns e suas funções:
Comando PsExec \remote_computer:
Comando PsExec \remote_computer -s:
Comando PsExec \remote_computer -u nome de usuário -p senha:
Comando PsExec \remote_computer -c -f -s -d:
Comando PsExec \remote_computer -i session_id -d -s:
PsExec \remote_computer -accepteula -s -c -f script.bat:
Esses comandos representam um subconjunto dos comandos PsExec disponíveis, cada um servindo a um propósito específico na administração e execução remota.
A sintaxe dos comandos PsExec é:
psexec \computer[,computer[,..] [opções] comando [argumentos]
psexec @run_file [options] command [arguments]
Opções de linha de comando PsExec:
Opção | Explicação |
---|---|
\computador | O computador remoto ao qual se conectar. Use \* para todos os computadores no domínio. |
@run_file | Execute o comando nos computadores listados no arquivo de texto especificado. |
comando | Programa a ser executado no sistema remoto. |
argumentos | Argumentos a serem passados para o programa remoto. Use caminhos absolutos. |
-a | Defina a afinidade da CPU. Números de CPU separados por vírgula começando em 1. |
-c | Copie o programa local para o sistema remoto antes de executar. |
-f | Forçar a cópia do arquivo remoto existente. |
-v | Copie apenas se o programa local for uma versão mais recente que a remota. |
-d | Não espere que o programa remoto termine. |
-e | Não carregue o perfil do usuário. |
-i | Interaja com a área de trabalho remota. |
-l | Execute com direitos de usuário limitados (grupo Usuários). |
-n | Tempo limite de conexão em segundos. |
-p | Especifique a senha do usuário. |
-r | Nome do serviço remoto com o qual interagir. |
-s | Execute na conta SYSTEM. |
-u | Especifique o nome de usuário para login. |
-w | Defina o diretório de trabalho no sistema remoto. |
-x | Exibir UI na área de trabalho do Winlogon. |
-baixo | Execute com baixa prioridade. |
-aceiteula | Suprimir a caixa de diálogo EULA. |
PsExec não é um PowerShell. É uma ferramenta de linha de comando que permite aos usuários executar programas em sistemas remotos.
O PowerShell, por outro lado, é uma estrutura de automação de tarefas e gerenciamento de configuração desenvolvida pela Microsoft, que inclui um shell de linha de comando e uma linguagem de script associada construída na estrutura .NET. O PowerShell pode ser usado para automatizar diversas tarefas e realizar operações complexas em sistemas locais ou remotos.
Embora tanto o PsExec quanto o PowerShell possam ser usados para executar tarefas semelhantes, como executar comandos em sistemas remotos, eles são ferramentas diferentes e têm capacidades diferentes. O PsExec foi projetado para executar um único comando ou aplicativo em um sistema remoto, enquanto o PowerShell é uma estrutura mais poderosa que pode ser usada para automatizar e gerenciar várias tarefas, incluindo a execução de comandos e scripts em sistemas remotos.
Portanto, dependendo do cenário, uma ferramenta pode ser mais adequada que a outra.
PsExec funciona aproveitando sua arquitetura exclusiva e protocolos de comunicação para permitir a execução remota em sistemas Windows. Vamos explorar os principais aspectos de como o PsExec opera:
PsExec segue uma arquitetura cliente-servidor. O componente do lado cliente, executado no sistema local, estabelece uma conexão com o componente do lado servidor executado no sistema remoto. Esta conexão permite a transmissão de comandos e dados entre os dois sistemas.
PsExec usa o protocolo Server Message Block (SMB), especificamente o compartilhamento de arquivos SMB e mecanismos de pipe nomeados, para estabelecer canais de comunicação com sistemas remotos. Isso permite uma comunicação segura e confiável entre os componentes do cliente e do servidor.
PsExec emprega mecanismos de autenticação para garantir acesso seguro a sistemas remotos. Ele suporta vários métodos de autenticação, incluindo o uso de nome de usuário e senha, ou autenticação via NTLM (NT LAN Manager) ou Kerberos.
Para aumentar a segurança, é crucial seguir as melhores práticas de autenticação ao usar o PsExec. Essas práticas incluem a utilização de senhas fortes e exclusivas, a implementação de Autenticação multifatorial sempre que possível, e aderindo ao princípio do menor privilégio, concedendo apenas as permissões necessárias aos usuários do PsExec.
PsExec facilita o acesso a arquivos e registros em sistemas remotos, permitindo que os administradores executem tarefas como copiar arquivos, executar scripts ou modificar configurações de registro. Ao executar comandos remotamente, o PsExec copia temporariamente o executável ou script necessário para o diretório temporário do sistema remoto antes da execução.
É importante considerar possíveis considerações de segurança ao usar o PsExec para operações de arquivo e registro. Por exemplo, os administradores devem ter cautela ao transferir arquivos confidenciais e garantir que controles de acesso apropriados estejam em vigor para evitar acesso não autorizado ou modificação de arquivos críticos do sistema e entradas de registro.
O PsExec não é um malware em si, mas pode ser usado por malware e invasores para realizar ações maliciosas.
PsExec é uma ferramenta legítima que permite aos usuários executar programas em sistemas remotos. Ele pode ser usado para uma variedade de tarefas legítimas, como solução de problemas, implantação de atualizações e patches de software e execução de comandos e scripts em vários sistemas simultaneamente.
No entanto, o PsExec também pode ser usado por invasores para obter acesso não autorizado a sistemas remotos e realizar ações maliciosas. Por exemplo, um invasor pode usar o PsExec para executar uma carga maliciosa em um sistema remoto ou para se mover lateralmente dentro de uma rede e obter acesso a informações confidenciais.
Portanto, é importante usar o PsExec com segurança e limitar o uso do PsExec a usuários e sistemas confiáveis.
O acesso remoto contínuo que o PsExec permite de uma máquina de origem para uma máquina de destino é intensamente utilizado por agentes de ameaças durante o estágio de movimento lateral em ataques cibernéticos. Isso normalmente ocorreria após o comprometimento inicial de uma máquina com paciente zero.
Desse ponto em diante, os invasores procuram expandir sua presença no ambiente e alcançar o domínio do domínio ou os dados específicos que procuram. O PsExec fornece a eles uma maneira contínua e confiável de conseguir isso pelos seguintes motivos.
Ao combinar credenciais de usuário comprometidas com o PsExec, os adversários podem contornar mecanismos de autenticação, obter acesso a vários sistemas e potencialmente comprometer uma parte significativa da rede. Essa abordagem permite que eles se movam lateralmente, aumentem os privilégios e realizem seus objetivos maliciosos com um impacto mais amplo.
O PsExec é frequentemente considerado uma ferramenta preferida para “viver da terra” para ataques de movimento lateral devido a vários fatores principais:
É importante observar que, embora o PsExec tenha casos de uso legítimos, seu potencial para uso indevido e sua presença no ambiente alvo o tornam uma ferramenta atraente para adversários que buscam realizar ataques de movimento lateral. As organizações devem implementar fortes medidas de segurança, tais como segmentação de rede, gestão de credenciais e sistemas de monitorização, para detectar e prevenir o uso não autorizado de PsExec ou ferramentas semelhantes.
Usar o PsExec para movimento lateral oferece diversas vantagens para ransomware atores:
As ferramentas de proteção de endpoint podem ter dificuldade para detectar e prevenir o uso malicioso do PsExec por vários motivos:
As ferramentas tradicionais de AMF podem enfrentar limitações na impedindo o movimento lateral usando PsExec pelos seguintes motivos:
PsExec ganhou popularidade entre administradores de sistema e profissionais de segurança por seus recursos de gerenciamento remoto legítimos e eficientes. No entanto, como muitas ferramentas, o PsExec também pode ser utilizado indevidamente para fins maliciosos. Nos últimos anos, os agentes de ameaças começaram a incorporar o PsExec nas suas estratégias de ataque de ransomware, tornando-o um componente potencialmente perigoso do seu arsenal.
Nos últimos cinco anos, a barreira de competências caiu significativamente e o movimento lateral com PsExec é incorporado em mais de 80% dos ataques de ransomware, tornando a proteção contra autenticação maliciosa através do PsExec uma necessidade para todas as organizações.
Os ataques de ransomware envolvem atores mal-intencionados que obtêm acesso não autorizado aos sistemas, criptografam dados críticos e exigem um resgate pela sua liberação. Anteriormente, os invasores frequentemente dependiam de técnicas de engenharia social ou kits de exploração para obter acesso inicial. No entanto, eles agora expandiram suas táticas utilizando ferramentas legítimas como o PsExec para se propagar em redes comprometidas.
Num ataque de ransomware, uma vez que os agentes da ameaça obtêm acesso a um único sistema dentro de uma rede, pretendem mover-se lateralmente e infectar o maior número possível de sistemas. PsExec fornece um meio conveniente e eficiente para esse movimento lateral. Os invasores usam o PsExec para executar remotamente cargas de ransomware em outros sistemas vulneráveis, espalhando a infecção rapidamente pela rede.
Ao incorporar o PsExec em sua cadeia de ataque, os cibercriminosos ganham diversas vantagens. Primeiro, o PsExec permite que eles executem comandos e cargas maliciosas de forma silenciosa e remota, reduzindo as chances de detecção. Em segundo lugar, como o PsExec é uma ferramenta legítima, muitas vezes ignora as medidas de segurança tradicionais que se concentram em assinaturas de malware conhecidas. Isso permite que os invasores se misturem ao tráfego normal da rede, dificultando a detecção de suas atividades.
A defesa contra ataques de ransomware baseados em PsExec requer uma abordagem em várias camadas. Aqui estão algumas mitigações importantes:
Controle de acesso: Implemente controles de acesso rígidos, garantindo que apenas usuários autorizados tenham acesso administrativo a sistemas críticos. Limitar o número de contas com privilégios PsExec pode ajudar a reduzir o superfície de ataque.
Proteção de endpoint: Implante e mantenha soluções robustas de proteção de endpoint que incluam mecanismos de detecção baseados em comportamento. Isso pode ajudar a identificar e bloquear atividades suspeitas associadas ao uso do PsExec.
Segmentação de Rede: Empregue segmentação de rede para limitar oportunidades de movimento lateral para invasores. Separar sistemas críticos e restringir o acesso entre segmentos de rede pode ajudar a conter o impacto de uma possível infecção por ransomware.
Monitoramento e detecção de anomalias: Implemente sistemas abrangentes de monitoramento de rede e detecção de anomalias que possam sinalizar o uso incomum ou não autorizado do PsExec. Investigar e responder prontamente a esses alertas pode ajudar a mitigar possíveis danos.