作者:
三好學生
·
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 salt
為88daf0b4-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,轉載請註明
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!