为了说明数字签名证书的好处,我编写了一个 .NET 可执行文件“demo.exe”,它调用了“demo.core.dll”中的一个函数。我对这两个可执行文件都进行了数字签名。执行时,它会打印一条消息“你好。你好吗?”。
使用十六进制编辑器将“demo.core.dll”中的消息修改为“您已被黑客入侵”。对“demo.core.dll”的数字证书验证失败。运行“demo.exe”,显示“您已被黑客入侵”。
我预计 Windows 将无法执行 DLL。
这否定了数字证书的价值。如何配置 Windows 不加载带有无效证书的被篡改的二进制文件?
答案1
编辑:我忘了应用程序锁!
在执行以下过程之前,请确保已创建了“防止标准用户运行每用户应用程序”中描述的规则集合的默认规则。
仅允许运行已签名的应用程序
1.要打开本地安全策略 MMC 管理单元,请单击“开始”,键入 secpol.msc,然后按 ENTER。
2.在控制台树中,双击应用程序控制策略,然后双击 AppLocker。
3.右键单击可执行规则,然后单击创建新规则。
警告警告
此规则可防止运行未签名的应用程序。在实施此规则之前,请确保您要在组织中运行的所有文件都经过数字签名。如果任何应用程序未签名,请考虑实施内部签名流程,使用内部签名密钥对未签名的应用程序进行签名。
4.在“开始之前”页面上,单击“下一步”。
5.在权限页面上,单击下一步接受默认设置。
6.在“条件”页面上,单击“下一步”。
7.在发布者页面上,请注意默认设置是允许运行任何签名的文件,然后单击下一步。
8.在“例外”页面上,单击“下一步”。
9.在名称和描述页面上,接受默认名称或输入自定义名称和描述,然后单击创建。