我认为,如果你是启用了AppLocker(“应用程序控制策略”,是Windows 7系统中新增加的一项安全功能)的主机上的管理员,那么目前有两种不同技术可以用来绕过AppLocker。其中,使用GUI的第一种技术在我原先发布的一条推文中曾简单讨论过。
这篇文章的目标是详细讨论这个曾经提到的技术,同时也为你提供另一种以前没有人提到过的绕过技术。
需要注意的是,在这些绕过技术示例中,集中定义的AppLocker可执行如下规则(默认规则,没有管理规则)。
其余的规则,则使用默认的AppLocker规则定义(* under Windows 以及 * under ProgramFiles)。
使用GUI方式添加自定义规则
如果你是主机上的本地管理员,则你可以顺利地添加自定义规则,基本不会遇到什么困难。有两种方法可以做到这一点,其中GUI是在主机上启动gpedit.msc并添加它们,就像在此GIF中所示的那样。
利用该方法,你要做的就是在该主机上本地添加AppLocker规则。当AppLocker应用规则时,它会将中央组策略中定义的规则与主机上本地策略中定义的规则结合起来。不过,这种结合的效果并不理想,所以我建议你可以考虑一下添加此项来删除任何添加的本地规则。
在不使用GUI的方式下,添加自定义的规则
现在要介绍的这种方法非常隐蔽,由于使用GUI方式并不是唯一一种选择,特别是当你使用shell时。所以这里我将介绍另一种方法:当AppLocker(应用程序标识服务)处理组策略时,它将“AppLocker规则”文件放在c:\windows\system32\ AppLocker中。当你执行文件时,AppLocker将使用这些文件来确定是否应该阻止这些文件。
另一种方法是在c:\windows\system32\ AppLocker中操作AppLocker放在磁盘上的文件。为了做到这一点,我们首先需要生成一个通配符规则,稍后我们将把它植入我们要进行攻击的设备中,这个GIF就显示了整个过程。
所以我要做的基本上只是在一台独立的Windows 10企业计算机上预先创建一个规则文件,如果你不想自己生成规则文件,可以在这里下载。
现在,我们就得到了规则文件,让我们继续将其移植到受保护的客户端上(记住,你需要是管理员)。为此,你还需要重新启动客户端。目前,我还没有找到一种神奇的服务,可以让它在不启动的情况下停止并开始工作。你需要做的就是复制Exe.AppLocker文件并替换c:\windows\system32\applocker 中的文件,然后重新启动,这个GIF就显示了整个过程。
对于攻击者来说,这样做的好处是它不会出现在客户端的GUI中,所以你必须手动检查c:\windows\system32\applocker下的文件来找到它。
一旦执行GPUpdate/Force或者有人更改了中央组策略(添加或删除AppLocker规则),你所放置的文件就会被替换。
在我写完这篇博客后,我还意识到你也可以删除规则文件,从而达到相同的效果,但是如果你是覆盖规则文件而不是删除规则文件,则可能会更难检测到。
如果你需要在每次更新组策略时都重新应用组策略,那么你可以看看这篇关于如何停止这种行为的博客文章。
如何监测这种绕过行为
如果你监测c:\windows\system32\applocker下文件的更改,可以检测到这一情况。据我所知,只有在组策略集中更改或使用gpedit添加自己的本地规则时,才会更新这些文件。另外,这些文件上的时间戳也应该相同。如果有变化,它可能表明有人在那里放置了一个文件来绕过AppLocker。另一个迹象是,这些文件有一部分会被删除。