Windows 中用于应用程序白名单的代码签名应用程序

Posted

技术标签:

【中文标题】Windows 中用于应用程序白名单的代码签名应用程序【英文标题】:Code signing applications within Windows for Application Whitelisting 【发布时间】:2016-04-19 04:02:32 【问题描述】:

这是我的困境,我正在尝试根据发布者执行应用程序白名单,而发布者又基于应用程序是否已签名。问题是,未签名的软件没有列出发布者。我的想法是审查未签名的软件,如果批准使用,我们可以使用我们的内部代码签名证书对其进行签名。我使用 Microsoft 的 signtool 测试了这个过程,它似乎有效,但问题就在这里。当我测试它时,我在installer.exe上进行了测试,之后我安装了应用程序,然后它在程序文件中创建了一个文件,其中包含其他安装的.exes。当我检查安装在程序文件中的 .exe 的签名时,它说它们没有签名!我知道我可以对那些签名运行相同的命令,但如果我们要将其部署到众多终端系统,这是不可行的。我的问题是:有没有办法对安装程序进行签名,安装它时,安装的 .exe 也将由我们的内部证书签名?或者有没有办法安装应用程序并签署必要的文件,然后重新打包以进行部署?很抱歉这个问题很长,但我想不出办法来完成这项工作,我认为由于应用程序白名单现在很热门,所以肯定有人遇到过类似的问题。另外,我知道我们可以使用 Path 或 Hash,但这不是我在这里想要做的。

谢谢

【问题讨论】:

【参考方案1】:

首先,我不建议使用您的公司签名来签署供应商代码。我不确定您是否这样做,但如果是,我建议您小心。除非您确切知道代码中的内容,否则签署别人的代码并不是一个好主意。

安装程序中的 exe 未签名是正确的;这就是这个过程的运作方式。当你签署一个可执行文件时,你只是签署了那个 exe,而不是它提取和放置的 cab 文件的内容。

我使用带有签名安装程序的 McAfee Application Control,效果很好。我信任我公司的签名作为更新程序(允许它更改文件),它会根据需要安装软件,而无需签署每个可执行文件。

那么,让我们来看看这些问题(对不起,如果这很长)。

有没有办法签署安装程序并签署其从属 exe?从来没听说过。文件单独签名。你可能会以某种方式自动化它;那是针对不同的线程。我不是签名方面的专家,但根据我的经验,当我签署了一个没有递归到已安装内容中的安装程序时。

有没有办法安装应用程序并签署必要的文件,然后重新打包以进行部署?技术上可行。请记住,如果您重新打包供应商安装,您将失去对安装的支持。有几种快照工具可以对已安装的内容进行增量分析,并让您收集该信息,然后对文件进行签名。这是关于如何从快照创建安装的应用程序打包问题。

【讨论】:

以上是关于Windows 中用于应用程序白名单的代码签名应用程序的主要内容,如果未能解决你的问题,请参考以下文章

windows phone 的 phonegap 中的外部主机白名单

我可以将一台 ChromeCast 设备列入多个应用程序的白名单吗?

如何将应用程序 / exe 列入白名单

使用wmic.exe绕过应用程序白名单(多种方法)

基于白名单的免杀后门

Asp.Net Core安全防护-客户端IP白名单限制