Como prevenir ataques via Powershell

Os scripts de PowerShell é basicamente um arquivo de texto simples com uma extensão .ps1. Este arquivo será executado assim que você chamá-lo no console. O usuário pode controlar quais scripts serão executados. Isso pode ser perigoso quando o usuário tem intenções maliciosas, portanto, existem três ações que você pode executar para minimizar scripts maliciosos:

Leia mais:

Habilitando a execução de scripts no PowerShell
Usando o Powershell para aplicar políticas de mensagens a usuários de equipes
Como Conectar no Exchange Online via Powershell?
13 Comandos obrigatórios do Microsoft 365 Powershell
Alterando a porta padrão do Remote Desktop 3389

Defina a política de execução do PowerShell:

A Microsoft restringe os scripts do PowerShell com política de execução para evitar que os usuários executem acidentalmente scripts que não deveriam ser executados. Essas restrições também ajudam a evitar que as pessoas executem scripts maliciosos em campanhas de engenharia social.

Para definir a política de execução, use o cmdlet Set-ExecutionPolicy e escolha uma das seguintes opções:

  1. Restrito: esta é a opção mais restritiva. A escolha desta opção não permitirá que os arquivos de configuração sejam carregados e que os scripts sejam executados. No entanto, você ainda poderá executar comandos individuais no console do PowerShell.
  2. AllSigned: escolher a opção significa que todos os scripts e arquivos de configuração devem ser assinados digitalmente por um editor confiável. A assinatura é feita usando um certificado de assinatura de código.
  3. RemosteSigned: escolher esta opção significa que quando um script ou um arquivo de configuração é baixado da Internet, ele deve ser assinado digitalmente. No entanto, scripts e arquivos de configuração executados localmente em seu computador podem ser carregados sem serem assinados.
  4. Irrestrito: escolher esta opção significa que todos os scripts podem ser executados e todos os arquivos de configuração podem ser carregados. Esta é a opção menos restritiva e, portanto, mais arriscada.

A configuração de política de execução padrão é Restrita (exceto para Windows Server 2012 R2, onde é Assinado Remotamente). Esta política padrão permite que os usuários executem apenas sessões interativas do PowerShell e comandos únicos, independentemente da origem dos scripts, se eles são assinados e confiáveis.

A política de execução preferível para proteção de scripts, que ainda permitirá que você use o PowerShell, é AllSigned.

Crie um certificado X.509:

Depois de definir a política de execução como AllSigned, você precisará separar seu arquivo. Para fazer isso, você precisará criar um certificado X.509 de assinatura de código. O X.509 é um padrão de criptografia que você pode comprar de uma autoridade de certificação pública ou criá-lo você mesmo.

Assine o script do PowerShell:

Depois de criar o certificado, use-o para assinar seus scripts. Você precisará usar o cmdlet Set-AuthenticodeSignature e especificar o arquivo de script a ser assinado e seu certificado ao assinar o arquivo.

Ao executar um script assinado digitalmente, você terá a opção de escolher se é realmente seguro executá-lo. Você pode escolher nunca executar o arquivo, não executá-lo desta vez, executá-lo uma vez ou executá-lo sempre.

Observação: se você usar um certificado privado criado para assinar seus arquivos, ainda é possível que um invasor use seu certificado para assinar scripts maliciosos. Para evitar isso e fornecer proteção adicional, exporte seu certificado de assinatura de código para um arquivo .pfx e use esse arquivo para assinar seus scripts.

#DicaProfissa: Faça um curso profissionalizante!
Garanta um curso certificado na área de TI e Software pela plataforma de estudos online Udemy.
Clique aqui e confira todos os cursos mais recentes em tecnologia!

Use o AppLocker para desabilitar os scripts do PowerShell:

AppLocker é uma maneira útil de colocar aplicativos e scripts na lista de permissões. Você pode usar as políticas de Regras de Script para criar uma regra de permissão apenas para uma pasta específica. Isso garantirá que apenas os arquivos desta pasta sejam executados.

Outra opção possível, mas um pouco menos eficaz, é usar Regras Executáveis ​​para limitar qual arquivo pode ser executado por seu caminho ou assinatura. Ao criar regras de assinatura para PowerShell e PowerShell_ISA, você pode impedir que não administradores executem scripts. Observe que esse método pode ser facilmente contornado por invasores usando ferramentas como o PowerShell Empire.

Configure o PowerShell para usar o ‘Modo restrito’:

A linguagem PowerShell Constrained foi projetada para oferecer suporte às atividades diárias do PowerShell, mas restringir o acesso a elementos de linguagem confidenciais que podem invocar APIs arbitrárias do Windows. O modo restrito do PowerShell foi projetado para funcionar com soluções de controle de aplicativos, que é uma maneira eficaz de minimizar os riscos à sua rede.

O modo de linguagem restrita limita a capacidade do PowerShell de oferecer suporte a recursos como .Net e chamadas de API do Windows e acesso COM. Desabilitar essa funcionalidade irá parar a maioria das ferramentas de ataque do PowerShell, pois elas dependem desses métodos.

Impedir o movimento lateral:

O movimento lateral não é usado apenas em ataques PowerShell. Porém, há várias coisas que você pode fazer para minimizar o risco de invasores usarem métodos de movimento lateral baseados em PowerShell:

  1. Desative o WinRM onde não for necessário para evitar PSSession – o comando PSSession permite uma sessão remota interativa do PowerShell, que o usuário pode usar para executar comandos remotamente. Esta opção depende do serviço Windows Remote Management (WinRM). O WinRM deve estar habilitado para usar este método.
    Defina a configuração ‘Permitir gerenciamento de servidor remoto por meio do WinRM’ como Desativar sempre que possível. Onde não houver opção para esta configuração, configure o WinRM da maneira mais segura possível.
  2. Defina ‘Permitir acesso ao shell remoto’ como Desativar – esta configuração de política permite que você gerencie a configuração do acesso remoto a todos os shells com suporte para executar scripts e comandos. Ao desativá-lo, você minimizará o risco de invasores usá-lo de forma maliciosa.
  3. Desabilite o Windows Server Message Block (SMB) – muitos dos métodos que utilizam o PowerShell para mover lateralmente estão usando o Windows Server Message Block (SMB). Desabilitar o SMB impedirá que invasores usem ferramentas como o PsExec.
  4. Defina uma política de privilégios mínimos – se o invasor tiver privilégios de gravação em arquivos de perfil do PowerShell em um computador remoto, ele pode adicionar código malicioso a eles.

Referência: Calcom Software

Este artigo foi útil?

Para manter um padrão de qualidade para vocês, investimos em um ótimo plano de hospedagem, CDN Pago, Plugins de Otimização para o Site, etc…

Ajude-nos a manter o projeto ativo! 

Acompanhe as novidades em tempo real. Siga nosso perfil no Instagram.

Felipe Santos
Felipe Santos é Arquiteto de Cloud e Segurança, com vivência em Administração de Ambientes Windows Server, Cluster, Storages, Backups Veeam e Office 365.
pt_BRPortuguese

ATÉ 90% DE DESCONTO

DECOLE SUA CARREIRA!!

Quer dar um upgrade na sua carreira? 

Invista em você e saia na frente! Conquiste aquele emprego dos sonhos em 2021!