淺談dll劫持(dll HiJack)/COM物件劫持
淺談dll劫持(dll HiJack)/COM物件劫持
Dll劫持
dll劫持原理: https://silic.wiki/%E4%B9%A0%E7%A7%91%E6%97%A7%E7%AB%99:dll%E5%8A%AB%E6%8C%81
簡單來說就是win應用在執行過程中會呼叫一些處在系統中各個位置的動態連結檔案(dll),而一般開發都不會將dll的檔案使用絕對路徑限制死,而是利用windows自帶的DLL Search Order功能來自動查詢相同名稱的dll檔案,並可以多應用共享dll,減少重複開發。
這樣也會帶來種種問題,search的過程是:
應用程式當前目錄→系統目錄→16位系統目錄→windows目錄→path環境目錄
知道它的載入過程那麼我們只要能夠獲取到應用程式都載入了哪些dll檔案,替換/新增自己的dll不久可以執行了惡意dll了嘛?這樣就完成了一次dll劫持攻擊。
Dll劫持例項:
通常可以通過process monitor來檢視軟體載入了哪些dll檔案。
在列表中看到了他查詢了
C:\Users\123\AppData\Local\Notepad++\plugins\..dll
C:\Users\123\AppData\Local\Notepad++\…dll
其中查詢結果都是NO SUCH FILE也就是說不存在該dll,但是notepad++也確實是讀取了dll
那麼問題來了,我們將自己的payload生成dll改名放到plugins中是否能夠在執行notepad++的過程中執行payload呢?測試一下。
這裡值得注意的是這個dll載入的路徑是一個使用者appdata的路徑,也就是說123使用者即可向其中可讀可寫可執行許可權,這在win中排除了windows、program files中無法寫入檔案的問題。
這裡為了展示下危害使用管理員許可權開啟notepad++
可以看到執行了dll,並且是以管理員許可權開啟的。因為只是演示,所以並沒有完整的回撥notepad++正常的dll,所以note在程序中存在。
COM物件劫持
有關com組建/物件的介紹和劫持內容可以看下傾旋表哥的文章
https://payloads.online/archivers/2018-12-22/1#0x06-%E4%BB%80%E4%B9%88%E6%98%AFcom
其中通俗易懂的介紹了com組建在滲透測試中的應用(pass uac/pass av/持久化後門)。
好吧我是不會承認我說不明白到底咋回事的。
過程就是hkcu-hkcr-hklm
三段對映,應用程式對於某些command命令執行會先尋找hkcu,不存在再去尋找hkcr,而我們的許可權可以操作hkcu,這樣的原理就和dll劫持很相似了。
過幾天有時間的話可能會寫幾個pass uac的例項,以及如何批量在windows上尋找pass uac的切入點。