找回密码
 注册帐号
查看: 3965|回复: 1

如何绕过Windows AppLocker

[复制链接]
发表于 2017-5-26 19:42:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册帐号

×
您好,今天我们将在Windows环境中讨论Applocker旁路技术。 什么是Applocker,它如何保护系统,更重要的是如何绕过此安全功能。 在这篇文章中遇到这么多问题!

什么是Applocker?
Applocker是从Windows Vista / Seven / 2008开始的Microsoft介绍的软件白名单工具,以限制标准用户仅在系统上执行特定的应用程序。 例如:“Alice可以运行explorer.exe,但是Bob不能!”
如果您进行渗透测试,您可能会在非常敏感的机器上找到Applocker:工业计算机,ATM,商业工作站等。
它是如何工作的?
要激活测试机上的Applocker ,启动应用程序身份服务(管理工具 - >服务),然后打开组策略编辑器(本地计算机上的gpedit.msc或域控制器上的gpmc.msc )。 浏览“安全设置”中的“应用程序控制策略”:
单击“配置规则强制”以选择要执行哪种过滤。 您可以看到,Applocker涵盖五种类型的应用程序:
  • 这些是常规的.exe和.com应用程序(cmd.exe,ipconfig.exe等)
  • Windows Installer文件(.msi,.msp,.mst)通常用于在机器上安装新的软件。
  • 具有以下扩展名.ps1,.vbs,.vba,.cmd和.js的脚本文件。
  • 通过Microsoft Store安装的打包应用程序
  • DLL文件(高级选项卡中的.dll和.ocx)。
在本教程中 ,我们将仅讨论在可执行文件,安装程序和脚本的规则的现实环境中最常用的限制。
对于上述五个类别中的每一个,我们可以根据三个标准来定义管理其使用的规则:
  • 执行路径 :例如默认Applocker规则允许“ C:\ Windows ”和“ C:\ Program Files ”中存在的任何可执行文件和脚本。 它必须这样做 - 至少对于某些程序,否则系统将无法启动。
  • 发布商信息:某些可执行文件(例如Windows二进制文件)使用供应商的公钥进行签名。 Applocker可以依赖此信息来拒绝/允许可执行文件运行。 此功能很少使用。
  • 文件散列: Applocker存储允许(或禁止)文件的MD5哈希值。 每次运行程序时,Applocker将检查其MD5并作出相应的决定。 这些规则可以消耗大量的内存,所以它们主要用于禁止一些“危险”的可执行文件。
这可能看起来像很多调整旋钮。 它是。 配置Applocker不是为了微弱的心脏。 为了使本教程变得最有意思,我们将从基本配置开始,并在改进我们的黑客技能的同时进行硬化。 让我们开始吧!
天真的设置
说一个管理员只设置默认的Applocker规则:不允许标准用户在经典的“ C:\ Windows ”和“ C:\ Program Files ”文件夹之外运行文件(可执行文件,安装程序或脚本)。 如何使用标准帐户在机器上运行一个meterpreter.exe,即在框上没有管理员权限?
一种方法是使用写访问来搜索默认的允许文件夹。 想法是将可执行文件复制到允许的文件夹中,然后从那里启动它。 直向前 手动执行可能需要一些时间,那么自动PowerShell脚本怎么样?
在这种情况下,执行路径限制也适用于脚本,所以我们需要对此进行。。。 首先,我们使用Get-Content命令加载脚本的内容,将其转换为字符串,然后将其转发到执行它的Invoke-Expression命令,没有问题!
在默认的Windows安装中,“ C:\ Windows \ Tasks ”和“ C:\ Windows \跟踪 ”通常会弹出为每个人都可写的! 复制我们的可执行文件(mimikatz.exe,meterpreter.exe等),例如绕过默认的Applocker锁定:
人们可能会非常正确地认为.exe文件被高估了,我们可以使用本机Windows最强大的工具PowerShell执行所有的攻击。 这是非常真实的,通过使用Invoke-Expression,我们绕过任何执行路径限制。 然而,在某些情况下,我们需要运行一个简单的exe文件,因为它很简单:重新编译的恶意软件,自定义工具等
如果我们找不到Applocker允许的可写目录,我们需要采取其他方式来运行可执行文件。 一种这样的方法是将.exe文件加载到内存中,然后通过跳转到其入口点启动它。 没有执行路径,没有Applocker规则触发!
在这种情况下,我们首先将可执行文件mimikatz.exe存储在PowerShell变量中:
PS > $ByteArray = [System.IO.File]::ReadAllBytes("C:\users\richard\desktop\mimikatz.exe");
然后使用PowerSploit框架中Invoke-ReflectivePEInjection函数将其加载到内存中并跳转到其入口点。
PS > Invoke-expression(Get-Content .\Invoke-ReflectivePEInjection.ps1 |out-string)PS > Invoke-ReflectivePEInjection -PEBytes $ByteArray
因此,我们可以有效地绕过基于执行路径的任何Applocker规则。
拧紧抓地力
我们精明的管理员知道它的配置有几个洞。 他通过限制访问基本的Microsoft工具(如cmd.exe和PowerShell.exe)来进一步收紧握柄。
我们不能使用自定义脚本(.cmd,.js或.vbs脚本)执行代码,因为它们只允许从受限文件夹运行(以前的规则)。 但是,记住黑名单的主要问题:我们总是想念一些东西!
在这种情况下,例如,管理员拒绝了经典的Windows 64位工具,但完全忘记了“ C:\ Windows \ SysWOW64 \ ”文件夹中的32位文件。 例如,要执行PowerShell,我们只需从该文件夹运行它。
一旦我们访问了PowerShell提示,我们可以将可执行文件和脚本加载到内存中,并按照我们前面的说明执行它们。
此外,在整个系统中执行powershell.exe的搜索通常会导致此文件的其他版本可能与Applocker禁止的哈希不同:
说管理轨道和黑名单每个实例的powershell.exe,powershell_ise.exe,cmd.exe ...我们完成了? 不完全的。 还有其他方法可以在Windows上执行代码。 远程过程调用例如提供了与系统交互的替代方法,而不使用经典的命令行工具。 实用程序“ C:\ Windows \ System32 \ wbem \ wmic.exe ”可用于执行此类操作。
当然,我们不能通过WMIC产生PowerShell提示,但它仍然提供了一个环境来获取有关系统的有趣信息,以便执行特权升级:
您可以在以下链接中找到WMI命令的完整列表。
锁定下来
我们的管理员厌倦了以这种邪恶的方式使用合法的Microsoft工具,所以他阻止了所有以前提到的二进制文件(还有一些)来完全锁定系统。没有更多的cmd.exe,powershell.exe,wmic.exe等。这似乎是一个泡菜,但让我们回到基础了一秒钟。 AppLocker根据文件的哈希识别powershell.exe。 这意味着如果我们用不同的哈希获取powershell.exe的副本,我们赢了! 我们不能使用可执行文件(扩展名.exe),因为这些文件只允许从合法的Windows文件夹启动。 没关系,我们可以使用其他PE类型的文件:DLL文件! 我们可以在以下URL找到例如PowerShell的DLL实现。
我们将其下载到随机文件夹,然后使用C:\ windows \ system32 \ rundll32.exe实用程序启动它。 要执行一个DLL,我们给它的名称和它的入口点函数,在这种情况下主要功能: rundll32.exe PowerShdll.dll,main
完善! 我们现在可以运行任何我们想要的可执行文件/脚本。
结论
显然,结论是对DLL文件以及可执行文件应用保护。 这是完全正确的,但是,它需要更多的工作来识别机器上的业务应用程序使用的所有合法的DLL。 更不用说,每当任何程序加载DLL时,这种系统检查导致的性能显着下降! 我们可以使用与上述章节中概述的技巧相同的精神来设法阻止DLL白名单,但这将是未来文章的主题。 直到那时,安全地进攻!

欢迎来到安全之家
悄悄告诉你善用本站的【 搜索 】功能,那里可能会有你要找的答案哦
 楼主| 发表于 2017-5-27 00:43:44 | 显示全部楼层
免费学习黑客技术了
欢迎来到安全之家
悄悄告诉你善用本站的【 搜索 】功能,那里可能会有你要找的答案哦
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

Archiver|sitemap|小黑屋|手机版原版|安全之家

GMT+8, 2025-4-8 05:55 , Processed in 0.093025 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表