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 a proposta PowerShell e o PowerShell utilização de parâmetros em seus ambientes.It is the administrator’s responsibility to validate proposed PowerShell and PowerShell parameter usage in their environment. Aqui estão alguns recursos úteis para ajudar a educar os administradores sobre o poder do PowerShell e as possíveis superfícies de risco.Here are some helpful resources to help educate administrators about the power of PowerShell and potential risk surfaces. Trata-se para o ajudar a atenuar possíveis superfícies de risco e permitir que 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 ao executar Scripts é uma funcionalidade para visualmente rever e aprovar os scripts que são solicitados 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 estar cientes de scripts do PowerShell podem ter oculto script: script malicioso e difícil de detetar com inspeção visual 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, usando determinadas ferramentas de inspeção, em adicionais para revisão visualmente scripts do PowerShell, irá ajudar a detetar problemas de scripts suspeitos.As a best practice, using certain inspection tools, in additional to visually reviewing PowerShell scripts, will help detect suspicious scripts issues. Essas ferramentas sempre não é possível determinar a intenção do autor do PowerShell para que ele pode trazer a atenção para um script que se 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 irão exigir que o administrador avaliar se é a 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 várias ligações referenciadas abaixo.Familiarize yourself with PowerShell security best practices using the various links referenced below.
  • Assinar seus scripts: Outro método para manter scripts seguro é fazendo com que eles examinados e, em seguida, iniciar, 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 palavras-passe) em scripts do PowerShell e saiba 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 às práticas recomendadas de segurança de PowerShellIntroduction to PowerShell Security Best Practices

PowerPoint de práticas recomendada do PowerShell segurançaPowerShell Security Best Practices PowerPoint

Blog da equipe de defending contra PowerShell ataques, do PowerShellDefending Against PowerShell Attacks, PowerShell team blog

Lee Holmes de desenvolvimento do twitter defending contra ataques de PowerShell, do Microsoft PowerShell e segurançaDefending Against PowerShell Attacks twitter, from a Microsoft PowerShell and Security advocate Lee Holmes

Proteção contra Injeção de código mal-intencionadoProtecting Against Malicious Code Injection

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

Equipa azul do PowerShell, discute o bloco de Script profunda Registro em log, registo de eventos protegidos, a Interface de análise de Antimalware, a proteger 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 Windows 10, é uma API para uma interface de análise de antimalwareFor Windows 10, there is an API for an anti-malware scan interface

Segurança de parâmetros do PowerShellPowerShell parameters security

Passando parâmetros é uma forma de ter a flexibilidade com os seus scripts e diferir decisões até o Runtime.Passing parameters is a way to have flexibility with your scripts and defer decisions until run time. Ele também abre outra superfície de risco.It also opens up another risk surface. Melhores práticas para impedi parâmetros maliciosos ou injeção de script 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 parâmetros que são permitidos.Use the regular expression feature, to validate parameters that are allowed.
    • Exemplo: Se apenas um determinado intervalo de valores são permitidos, use uma expressão regular para verificar de apenas esses caracteres ou os valores que podem constituem o 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 ignorados, como aspas.Validating parameters can help prevent users trying use certain characters that can be escaped, like quotes. Lembre-se de que pode haver vários tipos de aspas, assim, usando expressões regulares para validar quais caracteres tiver decidido são permitidos, muitas vezes, é mais fácil do que 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.
  • Tire partido do módulo do PowerShell "hunter injeção" na galeria do PowerShell.Leverage the PowerShell module "injection hunter" in the PowerShell Gallery.
    • Aqui pode ser falsos positivos, então procura intenção quando algo for sinalizada como suspeito 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 com a verificação de sintaxe do PowerShell.Microsoft Visual Studio has a Script analyzer, that can assist with checking PowerShell syntax.
  • Este vídeo intitulado: "DEF CON 25 - Lee Holmes - obter $pwnd: Atacar os batalha puro Windows Server"fornece uma descrição geral dos tipos de problemas que pode proteger contra (especialmente a secção 12:20 a 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 administradores do PowerShell.General recommendations for PowerShell administrators.

  1. Implemente uma versão mais recente do PowerShell, por exemplo, a versão 5 ou superior, incorporado 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 o 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. Ativar e recolher registos de PowerShell, opcionalmente, incluindo o registo de eventos protegidos.Enable, and collect PowerShell logs, optionally including Protected Event Logging. Incorpore estes registos suas assinaturas, buscar e fluxos de trabalho de resposta a incidentes.Incorporate these logs into your signatures, hunting, and incident response workflows.
  3. Implemente a administração apenas suficiente em sistemas de grande valor para eliminar ou reduza o acesso administrativo irrestrita para 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 Guard/aplicações de dispositivo para permitir que as tarefas administrativas pré-aprovados utilizar a capacidade total da linguagem do PowerShell, embora limitar a utilização de análises interativa e não aprovada para um subconjunto limitado da linguagem 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.