Bypass McAfee Application Control--Write&Read Protection

wyzsk發表於2020-08-19
作者: 三好學生 · 2015/12/23 15:24

0x00 前言


上篇我們成功在McAfee Application Control保護的系統上實現了程式碼執行,而McAfee Application Control的其他保護功能同樣很強大,其中對檔案讀寫操作的攔截很有特色,這一次我們接著試試能不能繞過:D

這裡寫圖片描述

0x01 簡介


當McAfee Application Control開啟了檔案寫入保護和讀取保護,可以阻止任何對受保護檔案的修改,具體保護細節如圖

這裡寫圖片描述

簡單的說,如果開啟了寫入保護,那麼對檔案的任何修改操作都會被阻止並被日誌記錄。

如果開啟了讀取保護,那麼無法讀取受保護檔案的內容。

可是深入瞭解之後,有趣的事情發生了。

0x02 配置Write Protection


作業系統:win7x86

首先學習一下如何設定以及使用檔案寫入保護。

寫入保護可以指定資料夾、檔案或者是驅動檔案

測試使用指定資料夾c:\test\write

裡面包含test.txt

1.指定保護路徑

#!bash
sadmin write-protect -i c:\test\write

2.檢視保護路徑

#!bash
sadmin write-protect -l

如圖 這裡寫圖片描述

隨後我們嘗試在c:\test\write下新建檔案、刪除檔案、修改檔案,均失敗

如圖 這裡寫圖片描述

這裡寫圖片描述

3.刪除保護路徑

#!bash
sadmin write-protect -r c:\test\write

0x03 配置Read Protection


接著測試讀取保護

測試使用指定資料夾c:\test\read

下面包含test.txt,裡面儲存有加密資訊

注:
寫入保護預設開啟,而讀取保護預設關閉,所以先要開啟讀取保護功能

1.開啟讀取保護功能

#!bash
sadmin features enable deny-read

2.指定讀取保護路徑:

#!bash
sadmin read-protect –i c:\test\read

3.檢視讀取保護路徑:

#!bash
sadmin read-protect -l

如圖 這裡寫圖片描述

嘗試讀取檔案內容,失敗,如圖 這裡寫圖片描述

0x04 許可權分配漏洞


透過以上的測試可以發現:

  • 寫入保護阻止使用者對檔案進行寫入操作
  • 讀取保護阻止使用者對檔案進行讀取操作

但是:

McAfee Application Control會預設設定白名單程式用來為系統進行更新

所以這些程式都具有操作檔案的許可權

如果你仔細閱讀了上一篇文章並能加以思考

那麼其中的漏洞也顯而易見

如果能夠利用白名單程式執行檔案讀寫操作,那麼自然能夠繞過防護

0x05 漏洞利用


利用思路:

  • 查詢預設白名單程式
  • 找到可利用程式
  • 使用程式注入
  • 操作檔案

1.檢視白名單程式列表

執行

#!bash
sadmin updaters list

如圖 這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

2.找到可被利用程式

以下是我找到的比較通用並能被利用的程式:

  • GoogleUpdate.exe
  • scsrvc.exe
  • spoolsv.exe

3.程式注入

選取GoogleUpdate.exe

使用《Powershell tricks::Code Execution & Process Injection》提到的Process Injection-Meterpreter.ps1

可以在powershell的環境下貼上程式碼執行

向GoogleUpdate.exe程式注入meterpreter

如圖 這裡寫圖片描述

注:
注入系統許可權的程式需要管理員許可權

如圖 這裡寫圖片描述

彈回meterpreter

發現沒有直接注入到GoogleUpdate.exe

接著程式注入,如圖 這裡寫圖片描述

成功注入到GoogleUpdate.exe,理論上已經有了許可權可以操作受保護的檔案

我們接著測試,如圖 這裡寫圖片描述

成功修改檔案和刪除檔案

接著測試讀取檔案,如圖 這裡寫圖片描述

成功讀取被保護的內容

注: 透過程式注入獲得的許可權可以用來執行指令碼

0x06 補充


1.設定密碼

McAfee Application Control可對操作設定密碼,增強其安全

設定密碼:

#!bash
sadmin passwd 

去掉密碼:

#!bash
sadmin passwd -d

密碼檔案儲存在C:\Program Files\McAfee\Solidcore\passwd

2.獲取密碼檔案

正常情況下C:\Program Files\McAfee\Solidcore\passwd無法被讀取、無法被複制,即使程式注入到白名單程式內也無法實現,如圖

這裡寫圖片描述

但是我們依然有辦法:D

這裡可以借鑑匯出域控ntds.dit檔案的方法,使用NinjaCopy.ps1

下載連結:
https://github.com/3gstudent/NinjaCopy

指定路徑為:

#!bash
Invoke-NinjaCopy -Path "C:\Program Files\McAfee\Solidcore\passwd" -LocalDestination "C:\test\trust\passwd"

管理員許可權執行NinjaCopy.ps1,成功複製passwd檔案

如圖 這裡寫圖片描述

3.解析密碼檔案

這裡寫圖片描述 上圖為passwd的內容

檢視資料得知此處使用的是sha-512加密(mcafee-application-control-product-guide/Page68)

如圖 這裡寫圖片描述

推斷cryptographic salt88daf0b4-790e-4eae-a926-b08788fbd1cb

http://www.convertstring.com/Hash/SHA512驗證推斷

輸入cryptographic salt和明文對比測試

如圖 這裡寫圖片描述

passwd中的內容和我們自己加密的密文相同,判斷正確

4.信任路徑

McAfee Application Control為方便使用,可以指定信任路徑,在裡面的所有操作均不會被攔截

如果McAfee Application Control未設定密碼或者密碼被獲得,可以建立一個信任路徑,裡面的操作均不會被攔截

建立:

#!bash
sadmin trusted -i c:\test\trusted

檢視:

#!bash
sadmin trusted -l

如圖程式成功執行 這裡寫圖片描述

5.日誌

日誌預設被儲存在C:\ProgramData\McAfee\Solidcore\Logs

透過程式注入獲得的許可權可以修改此檔案

6.防護建議

  • 為McAfee Application Control設定強密碼
  • 禁用powershell
  • 禁用hta、js
  • 禁用信任路徑
  • 白名單+黑名單結合使用

0x07 小結


“未知攻 焉知防”,即使做到以上幾點,我相信依然有繞過的方法:)

本文由三好學生原創並首發於烏雲drops,轉載請註明

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章