前言
从Windows 10 1709秋季创意者更新开始,微软为Windows 10安全中心添加了一个名为“受控制的文件夹访问”的全新勒索软件防护功能,可用于防止未知程序修改受保护文件夹中的文件。
在上周举行的DerbyCon安全大会上,安全专家展示了一种利用DLL注入方式来绕过该勒索软件保护功能的方式。
![页首配图](http://image.3001.net/images/20181010/15391405447538.jpg!small)
使用DLL注入绕过“受控制的文件夹访问”功能
“受控制的文件夹访问”可协助用户保护文件夹以及内部文件,简而言之就是只允许列入白名单的应用程序访问和修改该文件夹,白名单涵盖用户指定和Microsoft默认列入白名单的应用程序。
这个方式的突破口是已经列入了上述白名单的explorer.exe进程,安全展架可在系统启动时将恶意DLL注入资源管理器,从而绕过保护。
主要步骤为:
当explorer.exe启动时,它将加载在下面显示的HKEY_CLASSES_ROOT \ * \ shellex \ ContextMenuHandlers
注册表项下找到的DLL。
![注册表](http://image.3001.net/images/20181010/15391405895333.jpg!small)
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
键值加载Shell.dll。要将恶意DLL加载到explorer.exe中,只需创建一个HKCU \ Software \ Classes \ CLSID \ {90AA3A4E-1CBA-4233-B8BB-535773D48449} \ InProcServer32
键值并将其默认值设为恶意DLL即可。
当Explorer.exe被结束和重启时,explorer.exe会启动恶意DLL而不是正常的Shell.dll。下图是注入explorer.exe的DLL示例。
![注入explorer.exe的DLL示例](http://image.3001.net/images/20181010/15391406448723.jpg!small)
这样就可以绕过了“受控制的文件夹访问”功能,而且Windows Defender也没有检测到该恶意行为。实际上,Avast、ESET、Malwarebytes Premium和McAfee等老牌安全软件的勒索软件保护功能都没有报警。
微软的回应
安全专家已向微软安全响应中心披露了这个漏洞,并提供了可用于绕过“受控制的文件夹访问”功能的概念验证。
![披露漏洞](http://image.3001.net/images/20181010/15391406726962.jpg!small)
不过,微软并不认为这是一个符合赏金计划和需要修复的漏洞。微软的回信中是这么说的:“如果我理解正确的话,这种攻击方式的前提是攻击者已经登录了目标账户,接下来是通过修改注册表来植入DLL。由于该账户只能写入HKCU,因此无法影响其他用户。由于登录账户之后就已经获得了相应权限,也不存在提权漏洞等问题。因此该问题关闭且不再跟踪。”
![微软的回信](http://image.3001.net/images/20181010/15391406886958.jpg!small)
但是安全专家认为勒索软件不需要提权来加密受害者的计算机,恶意软件开发人员可以使用其他漏洞或方法掌控卷影复制服务(VSS)。这样以来可以在没有管理员权限的情况下安装恶意软件,并且仍然可以轻松绕过“受控制的文件夹访问”功能。
转载至freebuf网站:freebuf