Bypass Windows AppLocker
2016-01-18 10:36
232 查看
0x00 前言
上一次我们对McAfee Application Control做了测试,这次接着对另一款白名单工具Windows AppLocker进行测试,分享一下其中的攻防技术。
0x01 简介
Windows AppLocker,即“应用程序控制策略”,可用来对可执行程序、安装程序和脚本进行控制,之前只能支持windows7 Enterprise、windows7 Ultimate和WindowsServer2008 R2,但是微软在2012年10月18日将其更新,已支持Windows8.1,Windows Server2012 R2,WindowsServer2012和Windows8 Enterprise如图
AppLocker可对以下文件格式创建规则,限制其执行
下面我们就实际测试一下相关功能
0x02 配置
测试环境:1、开启服务
进入计算机管理-服务-Application Identity,将服务设置为开启如图
2、进入AppLocker配置界面
输入secpol.msc进入本地安全策略-应用程序控制策略-AppLocker
或者
gpedit.msc-计算机配置-Windows设置-安全设置-应用程序控制策略-AppLocker
如图
3、配置规则
对可执行文件设置默认规则:允许本地管理员组的成员运行所有应用程序。
允许 Everyone 组的成员运行位于 Windows 文件夹中的应用程序。
允许 Everyone 组的成员运行位于 Program Files 文件夹中的应用程序。
如图
对脚本设置默认规则:
允许本地管理员组的成员运行所有脚本。
允许 Everyone 组的成员运行位于 Program Files 文件夹中的脚本。
允许 Everyone 组的成员运行位于 Windows 文件夹中的脚本。
如图
开启默认规则后,除了默认路径可以执行外,其他路径均无法执行程序和脚本
0x03 测试
1、执行exe
2、执行脚本
0x04 安全机制分析
通过测试发现设置的规则已经生效,能够阻止信任路径外的exe和脚本执行,但是对以下方面没有做限制:内存
Office 宏
HTML Applications,即hta文件
powershell
而我们已经掌握的绕过技术有:
利用hta文件
利用jscript
利用powershell
利用InstallUtil
利用regsvcs
再加上新学来的技巧,我们最终发现了如下可供利用的方法:)
0x05 绕过方法
1、hta
成功(可参照http://drops.wooyun.org/tips/10667)
可用来执行vbs和JavaScript脚本
2、提权
提权到管理员权限,即可执行突破AppLocker的限制,执行exe和脚本3、powershell
(1)可以执行ps脚本成功
(可参照http://drops.wooyun.org/tips/10667)
4、进程注入
既然可以执行powershell脚本,那么就可以反弹出meterpreter然后尝试进程注入
(可参照http://drops.wooyun.org/tips/11305)
如果注入到普通权限进程,无法执行exe和脚本
如果是system权限进程,可以执行exe和脚本
5、查找可利用的文件路径
通过ps脚本扫描可写入的路径下载地址:http://go.mssec.se/AppLockerBC
(如果无法下载,我已将该脚本上传至Github)
测试如图
执行后会自动扫描出可利用的路径
比如选择路径:
c:\Windows\Tasks
正常执行calc.js会被拦截
但是
copy calc.js c:\Windows\Tasks后
再执行
c:\Windows\Tasks\calc.js,可以绕过拦截
如图
6、rundll32
(1)执行JavaScripta、直接弹回一个Http shell
(可参照http://drops.wooyun.org/tips/11764)
但无法绕过对执行exe和脚本的拦截
b、利用JavaScript执行powershell命令返回HTTP shell
(2)加载第三方dll
a、自己编写的dll
参考资料:
http://blog.didierstevens.com/2010/02/04/cmd-dll/
按照dll的格式,自己编写并生成dll上传
执行
如图
b、反弹meterpreter
kali下:
执行
如图
7、利用InstallUtil
利用InstallUtil.exe直接执行shellcode 成功如果有Microsoft .NET Framework 4.0环境,可用来执行exe
(可参照http://drops.wooyun.org/tips/8701,http://drops.wooyun.org/tips/8862)
8、利用regsvcs
成功(可参照http://drops.wooyun.org/tips/10667)
0x06 防御
严格控制文件写入权限禁用mshta.exe阻止hta的运行
禁用powershell
防止被提权
0x07 小结
随着研究的逐渐深入,我们不难发现:利用InstallUtil、regsvcs是绕过白名单限制的一把利器,无论是攻击还是防御,对此部分都要尤其重视。而利用rundll32.exe的技巧,正在慢慢被发掘。
0x08 参考资料:
https://technet.microsoft.com/en-us/library/dd759117.aspxhttps://technet.microsoft.com/en-us/library/hh831440.aspx
http://dfir-blog.com/2016/01/03/protecting-windows-networks-applocker/
https://mssec.wordpress.com/2015/10/22/applocker-bypass-checker/
https://www.attackdebris.com/?p=143
http://blog.didierstevens.com/2010/02/04/cmd-dll/
相关文件下载地址:
https://github.com/3gstudent/Bypass-Windows-AppLocker
本文由三好学生原创并首发于乌云drops,转载请注明
相关文章推荐
- 关于魅族机型适配问题
- 获得android手机的相关信息
- iOS开发之Masonry(二)
- 重拾Android
- android四大组件(详细总结)
- Android:自定义ProgressBar的样式
- android-open-project-demo
- android 学习笔记之data binding
- iOS左是master,右边是detail
- 读书笔记-App研发录-第7章-ProGuard技术详解
- 不让苹果开发者账号折磨我
- Android ImageView 图片拉伸,填满控件
- Android TextView竖直滚动文字广告效果
- iOS 遍历字符串得到每一个字
- Unity学习日记-Unity音频处理,自定义滤波函数OnAudioFilterRead
- Android实现EditText中添加和删除bitmap的方法
- iOS runtime 消息分发过程
- Objective-C @property学习总结2
- 学习Android Material Design(RecyclerView代替ListView)
- 常用Android开发组件之文本类组件