探索黑客技术攻防,实战研究与安全创新

导航菜单

浅析 AppLocker与缺陷利用

AppLocker是微软在  Windows 7中推出的一款基于组策略的管理工具,允许管理员配置允许或禁止运行某些应用程序、安装程序或脚本。与软件限制策略(    Software   RestrictionPolicies,SRP)相比,AppLocker最大的优势是灵活便捷。本文将首先介绍利用  AppLocker提高系统安全性的方法,接着指出它存在的一些漏洞和可能的恶意利用方法。

首先来我们实际配置 AppLocker使其禁止运行  notepad.exe。运行“gpedit.msc”打开组策略编辑器,依次定位到“计算机配置”→“Windows设置”→“安全设置”→“应用程序控制策略”→“AppLocker”,如图 1所示,将  AppLocker展开,得到三个选项,依次是可执行规则、Windows安装程序规则和脚本规则,其意义都是很明确的。

QQ截图20160909153434.png

我们在可执行规则上点击右键,选择创建新规则,如图 2所示,需要指定允许或者拒绝操作。AppLocker依据白名单规则,未经允许的程序都被禁止运行。白名单的规模可能十分庞大,不过不必担心,AppLocker将帮助我们创建默认的规则以运行通常的程序运行。在“操作”中选择“拒绝”,保持“用户或组”为“Everyone”(即该规则适用于任何用户和组),并点击下一步。

QQ截图20160909153507.png

如图 3所示,接下来需要选择“主要条件的类型”,有三种选项:发布者、路径或文件哈希。“发布者”选项将使用软件的发布者签名来判断是否允许运行程序,比如禁止所有腾讯公司签名的程序,可以禁止使用  QQ或玩   QQ游戏。“路径”可以指定应用程序路径或文件夹路径,当指定文件夹时,文件夹中的所有文件都会受到影响(包括子文件夹)。“路径”选项支持通配符,十分方便。“文件哈希”则是使用文件的哈希值进行判断,可以防止程序被拷贝到其他目录下运行。

QQ截图20160909153541.png

我们选择路径并进行下一步,接着选择notepad.exe所在的路径%SYSTEM32%\notepad.exe,然后再次点击下一步。有时我们需要允许运行某个文件夹下大部分的程序,但又有几个需要禁止,便可以通过例外选项设置。不过这里我们并不需要这样设置,所以直接点击下一步,并将该规则命名为“禁止运行记事本”,以便日后维护,最后点击“创建”。

如图 4所示,AppLocker会询问我们是否创建默认规则。默认规则有三条,将允许任何用户运行%PROGRAMFILES%和%WINDIR%下的程序,并允许管理员运行任何路径下的程序。如果不创建这三条规则,将会导致大量程序无法运行,带来极大不便,所以我们点击确定创建默认规则。

QQ截图20160909153628.png

由于是第一次配置 AppLocker,需要将 Application Identity服务设为自动启动,并重新启动计算机才能使规则生效。重启后尝试运行 notepad.exe,如图 5所示,会得到错误提示。

图 5 %SYSTEM32%\notepad.exe被阻止以上就是 AppLocker的基本用法。当然,任何安全策略想要发挥作用都需要正确的配置,AppLocker也不例外。我们可以先根据签名来设置允许或禁止某些程序运行,比如禁止腾讯公司的程序而允许本公司开发的所有程序,只允许运行有签名的程序等等。接下来可以依据特定的路径来设置允许运行某些程序。如果某个程序被确定为恶意文件且在网络内传播,可以用哈希规则禁止其运行。/en-us/library/ee791835.aspx中给出了一些配置技巧,可供参考。

AppLocker还提供安全审计(Security   Auditing)功能,供我们查看与  AppLocker有关的事件,包括文件路径与名称,允许或禁止,适用的规则类型和名称,用户组 SID等信息。查看的方法也十分简单,只需运行  eventvwr.msc打开事件查看器,依次展开“应用程序和服务日志”→“Microsoft”→“Windows”→“AppLocker”即可查看有关日志。如图 6所示事件为禁止运行 notepad.exe的相关记录。

QQ截图20160909153732.png

任何事情都有两面性,AppLocker也有其不足的地方。AppLocker所能做的只是防止恶意软件的入侵,当恶意软件在系统内安营扎寨后,它提供的几项限制就力不从心了:对于签名和哈希规则,恶意软件可以很简单的修改自身来绕过;对于路径规则,如果不与其他技术结合,只需复制到其他路径即可绕过。

QQ截图20160909155232.png

AppLocker甚至还可以被恶意软件利用。如图   7所示,笔者添加了一条目录规则,禁止某杀软所在目录下的程序运行。重启后发现该杀软没有运行,也没有给出任何相关提示。

此时双击启动杀软会得到阻止提示,可能是 AppLocker的知名度较低尚未引起杀软注意,笔者连续测试了几款杀软均中招。虽然 Windows  API中没有提供设置  AppLocker的接口,但是实验发现,借助 PowerShell或直接编辑注册表都可以添加新的规则。这说明恶意软件完全可以利用 AppLocker来隐蔽的实现禁止杀软运行的目的,本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。