【发布时间】:2015-02-05 17:10:01
【问题描述】:
我们在 2 台 PC 上运行一个经过数字签名的 120 Mb 可执行文件时遇到了一个奇怪的问题。
如果用户启动经过数字签名的 .exe - 那么启动主机(例如 Explorer 或 cmd.exe)将进入无限(无休止)循环,不断打开/关闭 HKLM\System\CurrentControlSet\Control\Cryptography\Providers 和 HKLM\System \CurrentControlSet\Control\Cryptography\Configuration 注册表项。调用堆栈表明主机进程位于 CreateProcess 函数内(更具体地说 - 在 NtCreateUserProcess 内),并且目标进程是“部分创建的”。例如。它在任务管理器中可见,但在进程监视器中没有“进程创建”事件,任何打开目标进程的尝试都会挂起试图打开它的工具。
Explorer/CMD 的启动过程如下:
- 检查 HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\Image 文件执行选项(不存在)
- 按 32 Kb 块读取整个 .exe
- 读取 HKLM\System\CurrentControlSet\Control\Cryptography\ 下的注册表项并枚举 HKLM+HCU\SOFTWARE\MICROSOFT\SystemCertificates\Disallowed\Certificates
- 在结束枚举 HKU.DEFAULT\SOFTWARE\Policies\Microsoft\SystemCertificates\Disallowed\Certificates 后立即开始读取上述注册表项的无限循环
数字证书是 COMODO 颁发的用于代码签名的常用 SHA1-RSA 证书。签名的可执行文件带有时间戳。问题不在于特定的可执行文件,因为使用此证书签名的所有其他可执行文件都有相同的问题。其他签名的可执行文件似乎运行正常。
我们尝试过的:
- 文件哈希没问题。
- 两台电脑都安装了 MalwareBytes。
- 禁用防病毒和防火墙并不能解决问题。
- 安全模式解决了问题。
- 证书正常,未过期,未撤销,certutil -f -urlfetch -verify 未发现任何问题。
- 证书的哈希值未列在上述各种 Disallowed\Certificates 注册表项的枚举中。
- 卸载 MS14-066/KB2992611 没有帮助。
有什么想法吗?
【问题讨论】:
标签: windows certificate registry digital-signature freeze