劫持數字簽名是一種可用于繞過設備保護限制,以及在red team評估過程中隱藏自定義惡意軟件的技術。Matt Graeber在他的研究中發現了如何繞過數字簽名散列驗證的方法,并且在他發布的文章中詳細描述了所有的細節?;谶@些信息,Digital SignatureHijack腳本的開發是為了使這項技術完全自動化。前面的文章已經描述了有關劫持數字簽名的更多信息。
一般信息
DigitalSignatureHijack基于PowerShell編寫,可以從具有管理權限的PowerShell控制臺執行。這個想法是通過只執行四個命令來快速地對PowerShell腳本和可移植可執行文件進行數字簽名而來的。
命令
該腳本接受以下命令:
· SignExe – 數字簽名的PE可執行文件
· SignPS – 數字簽名PowerShell腳本
· ValidateSignaturePE – PE可執行文件的簽名驗證
· ValidateSignaturePS – PowerShell腳本的簽名驗證
依賴
DigitalSignature-Hijack依賴于Matt Graeber開發的自定義SIP(Subject Interface Package)dll文件。因此,需要將其存儲在目標系統的某個位置,并且需要使用該DLL文件的新位置來更新腳本,否則注冊表劫持將不起作用。
· 編譯版本的MySIP.dll
· MySIP DLL的源代碼
演示
以下是可用于對主機上存在的所有PowerShell腳本和PE可執行文件進行數字簽名的命令列表。
對二進制文件進行簽名:
Mimikatz是一個可以從內存轉儲憑據的二進制程序。它不是Windows的一部分,也不是由微軟數字簽名的可執行程序。
未簽名的Mimikatz
執行SignExe命令后,Mimikatz就帶有了微軟官方驗證可通過的證書。
對Mimikatz進行簽名
簽名驗證:
劫持合法的證書將會出現散列不匹配的錯誤,因此數字簽名將無法驗證。
對Mimikatz進行簽名- 無效簽名
執行ValidateSignaturePE命令將正確驗證存儲在系統上的所有PE可執行文件的數字簽名散列。
對Mimikatz進行簽名 – 有效簽名
簽署PowerShell腳本:
DigitalSignature-Hijack PowerShell腳本未簽名。因此,在實施設備防護UMCI(用戶模式代碼完整性)的情況下,需要對其進行簽名。
未簽名的PowerShell腳本
執行命令SignPS將為Microsoft PowerShell腳本提供一個Microsoft證書。
簽名的PowerShell腳本
簽名驗證:
與PE可執行文件一樣,Microsoft也正在對PowerShell腳本的數字簽名進行散列驗證。
PowerShell腳本 – 無效的簽名
執行命令ValidateSignaturePS將繞過散列驗證,因此數字簽名將顯示為有效。
PowerShell腳本 – 有效簽名
下載
DigitalSignatureHijack腳本可以在以下位置中找到:
· 數字簽名劫持
· https://github.com/netbiosX/Digital-Signature-Hijack
源代碼
責任編輯:韓希宇
免責聲明:
中國電子銀行網發布的專欄、投稿以及征文相關文章,其文字、圖片、視頻均來源于作者投稿或轉載自相關作品方;如涉及未經許可使用作品的問題,請您優先聯系我們(聯系郵箱:cebnet@cfca.com.cn,電話:400-880-9888),我們會第一時間核實,謝謝配合。