我们在 2 台运行数字签名 120 Mb 可执行文件的 PC 上遇到了一个奇怪的问题。
如果用户启动数字签名.exe - 则启动主机(例如资源管理器或cmd.exe(将进入无限(无休止(循环,不断打开/关闭HKLM\系统\当前控制集\控制\加密\提供程序和HKLM\系统\当前控制集\控制\密码学\配置注册表项。调用堆栈指示主机进程位于 CreateProcess 函数中(更具体地说 - 在 NtCreateUserProcess 内部(,并且目标进程是"部分创建"的。例如,它在任务管理器中可见,但在进程监视器中没有"进程已创建"事件,任何打开目标进程的尝试都将挂起尝试打开它的工具。
资源管理器/CMD的启动过程是这样的:
- 检查 HKLM\软件\MICROSOFT\WINDOWS NT\CURRENTVERSION\Image File Execution 选项(不存在(
- 读取整个.exe 32 Kb 块
- 读取 HKLM\系统\当前控制集\控制\加密\ 下的注册表项,并枚举 HKLM+HCU\软件\MICROSOFT\系统证书\不允许\证书
- 读取上述注册表项的无休止循环在结束 HKU 枚举后立即开始。默认\软件\策略\Microsoft\系统证书\不允许\证书
数字证书是COMODO颁发的用于代码签名的常用SHA1-RSA证书。签名的可执行文件带有时间戳。问题不在于特定的可执行文件,因为使用此证书签名的所有其他可执行文件都有相同的问题。其他已签名的可执行文件似乎运行正常。
我们尝试过什么:
- 文件哈希正常。
- 两台PC都安装了MalwareBytes。
- 禁用防病毒和防火墙并不能解决问题。
- 安全模式解决了这个问题。 证书正常,未
- 过期,未吊销,证书util -f -urlfetch -verify 未发现任何问题。 证书的
- 哈希未在上面提到的各种不允许\证书注册表项的枚举中列出。
- 卸载 MS14-066/KB2992611 无济于事。
有什么想法吗?
我们找到了原因。
这确实是Malwarebytes工具的问题。它的驱动程序(mbamchameleon.sys(注入到CreateProcess调用中,并在检查某些签名可执行文件的数字签名期间导致无限循环。
https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/67/4/installer-hangs-on-launch