Windows Defender 和处理下载的 PowerShell 脚本
Windows Defender and handling downloaded PowerShell scripts
我使用 Set-ExecutionPolicy RemoteSigned
并下载了一些脚本和模块。这些是我的脚本,因此没有签名。我可以使用 Bypass
或 RemoteSigned
或 Unrestricted
。我觉得 Unrestricted
感觉有点过头所以我得到了 RemoteSigned
事实上,即使我的脚本没有签名,我也可以下载它们并 运行 它们...尽管。然后,“Windows Defender”赶上并完全删除了我的脚本。我的问题是:
下载脚本后,PowerShell 是否有 程序化 方式指示 Windows Defender 在排除列表中标记该脚本?
会不会说Unrestricted
有点不安全?如果是这样,使这些脚本签名(或自签名?)的过程是什么,或者这是不可能的?即设置为 Unrestricted
这样文件就不会被破坏,然后下载文件,然后以某种方式将其放在排除列表中,然后将 ExecutionPolicy 设置回 RemoteSigned
?
下载的文件被标记为来自互联网。您需要解锁它们。为此使用内置的 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 有关。
### 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 个受限站点区域
我使用 Set-ExecutionPolicy RemoteSigned
并下载了一些脚本和模块。这些是我的脚本,因此没有签名。我可以使用 Bypass
或 RemoteSigned
或 Unrestricted
。我觉得 Unrestricted
感觉有点过头所以我得到了 RemoteSigned
事实上,即使我的脚本没有签名,我也可以下载它们并 运行 它们...尽管。然后,“Windows Defender”赶上并完全删除了我的脚本。我的问题是:
下载脚本后,PowerShell 是否有 程序化 方式指示 Windows Defender 在排除列表中标记该脚本?
会不会说
Unrestricted
有点不安全?如果是这样,使这些脚本签名(或自签名?)的过程是什么,或者这是不可能的?即设置为Unrestricted
这样文件就不会被破坏,然后下载文件,然后以某种方式将其放在排除列表中,然后将 ExecutionPolicy 设置回RemoteSigned
?
下载的文件被标记为来自互联网。您需要解锁它们。为此使用内置的 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 有关。
### 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 个受限站点区域