Neurohazard
暮雲煙月,皓首窮經;森羅萬象,如是我聞。

Powershell 脚本执行策略

wpadmin~March 10, 2019 /InfoSec

Contents

Powershell 脚本执行策略

TL;DR

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
Get-ExecutionPolicy -List | Format-Table -AutoSize

基本说明

Powershell 默认是不允许执行 PS1 脚本。

# 查看当前执行策略
Get-ExecutionPolicy

# 查看当前各个作用域(scope)的执行策略
Get-ExecutionPolicy -List | Format-Table -AutoSize

一共有 6 种执行策略,分别是:Undefined, Bypass, Unrestricted, Remotesigned, Allsigned, Restricted.
默认情况下是 Restricted 策略,更详细的可以参考:

https://technet.microsoft.com/library/hh847748.aspx

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-6

本地计算机 (Local Machine) 和当前用户 (Current User) 的执行策略存储在注册表中。无需在 Windows PowerShell 配置文件中设置执行策略。某个特定会话的执行策略仅存储在内存中,当关闭会话时,该执行策略会丢失。

执行策略 (Execution Policy) 机制不是限制用户操作的安全系统。例如,当用户无法运行脚本时,可以通过在命令行键入脚本内容轻松绕过策略。相反,执行策略帮助用户设置基本规则并阻止他们无意中违反规则。

WINDOWS POWERSHELL 执行策略

默认执行策略为 “Restricted”。

RESTRICTED

ALLSIGNED

REMOTESIGNED

UNRESTRICTED

BYPASS

UNDEFINED

注意:在不区分通用命名约定 (UNC) 路径和 Internet 路径的系统上,可能不允许使用 RemoteSigned 执行策略运行由 UNC 路径标识的脚本。

执行策略作用域

你可以设置仅在某个特定作用域中有效的执行策略。

Scope 的有效值为 Process、CurrentUser 和 LocalMachine。设置执行策略时,LocalMachine 是默认值。

按优先顺序列出这些 Scope 值。

执行策略存储在 $env:PSExecutionPolicyPreference 环境变量中,不是存储在注册表中,并且当关闭会话时会删除它。不能通过编辑变量值来更改策略。

LOCALMACHINE 策略优先级更高,即使在较低优先级(用户,进程)上设置了更加严格的策略。

有关详细信息,请参阅 Set-ExecutionPolicy。

绕过

netspi 关于 15种 绕过 powershell 执行策略的方式
https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/

参考资料

PowerShell 脚本执行策略
https://lightless.me/archives/powershell-executtion-policies.html

Powershell 文档 about_Execution_Policies (低版本)
https://docs.microsoft.com/zh-cn/previous-versions/windows/powershell-scripting/hh847748(v=wps.640)

Powershell 文档 about_Execution_Policies
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-6

netspi 关于 15种 绕过 powershell 执行策略的方式
https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/

Leave a Reply

Your email address will not be published. Required fields are marked *