在Windows 10中,微软新增了一项名为“受控文件夹访问”的功能,该功能可用于防止未知程序修改受保护文件夹中的文件。
而在上周举行的DerbyCon安全会议上,一位安全研究人员则向大家展示了一种利用DLL注入来绕过受控文件夹访问保护的方法。
使用DLL注入绕过受控文件夹访问保护
受控文件夹访问功能启用后,将会监视应用程序对受保护的某些文件夹中的文件所做的任何更改行为,并且只允许被列入白名单的应用程序修改这些文件。白名单应用程序可以是你指定的应用程序,也可以是微软默认列入白名单的应用程序。
在得知explorer.exe默认为受控文件夹访问白名单程序后,富士通系统集成实验室的安全研究员Soya Aoyama想出了一种,在启动时将恶意DLL注入资源管理器的方法。由于资源管理器已列入白名单,因此在注入DLL时它将启动并绕过勒索软件保护功能。
当explorer.exe启动时,它将加载HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers注册表项下找到的DLL。‘
HKEY_CLASSES_ROOT树是HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER中的注册表信息的合集。执行合并时,Windows会以HKCU树中的数据为优先级。
这意味着如果HKCU中存在密钥,它将优先于HKLM中的相同密钥,并且合并到HKEY_CLASSES_ROOT树中的数据。如果这里你感到有点疑惑,那么你可以阅读本文档以获取更多信息。
默认情况下,当资源管理器启动时它会从HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{90AA3A4E-1CBA-4233-B8BB-535773D48449}\InProcServer32键加载Shell32.dll。要将恶意DLL加载到explorer.exe中,Aoyama只需创建一个HKCU\Software\Classes\CLSID\{90AA3A4E-1CBA-4233-B8BB-535773D48449}\InProcServer32 键,并将其默认值设置为恶意DLL即可。
现在,当Explorer.exe进程被杀死并重启时,恶意DLL将被执行而不是Shell32.dll。以下是DLL注入到explorer.exe中的示例:
这不仅绕过了受控文件夹访问保护,而且连Windows Defender也没有检测到该恶意行为。根据Aoyama的测试结果,不仅仅是Windows Defender,包括一些主流的防护软件Avast,ESET,Malwarebytes Premium和McAfee都没有检测到该恶意行为。
有关更多详细信息以及Aoyama在DerbyCon上的演讲和演示内容,请观看下面的视频:
MSRC回应
Aoyama表示在他发表该演讲之前,已向微软安全应急响应中心负责任的披露了该漏洞,并包含了可用于绕过受控文件夹访问保护的POC。
不过,遗憾的是微软方面并不认为这是一个符合漏洞奖赏计划或需要补丁的漏洞。
微软在对Aoyama的回复中表示:”如果我没理解错的话,执行该攻击的前提是攻击者已经登录到了目标账户,然后通过注册表植入恶意DLL。由于你只能写入HKCU,因此无法影响其他用户,最重要的是执行该攻击的前提是已经获取目标系统的相应账户权限。另外,似乎也没有权限提升方面的漏洞,因此我们并不认为这是一个实际存在的漏洞。”
但实际情况是,勒索软件并不需要提权来加密受害者的计算机。恶意软件开发人员可以使用其他漏洞或方法来执行vssadmin。这样做可以在没有管理权限的情况下安装恶意软件,并且仍可绕过受控文件夹访问保护功能。
*参考来源:bleepingcomputer , FB小编secist编译,转载请注明来自FreeBuf.COM