標籤:

Catalog簽名偽造——Long UNC文件名欺騙

0x00 前言

在之前的兩篇文章《Authenticode簽名偽造——PE文件的簽名偽造與簽名驗證劫持》和《Authenticode簽名偽造——針對文件類型的簽名偽造》介紹了Authenticode簽名偽造的利用方法,這次將要介紹一個Catalog簽名偽造的方法,利用Long UNC文件名欺騙系統,獲得系統內置的Catalog簽名

註:

本文介紹的技巧參考自Matt Graeber@mattifestation公開的資料,本文將結合自己的經驗,整理相關內容,添加個人理解。

參考資料:

exploit-monday.com/2013

0x01 簡介

本文將要介紹以下內容:

· Long UNC基礎知識

· Long UNC文件名欺騙的方法

· Long UNC文件名欺騙優缺點分析

0x02 Long UNC介紹

UNC(Universal Naming Convention)

通用命名規則,可用來表示Windows系統中文件的位置

詳細介紹可參考如下鏈接:

en.wikipedia.org/wiki/P

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 原創稿件,授權嘶吼獨家發布,未經許可禁止轉載,如若轉載,請聯繫嘶吼編輯: 4hou.com/web/8034.html 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

為這次的比特幣勒索事件鼓個掌
Linux曝高危漏洞 長按Enter鍵70秒即可獲取root許可權
解決方案:勒索蠕蟲病毒文件恢復工具

TAG:信息安全 |