微软在Windows 10操作系统中添加了一项新的勒索软件防护功能——受控文件夹访问,该功能可用于防止受保护文件夹中的文件被未知程序修改。
在上周的 DerbyCon 安全会议上合并dll文件到软件,安全研究人员演示了“勒索软件使用 DLL 注入来绕过受控文件夹访问的勒索软件保护功能”。
利用 DLL 注入绕过受控文件夹访问
受控文件夹访问是 Windows 10 引入的一项功能,用于保护文件夹和文件不被白名单之外的应用程序修改。白名单是指用户指定或 Microsoft 默认的应用程序列表。
explorer.exe程序在受控文件夹访问的白名单中,而安全研究员Soya Aoyama发现了一种绕过受控文件夹访问的方法,即向Explorer中注入恶意DLL。由于Explorer在白名单中,一旦注入该DLL,便可以在启动Explorer时绕过勒索病毒防护功能。
explorer.exe启动的时候,会加载HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers注册表中的DLL,如下图所示:
HKEY_CLASSES_ROOT 树是 HKEY_LOCAL_MACHINE 和 HKEY_CURRENT_USER 中注册表信息的并集。执行合并时,Windows 会优先考虑 HKCU 树。
也就是说,如果某个键存在于 HKCU 中,则其优先级高于 HKLM 中的相同键,最终会被合并到 HKEY_CLASSES_ROOT 树中。有关合并的更多信息,请参阅。
默认情况下,Explorer 启动时会从 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{90AA3A4E-1CBA-4233-B8BB-535773D48449}\InProcServer32 键加载 Shell.dll。为了将恶意 DLL 加载到 explorer.exe 中,研究人员创建了 HKCU\Software\Classes\CLSID\{90AA3A4E-1CBA-4233-B8BB-535773D48449}\InProcServer32 键合并dll文件到软件,然后将其默认值更改为恶意 DLL。
当Explorer.exe进程被杀死并重新启动时,恶意DLL就会被加载到explorer.exe中,下图是一个被注入到explorer.exe中的DLL示例:
关键在于,上述行为不仅能绕过受控文件夹访问,还能绕过 Windows Defender。根据研究人员的测试,Avast、ESET、Malwarebytes Premium 和 McAfee 的勒索软件防护均未检测到上述行为。
微软回应
研究员 Aoyama 已经向微软 SRC 通报了该漏洞报告以及可以绕过 Controlled Folder Access 的 POC。不过微软并不认为这是一个需要修复的漏洞,具体回应是:
如果你的发现是正确的,报告预测攻击者已经拥有目标账户的访问权限,然后通过修改注册表来注入 DLL。如果你只对 HKCU 有写权限,则无法影响其他用户。因此,这不是特权提升,因为注册表修改后和注入前对目标设备和系统的访问权限是相同的。
但该勒索病毒并不需要提升权限就能加密受害者的计算机,唯一需要做的就是清除卷影复制,而恶意软件开发者可以利用其他漏洞和方法执行 vssadmin(Volume Shadow Copy Service,卷影复制服务的命令行界面)。
通过绕过受控文件夹访问的勒索软件保护功能,恶意软件可以在没有管理员权限的情况下安装。这可能是危险和攻击的开始。