跳转至

代码签名策略修改

对手可能会修改代码签名策略,以允许执行未签名或自签名的代码。代码签名为程序提供了一定程度的真实性,并保证程序未被篡改。安全控制可以包括强制机制,以确保只有有效签名的代码才能在操作系统上运行。 其中一些安全控制可能默认启用,例如Windows上的驱动程序签名强制(DSE)或macOS上的系统完整性保护(SIP)。(引用: Microsoft DSE June 2017)(引用: Apple Disable SIP) 其他此类控制可能默认禁用,但可以通过应用程序控制进行配置,例如仅允许签名的动态链接库(DLL)在系统上执行。由于在开发和测试应用程序期间修改默认签名强制策略对开发人员可能有用,因此在具有提升权限的情况下可能禁用这些功能。(引用: Microsoft Unsigned Driver Apr 2017)(引用: Apple Disable SIP) 对手可能会通过多种方式修改代码签名策略,包括使用命令行或GUI实用程序、修改注册表、在调试/恢复模式下重新启动计算机,或通过更改内核内存中的变量值。(引用: Microsoft TESTSIGNING Feb 2021)(引用: Apple Disable SIP)(引用: FireEye HIKIT Rootkit Part 2)(引用: GitHub Turla Driver Loader) 可以修改系统代码签名策略的命令示例包括Windows上的bcdedit.exe -set TESTSIGNING ON和macOS上的csrutil disable。(引用: Microsoft TESTSIGNING Feb 2021)(引用: Apple Disable SIP) 根据实现情况,成功修改签名策略可能需要重新启动受损系统。此外,一些实现可能会为用户引入可见的工件(例如:屏幕角落的水印,表明系统处于测试模式)。对手可能会尝试删除这些工件。(引用: F-Secure BlackEnergy 2014) 为了访问内核内存以修改与签名检查相关的变量,例如修改g_CiOptions以禁用驱动程序签名强制,对手可能会使用签名但易受攻击的驱动程序进行特权提升利用。(引用: Unit42 AcidBox June 2020)(引用: GitHub Turla Driver Loader)