Saiba mais sobre a segurança do script do PowerShell

Aplica-se a: Gerenciador de Configurações (branch atual)

É responsabilidade do administrador validar o uso de parâmetros propostos do PowerShell e do PowerShell em seu ambiente. Aqui estão alguns recursos úteis para ajudar a educar os administradores sobre o poder do PowerShell e possíveis superfícies de risco. Essa orientação é ajudar você a mitigar possíveis superfícies de risco e permitir que scripts seguros sejam usados.

Segurança de script do PowerShell

O recurso scripts Configuration Manager permite que você examine visualmente e aprove scripts. Outro administrador pode solicitar que seu script seja permitido. Os administradores devem estar cientes de que os scripts do PowerShell podem ter scripts ofuscados. Um script ofuscado pode ser mal-intencionado e difícil de detectar com inspeção visual durante o processo de aprovação do script. Examine visualmente os scripts do PowerShell e use ferramentas de inspeção para ajudar a detectar problemas suspeitos de script. Essas ferramentas nem sempre podem determinar a intenção do autor do PowerShell, portanto, podem chamar a atenção para um script suspeito. No entanto, as ferramentas exigirão que o administrador julgue se for sintaxe de script mal-intencionada ou intencional.

Recomendações

  • Familiarize-se com as diretrizes de segurança do PowerShell usando os vários links referenciados abaixo.
  • Assine seus scripts: outro método para manter os scripts seguros é tê-los examinados e assinados antes de importá-los para uso.
  • Não armazene segredos (como senhas) em scripts do PowerShell e saiba mais sobre como lidar com segredos.

Informações gerais sobre a segurança do PowerShell

Essa coleção de links foi escolhida para dar aos administradores Configuration Manager um ponto de partida para aprender sobre as recomendações de segurança de script do PowerShell.

Defendendo contra ataques do PowerShell

Proteção contra injeção de código mal-intencionada

PowerShell – A Equipe Azul discute o registro em log de blocos de script profundo, log de eventos protegido, interface de verificação antimalware e APIs de geração de código seguro

API para interface de verificação anti-malware

Segurança dos parâmetros do PowerShell

Passar parâmetros é uma maneira de ter flexibilidade com seus scripts e adiar as decisões até o tempo de execução. Ele também abre outra superfície de risco.

A lista a seguir inclui recomendações para evitar parâmetros mal-intencionados ou injeção de script:

  • Permitir apenas o uso de parâmetros pré-definidos.
  • Use o recurso de expressão regular para validar parâmetros permitidos.
    • Exemplo: se apenas um determinado intervalo de valores for permitido, use uma expressão regular para verificar apenas os caracteres ou valores que podem compõe o intervalo.
    • A validação de parâmetros pode ajudar a impedir que os usuários tentem usar determinados caracteres que podem ser escapados, como aspas. Pode haver vários tipos de aspas, portanto, usar expressões regulares para validar quais caracteres você decidiu serem permitidos geralmente é mais fácil do que tentar definir todas as entradas que não são permitidas.
  • Use o módulo do PowerShell "caçador de injeções" no Galeria do PowerShell.
    • Pode haver falsos positivos, então procure intenção quando algo é sinalizado como suspeito para determinar se é um problema real ou não.
  • Microsoft Visual Studio tem um analisador de script, que pode ajudar a verificar a sintaxe do PowerShell.

O seguinte vídeo intitulado: "DEF CON 25 - Lee Holmes - Get $pwnd: Attacking Battle Hardened Windows Server" fornece uma visão geral dos tipos de problemas que você pode proteger (especialmente a seção 12:20 às 17:50):

Recomendações de ambiente

A lista a seguir inclui recomendações gerais para administradores do PowerShell:

  • Implante a versão mais recente do PowerShell, como a versão 5 ou posterior, que é incorporada em Windows 10 ou posterior. Você também pode implantar o Windows Management Framework.
  • Habilite e colete logs do PowerShell, incluindo o Log de Eventos Protegido. Incorpore esses logs em suas assinaturas, busca e fluxos de trabalho de resposta a incidentes.
  • Implemente a Administração Just Enough em sistemas de alto valor para eliminar ou reduzir o acesso administrativo não treinado a esses sistemas.
  • Implante Windows Defender políticas de Controle de Aplicativo para permitir que tarefas administrativas pré-aprovadas usem a funcionalidade completa da linguagem do PowerShell, limitando o uso interativo e não aprovado a um subconjunto limitado da linguagem do PowerShell.
  • Implante Windows 10 ou posterior para dar ao provedor antivírus acesso total a todo o conteúdo (incluindo conteúdo gerado ou ofuscado no runtime) processado pelos Hosts de Script do Windows, incluindo o PowerShell.