绕过PowerShell执行策略方法总结 (2)

使用Invoke-Command命令
这是一个典型的通过交互式PowerShell控制台执行的方法。但最主要的是当PowerShell远程处理开启时我们可以用它来对远程系统执行命令。这种技术不会导致配置更改或要求写入磁盘。

Invoke-command -scriptblock {Write-Host "Its run!"}

 

 

下面的命令还可以用来抓取从远程计算机的execution policy并将其应用到本地计算机。

Invoke-command -computername PAYLOAD\WIN-DC -scriptblock {get-executionpolicy} | set-executionpolicy -force

这种方式经测试不可行。

域环境下:

 

工作组下:

 

 

使用Invoke-Expression命令
这是另一个典型的通过交互式PowerShell控制台执行的方法。这种技术不会导致配置更改或要求写入磁盘。下面我列举了一些常用的方法来通过Invoke-Expression绕过execution policy。

例1:使用Get-Content的完整命令

Get-Content .\demo.ps1 | Invoke-Expression

 

 

示例2:使用Get-Content的简短命令

GC .\demo.ps1 | iex

 

 

使用“Bypass”绕过Execution Policy
当你通过脚本文件执行命令的时候这是一个很好的绕过execution policy的方法。当你使用这个标记的时候"没有任何东西被阻止,没有任何警告或提示"。这种技术不会导致配置更改或要求写入磁盘。

PowerShell.exe -ExecutionPolicy Bypass -File .\demo.ps1

 

 

使用“Unrestricted”标记Execution Policy
这类似于"Bypass"标记。当你使用这个标记的时候,它会"加载所有的配置文件并运行所有的脚本。如果你运行从网上下载的一个未被签名的脚本,它会提示你需要权限",这种技术不会导致配置的更改或要求写入磁盘。

PowerShell.exe -ExecutionPolicy UnRestricted -File .\demo.ps1

 

 

使用“Remote-Signed”标记Execution Policy
要想绕过执行限制,需要按照如下教程操作对脚本进行数字签名。

详细参考:https://www.darkoperator.com/blog/2013/3/5/powershell-basics-execution-policy-part-1.html

直接使用Remote-signed标记脚本无法运行的

PowerShell.exe -ExecutionPolicy Remote-signed -File .\demo.ps1

 

 

通过交换AuthorizationManager禁用ExecutionPolicy
下面的函数可以通过一个交互式的PowerShell来执行。一旦函数被调用"AuthorizationManager"就会被替换成空。最终结果是,接下来的会话基本上不受execution policy的限制。然而,它的变化将被应用于会话的持续时间。

function Disable-ExecutionPolicy {($ctx = $executioncontext.gettype().getfield("_context","nonpublic,instance").getvalue( $executioncontext)).gettype().getfield("_authorizationManager","nonpublic,instance").setvalue($ctx, (new-object System.Management.Automation.AuthorizationManager "Microsoft.PowerShell"))}

Disable-ExecutionPolicy

.\demo.ps1

 

 

把ExcutionPolicy设置成Process Scope
执行策略可以应用于多层次的。这包括你控制的过程。使用这种技术,执行策略可以被设置为您的会话的持续时间不受限制。此外,它不会导致配置更改或需要写入到磁盘。

Set-ExecutionPolicy Bypass -Scope Process

 

 

通过命令设置ExcutionPolicy为CurrentUser Scope
这种方法和上面那种类似。但是这种方法通过修改注册表将当前用户环境的设置应用到当前用户的环境中。此外,它不会导致在配置更改或需要写入到磁盘。

Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted

 

 

通过注册表设置ExcutionPolicy为CurrentUser Scope
在这个例子中,展示了如何通过修改注册表项来改变当前用户的环境的执行策略。

HKEY_CURRENT_USER\Software\MicrosoftPowerShell\1\ShellIds\Microsoft.PowerShell

 

 

总结总结

使用的execution policy不一定是开发商,管理员,或者。微软从来没有打算将它成为一个安全控制。这就是为什么有这么多选择绕过它。微软很好地提供了一些本地选项和安全社区也拿出一些真正有趣的东西。
————————————————
版权声明:本文为CSDN博主「Micr067」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41082546/article/details/106878654

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydwpj.html