0

我使用Set-ExecutionPolicy RemoteSigned并下载了一些脚本和模块。这些是我的脚本,所以它们没有签名。我可以使用BypassorRemoteSignedUnrestricted. 我觉得这Unrestricted有点过头了,所以我接受了RemoteSigned,事实上,即使我的脚本没有签名,我也可以下载它们并运行它们......一段时间。然后,“Windows Defender”赶上并完全删除了我的脚本。我的问题是:

  • 下载脚本后,是否有PowerShell 以编程方式指示 Windows Defender 在排除列表中标记该脚本?

  • 你会说这Unrestricted有点不安全吗?如果是这样,使这些脚本签名(或自签名?)的过程是什么,或者这不可能?即设置为Unrestricted使文件不被核弹,然后下载文件,然后以某种方式将其放在排除列表中,然后将 ExecutionPolicy 设置回RemoteSigned

4

1 回答 1

1

下载的文件被标记为来自互联网。您需要解除对它们的阻止。为此,请使用内置 cmdlet。

# Get specifics for a module, cmdlet, or function
(Get-Command -Name Unblock-File).Parameters
(Get-Command -Name Unblock-File).Parameters.Keys
Get-help -Name Unblock-File -Examples
# Results
<#
Unblock-File -Path C:\Users\User01\Documents\Downloads\PowerShellTips.chm
dir C:\Downloads\*PowerShell* | Unblock-File
Get-Item * -Stream "Zone.Identifier" -ErrorAction SilentlyContinue
C:\ps-test\Start-ActivityTracker.ps1
Get-Item C:\ps-test\Start-ActivityTracker.ps1 | Unblock-File
#>
Get-help -Name Unblock-File -Full
Get-help -Name Unblock-File -Online

您使用的任何脚本都将被查看它正在执行的操作。如果您的 AV 解决方案(尽管有 Windows Defender)在任何时候似乎正在做意外/邪恶的事情,它将对其采取措施。这与它们是否签名或您设置的 ExecutionPolicy 无关。

EP = 仅表示允许脚本运行,而不是控制脚本执行/将要执行的操作,并且 EP 不是安全边界,如帮助文件中所述。

解锁文件模块:Microsoft.PowerShell.Utility

取消阻止从 Internet 下载的文件。

这都与 Windows ADS 有关。

'windows 备用数据流下载文件'

### Detecting Alternate Data Streams with PowerShell and DOS

dir /s /r | find ":DATA"

Get-Item –Path 'C:\users\me\desktop\*' -Stream *

Get-Content –Path 'C:\users\me\some_file.exe' -Stream zone.identifier
# Results
<#
[ZoneTransfer]
ZoneId=3
1
2
#>

通过区域 3 下载的文件,我们现在知道这是 Internet 区域,如下图所示。

数值设定

  • 0 我的电脑
  • 1 个本地 Intranet 区域
  • 2 受信任的站点区域
  • 3 互联网专区
  • 4 限制站点区域

使用 MS SysInternals:streams.exe

于 2020-12-14T22:51:40.190 回答