本文講的是<b>COM Object hijacking後門的實作思路——劫持CAccPropServicesClass和MMDeviceEnumerator</b>,在之前的文章《Use CLR to maintain persistence》介紹了通過CLR劫持所有.Net程式的方法,無需管理者權限,可用作後門。美中不足的是通過WMI添加環境變量需要重新開機系統。
本文将繼續介紹另一種後門的利用方法,原理類似,但優點是不需要重新開機系統,同樣也不需要管理者權限。
注:
本文介紹的方法曾被木馬COMpfun使用
0x01 簡介
本文将要介紹以下内容:
· 後門思路
· POC編寫
· 防禦檢測
0x02 COM元件
· COM是Component Object Model (元件對象模型)的縮寫
· COM元件由DLL和EXE形式釋出的可執行代碼所組成
· COM與語言,平台無關
· COM元件對應系統資料庫中CLSID下的系統資料庫鍵值
0x03 後門思路
同使用CLR劫持.Net程式的方法類似,也是通過修改CLSID下的系統資料庫鍵值,實作對CAccPropServicesClass和MMDeviceEnumerator劫持,而系統很多正常程式啟動時需要調用這兩個執行個體,是以,這就可以用作後門來使用,并且,該方法也能夠繞過Autoruns對啟動項的檢測。
32位系統利用方法:
1、建立檔案
在%APPDATA%MicrosoftInstaller{BCDE0395-E52F-467C-8E3D-C4579291692E}下放入測試dll,重命名為api-ms-win-downlevel-[4char-random]-l1-1-0._dl
重命名為api-ms-win-downlevel-1×86-l1-1-0._dl
如下圖
2、修改系統資料庫
系統資料庫位置:HKCUSoftwareClassesCLSID
建立項{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}
建立子項InprocServer32
Default的鍵值為測試dll的絕對路徑:
建立鍵值: ThreadingModel REG_SZ Apartment
系統資料庫内容如下圖
3、測試
啟動iexplore.exe,觸發後門,多次啟動calc.exe,最終導緻系統當機
啟動過程多次調用執行個體CAccPropServicesClass(),是以導緻啟動多個calc.exe,最終系統當機
4、優化
可以對dll加一個互斥量,防止重複加載,隻啟動一次calc.exe
c++代碼為:
編譯後大小3k,如果多次加載該dll,會因為互斥量導緻隻加載一次,也就是說隻啟動一次calc.exe
換用新的dll,再次測試,隻啟動一次calc.exe,如下圖
64位系統利用方法:
在%APPDATA%MicrosoftInstaller{BCDE0395-E52F-467C-8E3D-C4579291692E}下分别放入32位和64位的測試dll
(1)
Default的鍵值為64位dll的絕對路徑:
C:UsersaAppDataRoamingMicrosoftInstaller{BCDE0395-E52F-467C-8E3D-C4579291692E}api-ms-win-downlevel-1×86-l1-1-0._dl
(2)
系統資料庫位置:HKCUSoftwareClassesWow6432NodeCLSID
建立項{BCDE0395-E52F-467C-8E3D-C4579291692E}
Default的鍵值為32位dll路徑:
分别啟動32位和64位的iexplore.exe,均可觸發後門,啟動一次calc.exe
測試成功
0x04 POC編寫
POC開發需要注意的細節:
1、操作預設不一定包含檔案夾
需要先判斷檔案夾%APPDATA%MicrosoftInstaller
如果沒有,在%APPDATA%Microsoft下建立檔案夾Installer
2、建立檔案夾{BCDE0395-E52F-467C-8E3D-C4579291692E}
由于包含特殊字元{},需要雙引号包含路徑
3、建立payload檔案
首先判斷作業系統
不同系統釋放不同檔案
4、建立系統資料庫
修改系統資料庫預設值,如下圖
在powershell下,需要使用特殊變量"(default)"
eg:
0x05 防禦檢測
結合利用方法,注意監控以下位置:
1、系統資料庫鍵值
2、檔案路徑
%APPDATA%RoamingMicrosoftInstaller{BCDE0395-E52F-467C-8E3D-C4579291692E}
命名方式:api-ms-win-downlevel-[4char-random]-l1-1-0._dl
0x06 小結
本文介紹了通過COM Object hijacking實作的後門利用方法,使用powershell腳本編寫POC,分享POC開發中需要注意的細節,結合實際利用過程分析該後門的防禦方法。
原文釋出時間為:2017年8月28日
本文作者:3gstudent
本文來自雲栖社群合作夥伴嘶吼,了解相關資訊可以關注嘶吼網站。
<a href="http://www.4hou.com/technology/7010.html" target="_blank">原文連結</a>