滲透技巧——Junction Folders和Library Files的後門利用
0x00 前言
維基解密公布的CIA Vault 7中涉及到了Windows系統中Junction Folders和Library Files的利用。
地址如下:
https://wikileaks.org/ciav7p1/cms/page_13763381.html https://wikileaks.org/ciav7p1/cms/page_13763373.html
Jayden Zheng對此做了分析,分享了一個Library Files的後門利用方法,並且詳細介紹了如何檢測Junction Folders和Library Files的惡意利用。
地址如下:
https://www.countercept.com/blog/hunting-for-junction-folder-persistence/
https://www.countercept.com/blog/abusing-windows-library-files-for-persistence/
本文將基於以上參考資料,比較Junction Folders和Library Files,對Library Files的後門利用方法做進一步利用(更加隱蔽),開源一個POC,並且在檢測上面分享自己的理解。
0x01 簡介
本文將要介紹以下內容:
·Junction Folders的利用方法
·Library Files的利用方法
·Library Files後門的進一步利用
·檢測和識別
0x02 Junction Folders的利用方法
Junction Folders可以簡單理解為一個能夠跳轉到另一位置的文件夾。
創建的三種常用方法:
·修改註冊表項
·修改文件夾內的desktop.ini
·使用特殊的文件名,例如test.
對於第三種方法,特定的CLSID對應特定的文件路徑。
如果我們通過註冊表創建一個CLSID,並指定dll路徑,那麼在打開該文件夾時,會載入該dll。
1、實際測試
測試dll為執行計算器,可供參考的下載地址:
https://github.com/3gstudent/test/raw/master/calc.dll
(1)修改註冊表,添加註冊表項
bat命令如下:
SET KEY=HKEY_CURRENT_USERSoftwareClassesCLSID\InProcServer32
REG.EXE ADD %KEY% /VE /T REG_SZ /D "c: estcalc.dll" /F
REG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F
(2)新建文件夾test.
(3)選中該文件夾即可載入calc.dll
註:只會載入一次,重啟進程explorer.exe可以再次觸發。
2、系統開機自動載入的實現方法(用戶許可權)
(1)重命名系統文件夾
將%appdata%MicrosoftWindowsStart MenuProgramsAccessories重命名為Accessories.
(2)新建文件夾
將文件夾test.保存在以下任一位置:
·%appdata%MicrosoftWindowsStart MenuPrograms
·%appdata%MicrosoftWindowsStart MenuPrograms的子目錄
0x03 Library Files的利用方法
文件後綴名為library-ms,位於%appdata%MicrosoftWindowsLibraries
官方文檔:
https://docs.microsoft.com/en-us/windows/client-management/windows-libraries
Library Files的簡單理解:能夠同時顯示多個文件夾中的內容
1、實際測試:
(1)修改註冊表,添加註冊表項
bat命令如下:
SET KEY=HKEY_CURRENT_USERSoftwareClassesCLSID\
REG.EXE ADD %KEY%InProcServer32 /VE /T REG_SZ /D "c: estcalc.dll" /F
REG.EXE ADD %KEY%InProcServer32 /V ThreadingModel /T REG_SZ /D Apartment /F
REG.EXE ADD %KEY%ShellFolder /V Attributes /T REG_DWORD /D 4035969341 /F
註:相比Junction Folders,Library Files需要多添加一個註冊表項
(2)修改%appdata%MicrosoftWindowsLibrariesDocuments.library-ms
按照xml格式添加如下內容:
@shell32.dll,-34577
true
shell:::
(3)訪問%appdata%MicrosoftWindowsLibrariesDocuments.library-ms
打開文件時將多次載入dll,這裡可以加一個互斥量避免多次啟動,下載地址(僅作演示用):
https://github.com/3gstudent/test/raw/master/calcmutex.dll
值得注意的地方:Includes由2 locations變成3 locations
如下圖:
查看該位置,能夠發現載入的CLSID,如下圖:
2、系統開機自動載入的實現方法(用戶許可權)
將修改後的Documents.library-ms放在以下任一位置:
·%appdata%MicrosoftWindowsStart MenuPrograms
·%appdata%MicrosoftWindowsStart MenuPrograms的子目錄
註:還可以修改Music.library-ms和Pictures.library-ms,甚至是自己創建(可以指定顯示的圖標)
0x04 Library Files後門的進一步利用
對於Library Files的後門利用方法,最明顯的特徵是從Includes即可發現載入的CLSID
這裡給出一個解決方法:
將路徑清空,並且指定為不顯示
成功隱藏載入的CLSID,最終的效果如下圖
1、實現方法
按照xml格式,清空原,添加如下代碼:
@shell32.dll,-34577
false
true
shell:::
2、通過powershell實現的POC
經測試,不需要指定,可以使用固定模板。
流程如下:
·修改註冊表
·在指定目錄釋放Documents.library-ms
腳本編寫需要注意的地方:
1.需要指定輸出的編碼格式為UTF-8,默認為UTF-16(unicode),會導致library-ms文件格式錯誤
2.為了向字元串中傳入變數$clsid,字元串的定義要使用雙引號",而不是單引號"
完整代碼可參考:
https://github.com/3gstudent/Homework-of-Powershell/blob/master/Invoke-LibraryFilesPersistence.ps1
代碼實現了添加註冊表項並創建文件%appdata%MicrosoftWindowsLibrariesDocuments.library-ms,在用戶登錄時會載入c: estcalc.dll
0x05 檢測和識別
對於Junction Folders和Library Files的利用方法,特別的地方:
·普通用戶許可權即可
·文件格式不常見,欺騙性高
結合利用方法,可對每個環節進行檢查:
1.是否存在可疑dll payload必須為dll格式
2.註冊表CLISD下是否有可疑dll 可監控註冊表的敏感位置HKEY_LOCAL_MACHINESOFTWAREClassesCLSID和HKEY_CURRENT_USERSoftwareClassesCLSID
3.對於Junction Folders,遍歷文件夾,檢查後綴名是否關聯可疑CLSID 對於Library Files,遍歷library-ms文件,檢查是否關聯可疑CLSID 這個可直接參考Jayden Zheng的腳本: https://gist.github.com/countercept/6890be67e09ba3daed38fa7aa6298fdf
0x06 小結
本文測試了Junction Folders和Library Files的利用方法,對Library Files的後門利用方法做進一步利用,用來增加隱蔽性,開源了POC並且介紹了腳本編寫需要注意的地方,最後在檢測上面分享自己的理解。
※繞過IOS 12鎖屏訪問通訊錄和相冊
※案例重現,看看黑客如何實施信用卡詐騙攻擊
TAG:嘶吼RoarTalk |