天天看點

COM Object hijacking後門的實作思路——劫持CAccPropServicesClass和MMDeviceEnumerator

本文講的是<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

如下圖

COM Object hijacking後門的實作思路——劫持CAccPropServicesClass和MMDeviceEnumerator

2、修改系統資料庫

系統資料庫位置:HKCUSoftwareClassesCLSID

建立項{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}

建立子項InprocServer32

Default的鍵值為測試dll的絕對路徑:

建立鍵值: ThreadingModel REG_SZ Apartment

系統資料庫内容如下圖

COM Object hijacking後門的實作思路——劫持CAccPropServicesClass和MMDeviceEnumerator

3、測試

啟動iexplore.exe,觸發後門,多次啟動calc.exe,最終導緻系統當機

啟動過程多次調用執行個體CAccPropServicesClass(),是以導緻啟動多個calc.exe,最終系統當機

4、優化

可以對dll加一個互斥量,防止重複加載,隻啟動一次calc.exe

c++代碼為:

編譯後大小3k,如果多次加載該dll,會因為互斥量導緻隻加載一次,也就是說隻啟動一次calc.exe

換用新的dll,再次測試,隻啟動一次calc.exe,如下圖

COM Object hijacking後門的實作思路——劫持CAccPropServicesClass和MMDeviceEnumerator

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

COM Object hijacking後門的實作思路——劫持CAccPropServicesClass和MMDeviceEnumerator

(2)

系統資料庫位置:HKCUSoftwareClassesWow6432NodeCLSID

建立項{BCDE0395-E52F-467C-8E3D-C4579291692E}

Default的鍵值為32位dll路徑:

COM Object hijacking後門的實作思路——劫持CAccPropServicesClass和MMDeviceEnumerator

分别啟動32位和64位的iexplore.exe,均可觸發後門,啟動一次calc.exe

測試成功

0x04 POC編寫

POC開發需要注意的細節:

1、操作預設不一定包含檔案夾

需要先判斷檔案夾%APPDATA%MicrosoftInstaller 

如果沒有,在%APPDATA%Microsoft下建立檔案夾Installer

2、建立檔案夾{BCDE0395-E52F-467C-8E3D-C4579291692E}

由于包含特殊字元{},需要雙引号包含路徑

3、建立payload檔案

首先判斷作業系統

不同系統釋放不同檔案

4、建立系統資料庫

修改系統資料庫預設值,如下圖

COM Object hijacking後門的實作思路——劫持CAccPropServicesClass和MMDeviceEnumerator

在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>

繼續閱讀