Saiba mais sobre a segurança de script do PowerShellLearn more about PowerShell script security

Aplica-se a: O System Center Configuration Manager (ramo atual)Applies to: System Center Configuration Manager (Current Branch)

Responsabilidade do administrador para validar proposto PowerShell e o PowerShell utilização de parâmetros no respetivo ambiente.It is the administrator’s responsibility to validate proposed PowerShell and PowerShell parameter usage in their environment. Seguem-se alguns recursos úteis para ajudar a informe os administradores sobre energia do PowerShell e analisa de risco potencial.Here are some helpful resources to help educate administrators about the power of PowerShell and potential risk surfaces. Isto é ajudar a mitigar a potencial analisa de risco e permitir que os scripts seguros para ser utilizado.This is to help mitigate potential risk surfaces and allow safe scripts to be used.

Segurança de Script do PowerShellPowerShell Script Security

Incorporado nos Scripts de executar é uma funcionalidade visualmente rever e aprovar scripts que são pedidos a ser executado no ambiente.Built into the Run Scripts is a feature to visually review and approve scripts that are requested to be run in the environment. Os administradores devem ter conhecimento de scripts do PowerShell podem ter ocultado script: scripts maliciosos e difíceis de detetar com visual inspeção durante o processo de aprovação de script.Administrators should be aware PowerShell scripts can have obfuscated script: script that is malicious and difficult to detect with visual inspection during the script approval process. Como melhor prática, utilizando ferramentas determinadas inspeção, no adicionais para rever visualmente scripts do PowerShell, irá ajudar a detetar problemas de scripts suspeita.As a best practice, using certain inspection tools, in additional to visually reviewing PowerShell scripts, will help detect suspicious scripts issues. Estas ferramentas sempre não é possível determinar a intenção do autor do PowerShell para poder colocar atenção para um script suspeita.These tools can’t always determine the PowerShell author's intent so it can bring attention to a suspicious script. No entanto, as ferramentas requerem o administrador para avaliar se é sintaxe de script malicioso ou intencional.However, the tools will require the administrator to judge if it is malicious or intentional script syntax.

RecomendaçõesRecommendations

  • Familiarize-se com o PowerShell melhores práticas de segurança utilizando as ligações de vários referenciadas abaixo.Familiarize yourself with PowerShell security best practices using the various links referenced below.
  • Assinar os scripts: Outro método para manter os scripts seguro é ter os mesmos possam vetted e, em seguida, com sessão iniciada, antes de importá-los para utilização.Sign your scripts: Another method for keeping scripts Secure is by having them vetted and then signed, before importing them for usage.
  • Não armazenar segredos (tal como as palavras-passe) em scripts do PowerShell e saber mais sobre como lidar com segredos.Don’t store secrets (such as passwords) in PowerShell scripts and learn more about how to handle secrets.

Informações gerais sobre práticas recomendadas de segurança de PowerShellGeneral information about PowerShell security best practices

Esta coleção de ligações foi escolhida para dar um ponto de partida de administradores do Configuration Manager para aprender sobre práticas recomendadas de segurança de script do PowerShell.This collection of links was chosen to give Configuration Manager administrators a starting point for learning about PowerShell script security best practices.

Introdução ao práticas recomendadas de segurança de PowerShellIntroduction to PowerShell Security Best Practices

PowerShell segurança melhores práticas PowerPointPowerShell Security Best Practices PowerPoint

Defending contra PowerShell ataques, blogue da equipa do PowerShellDefending Against PowerShell Attacks, PowerShell team blog

Twitter defending contra ataques de PowerShell, de um Microsoft PowerShell e segurança advocate Nogueira HolmesDefending Against PowerShell Attacks twitter, from a Microsoft PowerShell and Security advocate Lee Holmes

Proteger contra Injeção de código maliciosoProtecting Against Malicious Code Injection

Informações sobre a segurança da galeria do PowerShellInformation about security from the PowerShell Gallery

Equipa azul o PowerShell, descreve o bloco de Script profunda a iniciar sessão, protegido registo de eventos, a Interface de análise Antimalware, proteger os APIs de geração de códigoPowerShell The Blue Team, discusses Deep Script block logging, Protected Event Logging , Antimalware Scan Interface, Secure Code Generation APIs

Para o Windows 10, é uma API para uma interface de análise AntimalwareFor Windows 10, there is an API for an anti-malware scan interface

Segurança de parâmetros de PowerShellPowerShell parameters security

Os parâmetros a transmitir é uma forma flexibilidade com os scripts e diferir decisões até que o tempo de execução.Passing parameters is a way to have flexibility with your scripts and defer decisions until run time. Abre-se também configurar outra superfície de risco.It also opens up another risk surface. Melhores práticas para impedir a injeção de script ou parâmetros maliciosos são:Best practices for preventing malicious parameters or script injection are:

  • Permitir apenas a utilização de parâmetros predefinidos.Only allow usage of pre-defined parameters.
  • Utilize a funcionalidade de expressão regular para validar os parâmetros que são permitidos.Use the regular expression feature, to validate parameters that are allowed.
    • Exemplo: Se apenas são permitidos um determinado intervalo de valores, utilize uma expressão regular para verificar se apenas esses carateres ou valores que podem fazer cópias de segurança do intervalo.Example: If only a certain range of values are allowed, use a regular expression to check for only those characters or values that can make up the range.
    • A validar os parâmetros pode ajudar a impedir que os utilizadores a tentar utilizar determinados caracteres que podem ser caráter de escape correto, como as aspas.Validating parameters can help prevent users trying use certain characters that can be escaped, like quotes. Tenha em atenção que podem existir vários tipos de aspas, por isso, utilizando expressões regulares para validar que carateres tiver decidido são permitidos, muitas vezes, é mais fácil ao tentar definir todas as entradas que não permitido.Be aware that there can be multiple types of quotes, so using regular expressions to validate which characters you’ve decided are permissible is often easier than trying to define all the inputs that not permissible.
  • Tirar partido do módulo do PowerShell "hunter injeção" na galeria do PowerShell.Leverage the PowerShell module "injection hunter" in the PowerShell Gallery.
    • Não existe pode ser falsos positivos, por isso, procure para intenção quando algo está assinalada como suspeita para determinar se é um problema real ou não.There can be false positives, so look for intent when something is flagged as suspicious to determine if it is a real issue or not.
  • Microsoft Visual Studio tem um analisador de Script, que pode ajudar a verificar a sintaxe do PowerShell.Microsoft Visual Studio has a Script analyzer, that can assist with checking PowerShell syntax.
  • Este vídeo intitulado: "DEF CON 25 - Nogueira Holmes - obter $pwnd: Atacar luta puro Windows Server"proporcione uma descrição geral dos tipos de problemas que pode proteger contra (especialmente a secção 12:20 para 17:50): This video titled: “DEF CON 25 - Lee Holmes - Get $pwnd: Attacking Battle Hardened Windows Server” gives an overview of the types of issues that you can secure against (especially the section 12:20 to 17:50):

Recomendações de ambienteEnvironment Recommendations

Recomendações gerais para os administradores do PowerShell.General recommendations for PowerShell administrators.

  1. Implemente uma versão mais recente do PowerShell, como a versão 5 ou superior, incorporadas no Windows 10.Deploy latest version of PowerShell, such as version 5 or greater, built into Windows 10. Em alternativa, pode implementar o Windows Management Framework, disponível para baixo e incluindo, Windows 7 e Windows Server 2008 R2.Alternatively, you can deploy the Windows Management Framework, available down to, and including Windows 7 and Windows Server 2008 R2.
  2. Ative e recolher registos de PowerShell, opcionalmente incluindo protegidos registo de eventos.Enable, and collect PowerShell logs, optionally including Protected Event Logging. Incorpore estes registos suas assinaturas, hunting e fluxos de trabalho de resposta a incidentes.Incorporate these logs into your signatures, hunting, and incident response workflows.
  3. Implemente apenas suficiente administração em sistemas de elevado valor, eliminar ou reduzir acesso administrativo a esses sistemas.Implement Just Enough Administration on high-value systems to eliminate or reduce unconstrained administrative access to those systems.
  4. Implemente políticas de controlo de proteção/aplicação de dispositivo para permitir que as tarefas administrativas previamente aprovadas a utilizar da capacidade total do idioma do PowerShell, ao limitar utilização interativa e não aprovada para um subconjunto limitado do idioma do PowerShell.Deploy Device Guard/Application Control policies to allow pre-approved administrative tasks to use the full capability of the PowerShell language, while limiting interactive and unapproved use to a limited subset of the PowerShell language.
  5. Implementar o Windows 10 para dar o seu fornecedor de antivírus acesso total a todo o conteúdo (incluindo o conteúdo gerado ou anular oculto no tempo de execução) processado pelo Windows Scripting anfitriões, incluindo o PowerShell.Deploy Windows 10 to give your antivirus provider full access to all content (including content generated or de-obfuscated at runtime) processed by Windows Scripting Hosts including PowerShell.