为什么 PowerShell 使用证书来验证脚本?它比 cmd/bat 更危险吗?

为什么 PowerShell 使用证书来验证脚本?它比 cmd/bat 更危险吗?

这可能是一个愚蠢的问题,但我想知道为什么我不能像ps1运行bat文件一样运行任何 PowerShell 脚本()?

即使 PS 有一些额外的(不安全的)命令,我总是可以绕过安全设置并从 bat 运行这个:Powershell.exe -executionpolicy remotesigned -File .\do_whatever.ps1。如果我可以轻松诱骗用户运行我未签名的脚本,那么签名脚本的概念有什么用呢?

我肯定忽略了一些安全问题...对吗?

答案1

这是一次保真度检查。

想一想你在 HTTPS 网站上看到的“证书警告”——你刚好经过警告的“下一步”,但警告会提醒您注意一些错误的事情。

签名的其中一个好处是,您可以知道脚本是否已被更改。考虑一下:

您创建一个脚本来执行内部管理 ClearIISLogs.ps1,并设置提升的计划任务以每天运行它。(powershell.exe clearIISLogs.ps1)

在这种情况下,如果对 ClearIISLogs.ps1 具有写权限的用户尝试更改脚本,则计划任务将无法执行。脚本需要再次由受信任的发布者签名,然后才允许执行。

如果您要配置计划任务以绕过 powershell 安全性(-setexecuitionpolicy unrestricted),则修改后的 ClearIISLogs.PS1 将毫不费力地执行......

相关内容