天天看點

msdtc後門的實作思路

本文講的是<b>msdtc後門的實作思路</b>,Shadow Force曾經在域環境中使用過的一個後門,利用MSDTC服務加載dll,實作自啟動,并繞過Autoruns對啟動項的檢測。本文将要對其進行測試,介紹更多利用技巧,分析防禦方法。

0x01 簡介

本文将要介紹以下内容:

· MSDTC簡介

· 後門思路

· 後門驗證

· 更多測試和利用方法

· 檢測防禦

0x02 MSDTC簡介

MSDTC:

· 對應服務MSDTC,全稱Distributed Transaction Coordinator,Windows系統預設啟動該服務

· 對應程序msdtc.exe,位于%windir%system32

· msdtc.exe是微軟分布式傳輸協調程式,該程序調用系統Microsoft Personal Web Server和Microsoft SQL Server

0x03 後門思路

文中介紹的思路如下:

當計算機加入域中,MSDTC服務啟動時,會搜尋系統資料庫HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTCMTxOCI

如下圖

msdtc後門的實作思路

分别加載3個dll:oci.dll,SQLLib80.dll,xa80.dll

然而特别的是,Windows系統預設不包含oci.dll

也就是說,将payload.dll重名為oci.dll并儲存在%windir%system32下

域中的計算機啟動服務MSDTC時就會加載該dll,實作代碼執行

0x04 後門驗證

測試系統: Win7 x64

搭建域環境,如下圖

msdtc後門的實作思路

使用Procmon監控msdtc的啟動過程,篩選程序msdtc.exe,檢視檔案操作,如下圖

msdtc後門的實作思路

msdtc.exe确實會嘗試加載oci.dll,并且由于系統預設不存在oci.dll,導緻加載失敗

使用64位的測試dll,下載下傳位址如下:

https://github.com/3gstudent/test/blob/master/calc_x64.dll

将其儲存在%windir%system32下

結束程序msdtc.exe,指令行參數如下:

等待msdtc.exe重新啟動

等待一段時間,mstdc.exe重新啟動,成功加載oci.dll,如下圖

msdtc後門的實作思路

calc.exe以system權限啟動

msdtc後門的實作思路

經實際測試,該方法偶爾會出現bug,通過taskkill結束程序後,msdtc.exe并不會重新啟動

解決方法:

重新啟動服務MSDTC就好,指令行參數如下:

0x05 更多測試

1、測試32位系統

32位系統換用32位dll就好,下載下傳位址如下:

https://github.com/3gstudent/test/blob/master/calc.dll

2、測試64位系統

64位系統,雖然SysWOW64檔案夾下也包含32位的msdtc.exe,但是MSDTC服務隻啟動64位的msdtc.exe

是以,不支援32位oci.dll的加載

3、通用測試

經實際測試,MSDTC服務不是域環境特有,工作組環境下預設也會啟動MSDTC服務

也就是說,該利用方法不僅适用于域環境,工作組環境也同樣适用

4、以管理者權限加載oci.dll(降級啟動)

上述方法會以system權限加載oci.dll,提供一個以管理者權限加載oci.dll(降級啟動)的方法:

管理者權限cmd執行:

啟動的calc.exe為high權限,如下圖

msdtc後門的實作思路

注:

關于為什麼要降級及降級的更多實作方式可參照文章

《滲透技巧——程式的降級啟動》

0x06 檢測防禦

檢測:

檢測%windir%system32是否包含可疑oci.dll

防禦:

對于普通使用者主機,建議禁用服務MSDTC

0x07 小結

本文介紹了MSDTC的相關利用技巧,不僅能用作後門,同樣可用于程式的降級啟動。

原文釋出時間為:2017年8月18日

本文作者:3gstudent

本文來自雲栖社群合作夥伴嘶吼,了解相關資訊可以關注嘶吼網站。

<a href="http://www.4hou.com/system/6890.html" target="_blank">原文連結</a>