Windows 10系统安全风险,近300个系统执行文件容易遭受劫持攻击( 二 )


“考虑到这一点 , 您可以尝试通过使用标记为自动提升的可执行文件来尝试以提升的特权运行任意代码 , 该可执行文件也容易受到DLL劫持的影响 。如上一节所述 , 大约有35种这样的可执行文件 。” Beukema解释说 。
如果成功利用了已执行的恶意DLL , 则可以将其用于创建提升权限的命令提示符 , 从而以管理特权对计算机进行完全访问 。

Windows 10系统安全风险,近300个系统执行文件容易遭受劫持攻击

文章插图
DLL劫持启动提升的命令提示符
不过 , 这里有一个障碍 。在期望任何DLL的“自动提升”特权之前 , 操作系统希望这些DLL存在于受信任的目录中 , 该目录不是用户可写的 。
“要解决的问题是受信任目录的问题:自动提升的可执行文件和自定义DLL都必须位于受信任目录中 , 但是这些都不是用户可写的 。”
此处提供了一些方便的模仿技术 , 例如创建一个模拟的“ C: windowssystem32”目录(在Windows之后紧跟一个空格) 。这个名称异常的文件夹可能会诱使可执行文件将攻击者创建的目录视为“受信任位置” 。
是否能够创建这样的目录应被视为安全漏洞尚有争议 , 因为它为攻击者提供了利用DLL劫持漏洞的途径 。
“这是否是适当的安全漏洞尚待商--微软认为不是 , 但至少是一个缺陷 , 因为大多数(非企业)Windows计算机默认使用的是“管理员帐户” 。无论哪种方式 , 这都为我们提供了一种出色的手段 , 通过它可以使DLL劫持更加强大 。”研究人员说 。
但是为什么使用 VBScript?作者建议使用VBScript的原因之一是因为创建名称包含尾随空格的Windows目录不是通过“传统方式”可以实现的 。
【Windows 10系统安全风险,近300个系统执行文件容易遭受劫持攻击】“您可以像原始研究人员一样 , 编译一些C语言来完成此操作 , 但是事实证明 , VBScript实际上也可以为我们做到这一点 。以下概念验证表明 , 仅需几行代码 , 您就可以使它起作用:”
Windows 10系统安全风险,近300个系统执行文件容易遭受劫持攻击

文章插图
用VBScript编写的PoC , 可创建模拟“可信目录”
当受到用户质疑时 , Beukema解释了为什么他在利用容易受到DLL劫持的可执行文件时选择了VBScript 。
“我知道……这只是因为PowerShell不允许您这样做 , 而VBScript却可以 。而且由于它是VBScript , 因此您无需带上自己的编译二进制文件即可使用此技巧 , 这意味着 , 除了自定义DLL之外 , 您还可以使用Living of the Land +脚本来完成所有工作 。”
检测和预防技术Beukema提出了一些预防方法 , 可以用来阻止此类攻击 , 例如 , 如果您的计算机上存在模拟Windows 文件夹中的活动 , 则可以对其进行查找 。同样 , 如果最终用户足够了解要执行的操作 , 则将UAC设置调整为“始终通知”可以帮助防止此类攻击 。
另一个策略是监视DLL创建和从意外文件路径加载的实例:
“您可以从意外路径中寻找前面提到的任何DLL的创建或加载 , 特别是在诸如%Appdata%之类的临时位置 。毕竟 , 可以更改加载DLL的(合法)应用程序的名称 , 但DLL的文件名始终是固定的 。”
Beukema建议 , 在构建应用程序时 , 开发人员应强制使用绝对而非相对路径来加载DLL , 以及其他几种技术 。这些都不是足够简单的 。
但是 , 如果适当地结合使用 , 预防措施(如研究人员所解释的那样)可以长期阻止DLL劫持攻击 。




推荐阅读