當前位置:
首頁 > 新聞 > CAT文件數字簽名使用技巧

CAT文件數字簽名使用技巧

0x00 前言

Windows系統中的重要文件常常會被添加數字簽名,用來防止被篡改,部分白名單規則的判定也會基於數字簽名。

本文作為數字簽名研究系列文章的基礎內容,介紹兩種數字簽名的添加方法,分析CAT文件數字簽名的特點,並且糾正一名讀者對我文章的回復,地址如下:

《利用xwizard.exe載入dll》

基於我的測試,個人認為:移動位置後,CAT文件數字簽名不會失效

0x01 簡介

本文將要介紹以下內容:

· 生成證書的方法

· 將數字簽名添加在文件末尾的方法

· 將數字簽名保存在CAT文件中的方法

· 使用CAT數字簽名的文件特點

0x02 將數字簽名添加在文件末尾的方法(Authenticode)

曾在隱寫技巧的系列文章中研究過在數字簽名中隱藏payload的方法,地址如下:

《隱寫技巧——在PE文件的數字證書中隱藏Payload》

文中介紹過證書格式,在此不再贅述

向文件尾部添加數字簽名後,可通過文件屬性查看

實例:

C:WindowsSystem32consent.exe

自帶微軟數字簽名,如下圖

可通過powershell驗證數字簽名:

Get-AuthenticodeSignature .mimikatz.exe

也可以使用工具通過命令行查看數字簽名

使用signtool.exe查看:

signtool.exe verify /v C:WindowsSystem32consent.exe

如下圖

使用sigcheck.exe查看:

sigcheck.exe -q C:WindowsSystem32consent.exe /accepteula

如下圖

註:

signtool.exe:

可用於查看文件的數字簽名

安裝Visual Studio後包含SDK,其中可找到signtool.exe,位於C:Program FilesMicrosoft SDKsWindows

進入開發人員工具的cmd可直接調用signtool.exe

Windows 7 SDK下載地址:

https://www.microsoft.com/en-us/download/details.aspx?id=8279

sigcheck.exe:

可用於查看文件的數字簽名

下載地址:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/sigcheck

本文相關文件已上傳至github,地址如下:

https://github.com/3gstudent/signtools

生成測試證書的命令如下:

makecert -n "CN=Microsoft Windows Test" -r -sv Root.pvk Root.cercert2spc Root.cer Root.spcpvk2pfx -pvk Root.pvk -pi 123456 -spc Root.spc -pfx Root.pfx -f

證書註冊:

(管理員許可權)

certmgr.exe -add -c Root.cer -s -r localmachine root

註:

細節可參考之前的文章《A dirty way of tricking users to bypass UAC》

簽名mimikatz.exe:

signtool sign /f Root.pfx /p 123456 mimikatz.exe

顯示數字簽名正常,如下圖

0x03 將數字簽名保存在CAT文件中的方法(catalog)

Windows系統中,有些文件通過文件屬性無法獲得其數字簽名信息,但是這些文件也包含數字簽名,這裡的數字簽名指的就是CAT(安全編錄)文件數字簽名(catalog signing)

簽名流程的直觀理解:

· 將文件作sha1加密後得到的hash值保存在CAT文件中(一個CAT文件可保存多個文件hash)

· 對該CAT文件添加數字簽名

· 將CAT文件添加到系統的安全編錄資料庫

· 這些文件也就有了數字簽名

實例:

C:WindowsSystem32catrootntph.cat

屬性-安全目錄-項目詳細信息-File,可以找到Hash值對應的文件

如下圖

通過文件屬性無法查看CAT數字簽名

實例:

C:WindowsSystem32xwizard.exe

自帶CAT格式的數字簽名,通過文件屬性無法查看CAT數字簽名

使用powershell無法獲得CAT文件數字簽名:

Get-AuthenticodeSignature C:WindowsSystem32xwizard.exe

如下圖

但可以使用signtool.exe和sigcheck.exe查看數字簽名

使用signtool.exe查看:

signtool.exe verify /pa /a /v C:WindowsSystem32xwizard.exe

如下圖

使用sigcheck.exe查看:

sigcheck.exe -q C:WindowsSystem32xwizard.exe /accepteula

如下圖

下面介紹如何使用CAT文件數字簽名

1、生成CAT文件

新建文本文檔cat.txt,內容如下:

[CatalogHeader]Name=makecat1.cat[CatalogFiles]ExeFile1=mimikatz.exe

註:

txt文件尾部需要一個空行,否則,在接下來的操作會報錯,提示文件無法找到

如下圖

使用makecat.exe生成cat文件:

makecat -v cat.txt

2、使用證書為CAT文件添加簽名

signtool sign /f Root.pfx /p 123456 makecat1.cat

註:

3、將cat文件添加到系統的安全編錄資料庫

(管理員許可權)

signtool catdb -v makecat1.cat

註:

刪除使用 -r參數:signtool catdb -r makecat1.cat

如果未添加到系統的安全編錄資料庫,簽名狀態為unsigned,如下圖

添加到系統的安全編錄資料庫相當於在目錄C:WindowsSystem32catroot添加文件makecat1.cat

刪除等價於刪除目錄C:WindowsSystem32catroot下對應的CAT文件makecat1.cat

使用signtool.exe獲取數字簽名:

signtool.exe verify /pa /a mimikatz.exe

使用sigcheck.exe獲取數字簽名:

sigcheck.exe -q mimikatz.exe /accepteula

移動位置後,簽名仍然有效

如下圖

驗證結論:移動位置後,CAT文件數字簽名不會失效

當然,利用帶有CAT文件數字簽名的xwizard.exe載入dll,在某種程度上說,能夠繞過應用程序白名單的攔截。

0x04 小結

本文介紹了兩種數字簽名的添加方法,分析CAT文件數字簽名的特點,對於可執行文件,通過Process Explorer可驗證兩種不同的數字簽名

如下圖


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

Linux應急響應姿勢淺談
美國FLIR熱感攝像頭預裝後門,且無法刪除
使用FTP的系統控制後門作為C
知名評論系統Disqus 2012年被黑,官方現在才發現用戶數據泄漏了
Google:微軟優先給Windows 10修漏洞,讓舊版本系統用戶陷入危險之中

TAG:嘶吼RoarTalk |