Saiba mais sobre a segurança do script PowerShell

Aplica-se a: Configuration Manager (ramo atual)

É da responsabilidade do administrador validar a proposta de utilização dos parâmetros PowerShell e PowerShell no seu ambiente. Aqui estão alguns recursos úteis para ajudar a educar administradores sobre o poder da PowerShell e potenciais superfícies de risco. Isto é para ajudar a mitigar potenciais superfícies de risco e permitir a utilização de scripts seguros.

Segurança do script PowerShell

Incorporado nos Scripts De Execução é uma funcionalidade para rever visualmente e aprovar scripts que são solicitados para serem executados no ambiente. Os administradores devem estar cientes de que os scripts PowerShell podem ter scripts obfuscados: script que é malicioso e difícil de detetar com inspeção visual durante o processo de aprovação do script. Como uma boa prática, usar certas ferramentas de inspeção, adicionais à revisão visual dos scripts powerShell, ajudará a detetar problemas de scripts suspeitos. Estas ferramentas nem sempre conseguem determinar a intenção do autor powerShell para que possa chamar a atenção para um script suspeito. No entanto, as ferramentas exigirão que o administrador julgue se é sintaxe de script malicioso ou intencional.

Recomendações

  • Familiarize-se com as melhores práticas de segurança powerShell usando os vários links referenciados abaixo.
  • Assine os seus scripts: Outro método para manter os scripts Secure é tê-los examinados e depois assinados, antes de os importar para uso.
  • Não guarde segredos (como palavras-passe) em scripts PowerShell e saiba mais sobre como lidar com segredos.

Informações gerais sobre as melhores práticas de segurança da PowerShell

Esta coleção de links foi escolhida para dar aos administradores do Gestor de Configuração um ponto de partida para aprender sobre as melhores práticas de segurança do script PowerShell.

Introdução às Melhores Práticas de Segurança PowerShell

Defendendo contra ataques PowerShell, blog da equipa PowerShell

Defendendo contra o PowerShell Attacks twitter, de um advogado da Microsoft PowerShell e segurança Lee Holmes

Proteção contra a injeção de código malicioso

PowerShell The Blue Team, discute a exploração de registo de blocos de script profundo, registo de eventos protegidos, interface de digitalização de antimalware, APIs de geração de código seguro

Para Windows 10, existe uma API para uma interface de verificação anti-malware

Segurança dos parâmetros PowerShell

Passar parâmetros é uma forma de ter flexibilidade com os seus scripts e adiar decisões até ao tempo de funcionamento. Também abre outra superfície de risco. As melhores práticas para prevenir parâmetros maliciosos ou injeção de scripts são:

  • Permitir apenas a utilização de parâmetros pré-definidos.
  • Utilize a função de expressão regular para validar os parâmetros que são permitidos.
    • Exemplo: Se apenas uma determinada gama de valores for permitida, utilize uma expressão regular para verificar apenas os caracteres ou valores que podem comumente o intervalo.
    • Validar parâmetros pode ajudar a evitar que os utilizadores tentem usar certos caracteres que podem ser escapados, como citações. Esteja ciente de que pode haver vários tipos de citações, por isso usar expressões regulares para validar quais os caracteres que decidiu serem permitidos é muitas vezes mais fácil do que tentar definir todas as entradas que não são permitidas.
  • Aproveite o módulo PowerShell "caçador de injeção" na Galeria PowerShell.
    • Pode haver falsos positivos, por isso procure intenção quando algo é sinalizado como suspeito para determinar se é um problema real ou não.
  • A Microsoft Visual Studio tem um analisador de Script, que pode ajudar a verificar a sintaxe PowerShell.
  • Este vídeo intitulado: "DEF CON 25 - Lee Holmes - Get $pwnd: Attacking Battle Hardened Windows Server" dá uma visão geral dos tipos de problemas contra os que podes proteger (especialmente a secção 12:20 às 17:50):

Recomendações ambiente

Recomendações gerais para administradores da PowerShell.

  1. Implemente a versão mais recente do PowerShell, como a versão 5 ou maior, incorporada em Windows 10. Em alternativa, pode utilizar o Windows Management Framework.
  2. Ative e colete registos PowerShell, incluindo o Registo de Eventos Protegidos. Incorpore estes registos nas suas assinaturas, caça e fluxos de trabalho de resposta a incidentes.
  3. Implementar a Administração Just Enough em sistemas de alto valor para eliminar ou reduzir o acesso administrativo não constrangido a esses sistemas.
  4. Implementar Windows Defender políticas de controlo de aplicações para permitir que tarefas administrativas pré-aprovadas utilizem a capacidade total da língua PowerShell, limitando simultanea a utilização interativa e não aprovada a um subconjunto limitado da língua PowerShell.
  5. Implemente Windows 10 para dar ao seu fornecedor antivírus acesso total a todos os conteúdos (incluindo conteúdo gerado ou desativado em tempo de execução) processados por Windows Scripting Hosts, incluindo PowerShell.