Proteja seus scripts confidenciais do PowerShell criptografando-os. Aqui estão as instruções passo a passo para a criptografia de script do PowerShell.
Inevitavelmente, existe um certo risco decorrente de ter uma coleção dedo PowerShellarmazenados em sua rede. Por exemplo, um invasor pode analisar um de seus scripts para obter informações sobre a infraestrutura de TI de sua organização. Da mesma forma, um invasor (ou mesmo um membro bem-intencionado da equipe de TI da sua empresa) pode fazer uma modificação em um script existente que causa problemas gerais.
Uma maneira de reduzir potencialmente esses riscos é criardo PowerShell. Um script criptografado requer muito mais esforço para ler ou modificar do que um script de texto simples.
Neste artigo, mostrarei como criar esse script.
Parte Um: Criptografar o Script
A primeira etapa na criação de um script do PowerShell criptografado é escrever uma versão em texto simples do script. Depois de ter o script pronto, certifique-se de testá-lo completamente e, em seguida, renomeie o arquivo de script para que ele tenha uma extensão de arquivo .TXT.
Na Figura 1, criei um script Hello World simples, salvo como um arquivo de texto chamado MyCode.txt.
Eu criei um script simples do PowerShell e o salvei como um arquivo de texto.
Você precisará ler seu arquivo de texto no PowerShell, criptografar o conteúdo do arquivo e gravá-lo em um arquivo. Aqui estão alguns comandos para ler, criptografar e gerar o código que está atualmente contido no arquivo de texto:
$Code = Get-Content C:\Scripts\MyCode.txt
$CodeSecureString = ConvertTo-SecureString $Code -AsPlainText -Force
$Encrypted = ConvertFrom-SecureString -SecureString $CodeSecureString
$Encrypted | Out-File -FilePath C:\Scripts\Encrypted.txt
Neste bloco de código, criamos uma variável chamada $Code que contém o conteúdo não criptografado do arquivo de texto. Em seguida, convertemos o arquivo de script em uma string segura e armazenamos seu conteúdo em uma variável chamada $CodeSecureString . Neste ponto, estamos essencialmente tratando o arquivo de texto como uma senha de texto simples. A terceira linha de código converte os dados da string segura em um valor criptografado. Por fim, na última linha do código, gravamos os dados criptografados em um arquivo de texto chamado Encrypted.txt.
Criptografei o conteúdo do meu arquivo de texto original.
Parte dois: coloque o código criptografado no PowerShell
Agora que criptografamos o script original, concluímos a primeira metade do processo. Infelizmente, não podemos simplesmente colar o código criptografado no PowerShell e esperar que ele seja executado. Além de colar o código criptografado em um script, precisaremos incluir alguns comandos que informam ao PowerShell como descriptografar o código.
Aqui está o código:
$Instructions = "01000000d08c9ddf0115d1118c7a00c04fc297eb010000005acac12aa02d05439b51cec88c15f8ed00000000020000000000106600000001000020000000df27935cb01adc23f2db341c5c21f7b144669678a04cd4c5afd6a689c7f08d63000000000e80000000020000200000000bfdbff6ab9d2cf8f6a9a5a5e807f7dcbebc7083012ed3f07b7ce7f6d7e9233a4000000046c27b1d891002f89a8be44eeb8878ca477eb78bc6738649df19a7535ea74ad0b809db0e543acb33d441f3714ea248b62c050ebf8dd0642b9686acd8d60eebbd40000000630dd2c88ca48e14fc130c08aef6c81284ff7d3e54cd52890b44d21c98e2e3fd1499853cf574771b0826693eddfc987696a977b8de20e3929b2bc87205b6fac2"
$Decrypt = $Instructions | ConvertTo-SecureString
$Code = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($Decrypt))
Invoke-Expression $Code
A primeira instrução grava o código criptografado em uma variável chamada $Instructions. Em seguida, criamos uma variável chamada $Decrypt, convertemos o código criptografado em uma string segura e gravamos o resultado na variável $Decrypt. A partir daí, usamos uma chamada para .NET para realizar a descriptografia final. O código descriptografado é gravado em uma variável chamada $Code. Podemos então usar o cmdlet Invoke-Expression para executar o código.
O código criptografado foi descriptografado.
O ponto principal é que todo o código mostrado no exemplo acima pode ser inserido em um script do PowerShell e usado como está. A criptografia torna quase impossível dizer o que o script foi projetado para fazer sem realmente executá-lo. Também impede que qualquer pessoa faça modificações no script, pois qualquer modificação não autorizada corromperia a string criptografada.