Windows Defender 和处理下载的 PowerShell 脚本

Windows Defender and handling downloaded PowerShell scripts

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

下载的文件被标记为来自互联网。您需要解锁它们。为此使用内置的 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)会在任何时候似乎正在做 unexpected/nefarious 事情时对其采取行动。这与它们是否已签名或您设置的 ExecutionPolicy 无关。

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

Unblock-File Module: Microsoft.PowerShell.Utility

Unblocks files that were downloaded from the Internet.

这都与 Windows ADS 有关。

'windows alternate data streams downloaded file'

### 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区域。

Value Setting

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

using MS SysInternals: streams.exe