Nos complexos ambientes de TI atuais, é fundamental manter a segurança dos ambientes dos usuários. Para os profissionais de TI e os provedores de serviços gerenciados (MSPs), um desafio é restringir a execução de executáveis potencialmente prejudiciais que residem em locais como AppData ou na pasta Downloads de um usuário. Compreendendo esse desafio, vamos nos aprofundar em uma solução de script avançada para bloquear executáveis do AppData e de outros locais designados.
Compreensão das políticas de restrição de software
As políticas de restrição de software (SRP) são um recurso do Windows que permite aos administradores controlar quais softwares podem ser executados em seus computadores. A SRP pode ser usada para bloquear arquivos executáveis específicos, extensões de arquivos ou até mesmo diretórios inteiros.
Quando um arquivo executável é executado, o Windows verifica as configurações de SRP para ver se o arquivo tem permissão para ser executado. Se o arquivo não tiver permissão para ser executado, será exibida uma mensagem de erro.
O SRP é uma ferramenta avançada que pode ser usada para ajudar a proteger os computadores contra malware e outras ameaças à segurança. No entanto, é importante usar o SRP com cuidado, pois ele também pode bloquear a execução de softwares legítimos.
O script Disable-AppDataExe.ps1
O script Disable-AppDataExe.ps1 é um script do PowerShell que pode ser usado para impedir a execução de arquivos executáveis nos diretórios %AppData% e %UserProfile%Downloads. O script é personalizável, de modo que você pode escolher quais extensões de arquivo bloquear e quais diretórios restringir.
#Requires -Version 5.1
<#
.SYNOPSIS
Creates a Software Restriction Policy to block executables from AppData and a user's Downloads folder.
.DESCRIPTION
Creates a Software Restriction Policy to block executables from AppData and a user's Downloads folder.
.EXAMPLE
-RestrictedDirectory "%APPDATA%", "%UserProfile%Downloads"
Creates a Software Restriction Policy to block executables from AppData and a user's Downloads folder. This is the default.
.EXAMPLE
PS C:> Disable-AppDataExe.ps1 -RestrictedDirectory "%APPDATA%", "%UserProfile%Downloads"
Creates a Software Restriction Policy to block executables from AppData and a user's Downloads folder. This is the default.
.OUTPUTS
None
.NOTES
Minimum OS Architecture Supported: Windows 10, Windows Server 2016 - DOES NOT SUPPORT WINDOWS 11
Release Notes:
Initial Release
(c) 2023 NinjaOne
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms.
Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party.
Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider.
Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations.
Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks.
Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script.
EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#>
[CmdletBinding()]
param (
# Paths to block executions
[Parameter()]
[String[]]
$RestrictedDirectory = @("%APPDATA%", "%UserProfile%Downloads"),
# Executables
[Parameter()]
[String[]]
$ExecutableTypes = @("ADE", "ADP", "BAS", "BAT", "CHM", "CMD", "COM", "CPL", "CRT", "EXE", "HLP", "HTA", "INF", "INS", "ISP", "LNK", "MDB", "MDE", "MSC", "MSI", "MSP", "MST", "OCX", "PCD", "PIF", "REG", "SCR", "SHS", "URL", "VB", "WSC")
)
begin {
function Test-IsElevated {
$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$p = New-Object System.Security.Principal.WindowsPrincipal($id)
if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
{ Write-Output $true }
else
{ Write-Output $false }
}
}
process {
if (-not (Test-IsElevated)) {
Write-Error -Message "Access Denied. Please run with Administrator privileges."
exit 1
}
# Clear existing rules
$BaseRegPath = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\safer'
if (Test-Path "$BaseRegPath") { Remove-Item "$BaseRegPath" -Recurse }
# Create our rule settings
New-Item "$BaseRegPath"
New-Item "$($BaseRegPath)\codeidentifiers"
New-Item "$($BaseRegPath)\codeidentifiers\0"
New-Item "$($BaseRegPath)\codeidentifiers\0\Paths"
New-ItemProperty "$($BaseRegPath)\codeidentifiers" -Name 'authenticodeenabled' -Value 0 -PropertyType DWord
New-ItemProperty "$($BaseRegPath)\codeidentifiers" -Name 'DefaultLevel' -Value 262144 -PropertyType DWord
New-ItemProperty "$($BaseRegPath)\codeidentifiers" -Name 'TransparentEnabled' -Value 1 -PropertyType DWord
New-ItemProperty "$($BaseRegPath)\codeidentifiers" -Name 'PolicyScope' -Value 0 -PropertyType DWord
New-ItemProperty "$($BaseRegPath)\codeidentifiers" -Name 'ExecutableTypes' -Value $ExecutableTypes -PropertyType MultiString
foreach ($Directory in $RestrictedDirectory) {
$pathguid = [guid]::newguid()
$newpathkey = "$($BaseRegPath)\codeidentifiers\0\Paths{" + $pathguid + "}"
if ((Test-Path -LiteralPath $newpathkey) -ne $true) { New-Item $newpathkey }
New-ItemProperty -LiteralPath $newpathkey -Name 'SaferFlags' -Value 0 -PropertyType DWord
New-ItemProperty -LiteralPath $newpathkey -Name 'ItemData' -Value $Directory -PropertyType ExpandString
}
gpupdate.exe /force
}
Como usar o script
Para usar o script Disable-AppDataExe.ps1, você precisará ter o PowerShell instalado e executá-lo com privilégios administrativos. Quando tiver o script, você poderá executá-lo digitando o seguinte comando no prompt do PowerShell:
.Disable-AppDataExe.ps1
O script bloqueará a execução dos arquivos executáveis especificados nos diretórios especificados.
Considerações finais
O script Disable-AppDataExe.ps1 é uma ferramenta útil para bloquear a execução de arquivos executáveis em diretórios específicos. No entanto, é importante estar ciente de suas limitações. Ao entender como o SRP funciona e como usar o script, você pode ajudar a proteger seus computadores contra malware e outras ameaças à segurança.
Aqui estão alguns aspectos adicionais que você deve ter em mente ao usar o script Disable-AppDataExe.ps1:
- O script bloqueará somente os arquivos executáveis que estiverem nos diretórios especificados. Ele não bloqueará arquivos executáveis que estejam em outros diretórios, como o diretório Arquivos de Programas.
- O script não bloqueará arquivos executáveis que sejam executados a partir de um prompt de comando ou de um arquivo em lote.
- O script pode ser contornado por usuários que tenham privilégios administrativos. (Talvez você tenha interesse em saber como desativar os privilégios administrativos locais com o PowerShell)
O NinjaOne pode ajudar os profissionais de TI a bloquear perfeitamente os arquivos executáveis em um número ilimitado de endpoints. O NinjaOne é uma plataforma de gerenciamento de TI baseada em nuvem que oferece vários recursos de segurança, incluindo a capacidade de criar e implementar políticas de restrição de software (SRP). O recurso SRP do NinjaOne é fácil de usar e pode ser personalizado para bloquear a execução de arquivos executáveis em diretórios específicos, extensões de arquivos ou até mesmo em aplicativos inteiros. Além disso, o recurso SRP do NinjaOne pode ser gerenciado de forma centralizada, facilitando a expansão para um número ilimitado de endpoints.
Aqui estão alguns dos benefícios de usar o NinjaOne para bloquear arquivos executáveis:
- Implementação perfeita: O recurso SRP do NinjaOne pode ser implementado em pontos de extremidade sem a necessidade de instalações ou configurações individuais. Isso facilita a implementação da política em um grande número de endpoints de forma rápida e fácil.
- Gerenciamento centralizado: O recurso SRP do NinjaOne pode ser gerenciado de forma centralizada a partir de um único console. Isso facilita a criação, modificação e implementação de políticas de SRP em todos os seus endpoints.
- Flexibilidade: O recurso SRP do NinjaOne é flexível e pode ser personalizado para atender às necessidades específicas de sua organização. Você pode optar por bloquear arquivos executáveis por diretório, extensão de arquivo ou até mesmo aplicativo.
- Escalabilidade: O recurso SRP do NinjaOne pode ser ampliado para um número ilimitado de pontos de extremidade. Isso o torna uma ótima solução para organizações de todos os tamanhos.
Saiba mais sobre o NinjaOne Endpoint Management.