有什么方法可以确保已下载或存在于系统上的文件来自 Microsoft 且未被篡改?如果是,有任何 PowerShell 方法吗?
我正在考虑使用Get-AuthenticodeSignature
命令行,但我不确定我是否朝着正确的方向前进。
有人可以帮我解决这个问题吗?
以下是我获得的文件输出 -
注:C:> Get-AuthenticodeSignature -FilePath .\sts2016-kb3141486-fullfile-x64-glb.exe | fl
签名者证书:[主题] CN=Microsoft Corporation,OU=MOPR,O=Microsoft Corporation,L=Redmond,S=Washington,C=US
[Issuer] CN=Microsoft Code Signing PCA, O=Microsoft Corporation, L=Redmond, S=Washington, C=US [Serial Number] 330000014096A9EE7056FECC07000100000140 [Not Before] 8/18/2016 8:17:17 PM [Not After] 11/2/2017 8:17:17 PM [Thumbprint] 98ED99A67886D020C564923B7DF25E9AC019DF26
时间戳证书:
状态:有效
StatusMessage:签名已验证。
路径:C:\sts2016-kb3141486-fullfile-x64-glb.exe
签名类型:Authenticode
IsOSBinary : 假
因此,如果仅检查一个文件并且它具有相同的发行者并且其签名已经过验证,我可以认为该文件是安全的吗?
谢谢!
答案1
您可以使用校验和,或者微软在其下载页面上称之为包哈希。这是可以从文件创建的哈希。从软件您提供的,往下是包含文件哈希信息的部分。
您可以使用此信息来确认您下载了正确的软件。PowerShell 有一个名为 Get-FileHash 的 cmdlet,您可以在文件上运行它。它默认使用 SHA256。您可以使用 -Algorithm 参数来使用不同的算法。我在下面的示例中使用了 SHA1,因为它与上面的屏幕截图相匹配。如果您使用 -Algorithm SHA256,它将与屏幕截图中的“Package hash SHA 2”相匹配。
Get-FileHash C:\sts2016-kb3141486-fullfile-x64-glb.exe -Algorithm SHA1
Algorithm Hash Path
--------- ---- ----
SHA1 1B30B50FEB5FB3F8D764C6C0D6523DBA5BE05C1E C:\sts2016-kb3141486-fullfile-x64-glb.exe
如果哈希值匹配,您就可以放心下载。
谢谢,蒂姆。