隱私安全,黑客利用Mimikatz提取Windows用戶憑證

一、前言一.mimikatz簡介 是法國人Gentil Kiwi編寫的一款windows平臺下的神器,它具備很多功能,其中最亮的功能是直接從 lsass.exe 進程裡獲取windows處於active狀態賬號的明文密碼。mimikatz的功能不僅如此,它還可以提升進程權限,注入進程,讀取進程內存等等,mimikatz包含了很多本地模塊,更像是一個輕量級的調試器。

二、Mimikatz提取用戶憑證

Mimikatz提取用戶憑證功能,其主要集中在sekurlsa模塊,該模塊又包含很多子模塊,如msv,wdigest,kerberos等,使用這些子模塊可以提取相應的用戶憑證,如sekurlsa::wdigest提取用戶密碼明文,sekurlsa::kerberos提取域賬戶憑證,sekurlsa::msv提取ntlm hash憑證,在kuhl_m_c_sekurlsa這個數組裡面有各個子模塊功能的註釋,如下:

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

Mimikatz使用了一個的框架,來處理對內存的操作。以wdigest子模塊為例,如果在目標機器上運行mimikatz,會跨進程讀取讀取lsass.exe進程的wdigest.dll模塊的數據,如果是用dump文件方式提取密碼則是直接打開文件。

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

2.1獲取用戶憑證信息

通過遍歷加載的DLL模塊名稱,來初始化Mimikatz關注的一些DLL的統計信息結構體。

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

重點是第二步和第三步。

第二步調用了kuhl_m_sekurlsa_utils_search繼而調用kuhl_m_sekurlsa_utils_search_generic如下,

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

搜索的是LsaSrv.dll的特徵碼,結合偏移量找到所有的登錄會話信息。

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

最後打印出來的會話信息

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

2.2獲取加密用戶密碼的密鑰

第三步調用了lsassLocalHelper->AcquireKeys(&cLsass, &lsassPackages[0]->Module.Informations);,實際對於NT6系統實際調用的是kuhl_m_sekurlsa_nt6_acquireKeys

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

用PTRN_WALL_LsaInitializeProtectedMemory_KEY作為特徵碼進行搜索

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

獲取初始化向量和密鑰本身

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

2.3解密賬戶密碼

基於2.1得到的登錄會話信息(包含加密後的用戶密碼)和2.2得到的加密密鑰和初始化向量,mimikatz的wdigest子模塊便可以提取用戶密碼明文。

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

kuhl_m_sekurlsa_genericCredsOutput實際調用kuhl_m_sekurlsa_nt6_LsaEncryptMemory進行密碼的密文解密。

隱私安全,黑客利用Mimikatz提取Windows用戶憑證

最後根據密文長度是否是8的倍數,來調用Aes解密和Des解密(BCryptDecrypt)。

三、總結

Mimikatz的提取密碼流程主要分為三步1、獲取登錄會話的信息,包含了用戶密碼的加密後密文;2、提取用於加密的密鑰值,3、調用Windows導出函數BCryptDecrypt進行解密。由於提取會話信息和密鑰都用的是特徵碼,因此這些特徵碼作為殺毒軟件和edr產品的特徵值會非常合適,而攻擊者也會採用動態加載的方式防止這種特徵的靜態掃描。由於水平有限,歡迎大家指出文中的錯誤和交流指教。



分享到:


相關文章: