溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

發(fā)布時間:2021-12-27 15:52:34 來源:億速云 閱讀:233 作者:柒染 欄目:編程語言

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、前言

下面具體說一下Kerberos曾經(jīng)爆出的一個經(jīng)典的漏洞MS14068和金銀票據(jù)的原理和利用方式。MS14068是一個比較經(jīng)典的漏洞,小編對金銀票據(jù)以及增強型的金票據(jù)做一個說明。

二、MS14068

MS14068是一個能夠使普通用戶提權(quán)到域控權(quán)限的權(quán)限提升漏洞。攻擊者可以通過構(gòu)造特定的請求包來達到提升權(quán)限的目的。首先我們來說一下利用方式。

1、利用方式

實驗環(huán)境:

域:YUNYING.LAB

域控:WindowsServer 2008 R2 x64(DC)

域內(nèi)主機:Windows7 x64(s1):域帳戶ts1

所需工具:

Pykek

mimikatz

攻擊流程:

實驗之前需要在域控主機查看是否安裝了KB3011780補丁,可通過systeminfo來查看。

一、首先在域內(nèi)主機s1上通過dir來訪問域控的共享文件夾,示拒絕訪問。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么二、通過Pykek工具利用漏洞,我這里使用的是將python腳本編譯之后的exe文件。

參數(shù)說明:

-u 域賬號+@+域名稱,這里是ts1+@+yunying.lab

-p 為當(dāng)前用戶的密碼,即ts1的密碼

-s為ts1的SID值,可以通過whoami/all來獲取用戶的SID值

-d為當(dāng)前域的域控

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

腳本執(zhí)行成功會在當(dāng)前目錄下生成一個ccache文件。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

三、使用mimikatz導(dǎo)入生成的ccache文件,導(dǎo)入之前cmd下使用命令klist purge或者在mimikatz中使用kerberos::purge刪除當(dāng)前緩存的kerberos票據(jù)。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

再次dir訪問域控共享已經(jīng)可以成功訪問。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

2、漏洞原理

MS14068工具在使用過程中抓包可以看到s1和域控192.168.254.130(實質(zhì)上是與安裝在域控上的KDC)有KRB_AS_REQ、KRB_AS_REP、KRB_TGS_REQ、KRB_TGS_REP四次交互。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

下面根據(jù)流程和工具源碼來看漏洞是如何利用的:

KRB_AS_REQ

首先程序通過build_as_req函數(shù)構(gòu)建AS_REQ,在這里可以看到,參數(shù)pac_request設(shè)置為false。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

也就是說設(shè)置了這個參數(shù)之后會向KDC申請一張不包含PAC的TGT票據(jù),這是微軟默認(rèn)的設(shè)計,在下列鏈接中有詳細(xì)說明。

https://docs.microsoft.com/en-us/previous-versions/aa302203(v=msdn.10)#security-considerations

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

通過PCAP包可以更直觀的看到在AS-REQ請求中的include-pac:False字段。這是造成這個漏洞的第一個因素。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

KRB_AS_REP

在AS發(fā)起請求之后,KDC(AS)將返回一張不包含有PAC的TGT票據(jù)給Client。在這里是tgt_a。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

抓包可以看到這個以268fdb開頭的TGT票據(jù)。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

KRB_TGS_REQ

攻擊腳本使用了兩個關(guān)鍵函數(shù)來實現(xiàn)這個過程,首先通過build構(gòu)造PAC,然后通過build_tgs_req函數(shù)構(gòu)造TGS-REQ的內(nèi)容。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

build_pac

當(dāng)Client接收到AS返回的不帶有PAC的TGT之后通過腳本中的build_pac函數(shù)開始構(gòu)造PAC。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

這里我們重點關(guān)注一下PAC中的chksum1和chksum2,也就是“PAC的引入”中提到的PAC的兩個數(shù)字簽名PAC_SERVER_CHECKSUM和PAC_PRIVSVR_CHECKSUM。

注意一下其中第一個參數(shù)server_key[0]和kdc_key[0]的值其實是程序指定的RSA_MD5,而Key的值為None,但原則上來說這個加密方式是應(yīng)該由KDC來確定的。也就是說加密PAC_SERVER_CHECKSUM和PAC_PRIVSVR_CHECKSUM這兩個數(shù)字簽名的Key應(yīng)該分別是Server密碼HASH和KDC密碼HASH,在這里卻直接使Key為None,然后直接使用RSA_MD5方式加密。

這是漏洞形成的第二個因素,查看checksum函數(shù)即可驗證這一點。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

同時在這個過程中我們也需要關(guān)注一下user_sid這個參數(shù),build_pac函數(shù)會將其分割,然后重新構(gòu)造高權(quán)限的sid的值。在這里user_sid的值為S-1-5-21-4249968736-1423802980-663233003-1104,分割之后domain_sid為S-1-5-21-4249968736-1423802980-663233003,user_id為1104。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

其中512、520、518、519分別為不同的組的sid號。513為DOMAIN USERS組。通過這種方式構(gòu)造了包含高權(quán)限組SID的PAC。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

build_tgs_req

在build_tgs_req函數(shù)的參數(shù)中,authorization_data對應(yīng)的為build_pac生成的pac。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

這里將PAC傳入build_tgs_req之后使用subkey將其加密。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

而通過下圖可以看到subkey其實是函數(shù)generate_subkey生成的一串16位的隨機數(shù)。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

那現(xiàn)在為止出現(xiàn)的問題有:

A、在域中默認(rèn)允許設(shè)置Include-pac的值為False(不能算漏洞,應(yīng)該是微軟對于某些特定場景的特殊考慮設(shè)計出的機制);

B、PAC中的數(shù)字簽名可以由Client端指定,并且Key的值可以為空;

C、PAC的加密方式也可以由Client指定,并且Key的值為generate_subkey函數(shù)生成的16位隨機數(shù);

D、構(gòu)造的PAC中包含高權(quán)限組的SID內(nèi)容。

也就是說通過這幾點Client完全偽造了一個PAC發(fā)送給KDC,并且KDC通過Client端在請求中指定的加密算法來解密偽造的PAC以及校驗數(shù)字簽名,并驗證通過。

通過抓包可以看到在這個過程中將接收的TGT(268fdb開頭)和加密方式為ARCFOUR-HMAC-MD5的PAC內(nèi)容。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

KRB_TGS_REP

KDC在根據(jù)對偽造的PAC驗證成功之后,返回給Client端一有新的TGT,并且這個TGT會將Pykek生成的PAC包含在其中,這里正常情況下返回的其實是一張用于發(fā)送給Server端做認(rèn)證的ST票據(jù)。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

當(dāng)Pykek工具接收到新的TGT之后就將其保存生成ccache文件。也就是說這時Client已經(jīng)獲得了一張包含有高權(quán)限PAC內(nèi)容的正常的TGT票據(jù)(564eab開頭)。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

使用Mimikatz利用TGT訪問DC共享文件夾

這時我們通過mimikatz來導(dǎo)入票證,并且用dir \\dc.yunying.lab\c$來訪問域控的共享文件夾。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

抓包可以看到這時Client端發(fā)起了兩次TGS-REQ請求,重點關(guān)注一下第一次,此時用的票據(jù)就是使用mimikatz導(dǎo)入的TGT,也就是上面KRB_TGS_REP過程中返回的那個tgt_b(564eab開頭)。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

請求之后返回了一張針對dc.yunying.lab(域控)的CIFS票據(jù)也就是正常流程中的ST(Service Ticket)票據(jù)(234062開頭):

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

這時在抓的包中發(fā)現(xiàn)并沒有AP_REQ這個流程,是因為在Kerberos中AP_REQ這個過程放在了服務(wù)的第一次請求中,這里是放在SMB的Session Setup Request中(其他協(xié)議同理,比如HTTP協(xié)議是放在GET請求中)。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

然后在SMB的Session Setup Response中做出響應(yīng),也就是AP-REP這個流程。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

到此為止Client能夠越權(quán)訪問域控的共享文件夾。

3、防御與檢測

此漏洞是一個14年的漏洞,多數(shù)產(chǎn)生在windowsserver 2008和windows server 2003的域環(huán)境中,所以安全補丁早已可以下載安裝,用戶可以通過在域控上安裝KB3011780補丁來規(guī)避風(fēng)險。

同時可以根據(jù)上文中提到的標(biāo)記include-pac為False的特征來初步的篩選。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

也可以通過windows日志來發(fā)現(xiàn),如ID為4624登錄到目標(biāo)服務(wù)器、ID為5140表示網(wǎng)絡(luò)共享對象被訪問等等。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

在這個漏洞中主要的問題是存在于KDC會根據(jù)客戶端指定PAC中數(shù)字簽名的加密算法,以及PAC的加密算法,來校驗PAC的合法性。這使得攻擊者可通過偽造PAC,修改PAC中的SID,導(dǎo)致KDC判斷攻擊者為高權(quán)限用戶,從而導(dǎo)致權(quán)限提升漏洞的產(chǎn)生。

三、GoldenTicket

簡介

Golden Ticket(下面稱為金票)是通過偽造的TGT(TicketGranting Ticket),因為只要有了高權(quán)限的TGT,那么就可以發(fā)送給TGS換取任意服務(wù)的ST。可以說有了金票就有了域內(nèi)的最高權(quán)限。

制作金票的條件:

1、域名稱

2、域的SID值

3、域的KRBTGT賬戶密碼HASH

4、偽造用戶名,可以是任意的

實驗環(huán)境

域:YUNYING.LAB

域控:WindowsServer 2008 R2 x64(DC)

域內(nèi)主機:Windows7 x64(s1):用戶ts1

所需工具

Mimikatz

實驗流程

金票的生成需要用到krbtgt的密碼HASH值,可以通過mimikatz中的

lsadump::dcsync /domain:yunying.lab /user:krbtgt

命令獲取krbtgt的值。如果已經(jīng)通過其他方式獲取到了KRBTGT HASH也可以直接進行下一步。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

得到KRBTGT HASH之后使用mimikatz中的kerberos::golden功能生成金票golden.kiribi,即為偽造成功的TGT。

參數(shù)說明:

/admin:偽造的用戶名

/domain:域名稱

/sid:SID值,注意是去掉最后一個-后面的值

/krbtgt:krbtgt的HASH值

/ticket:生成的票據(jù)名稱

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

金票的使用

通過mimikatz中的kerberos::ptt功能(Pass The Ticket)將golden.kiribi導(dǎo)入內(nèi)存中。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

已經(jīng)可以通過dir成功訪問域控的共享文件夾。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

這樣的方式導(dǎo)入的票據(jù)20分鐘之內(nèi)生效,如果過期再次導(dǎo)入就可以,并且可以偽造任意用戶。

四、SilverTickets

簡介

Silver Tickets(下面稱銀票)就是偽造的ST(Service Ticket),因為在TGT已經(jīng)在PAC里限定了給Client授權(quán)的服務(wù)(通過SID的值),所以銀票只能訪問指定服務(wù)。

制作銀票的條件:

1.域名稱

2.域的SID值

3.域的服務(wù)賬戶的密碼HASH(不是krbtgt,是域控)

4.偽造的用戶名,可以是任意用戶名,這里是silver

實驗環(huán)境

域:YUNYING.LAB

域控:WindowsServer 2008 R2 x64(DC)

域內(nèi)主機:Windows7 x64(s1):用戶ts1

所需工具

Mimikatz

實驗流程

首先我們需要知道服務(wù)賬戶的密碼HASH,這里同樣拿域控來舉例,通過mimikatz查看當(dāng)前域賬號administrator的HASH值。注意,這里使用的不是Administrator賬號的HASH,而是DC$的HASH。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

這時得到了DC的HASH值,通過mimikatz生成銀票。

參數(shù)說明:

/domain:當(dāng)前域名稱

/sid:SID值,和金票一樣取前面一部分

/target:目標(biāo)主機,這里是dc.yunying.lab

/service:服務(wù)名稱,這里需要訪問共享文件,所以是cifs

/rc4:目標(biāo)主機的HASH值

/user:偽造的用戶名

/ptt:表示的是Pass TheTicket攻擊,是把生成的票據(jù)導(dǎo)入內(nèi)存,也可以使用/ticket導(dǎo)出之后再使用kerberos::ptt來導(dǎo)入

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

這時通過klist查看當(dāng)前會話的kerberos票據(jù)可以看到生成的票據(jù)。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

使用dir \\dc.yunying.lab\c$訪問DC的共享文件夾。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

銀票生成時沒有KRBTGT的密碼,所以不能偽造TGT票據(jù),只能偽造由Server端密碼加密的ST票據(jù),只能訪問指定的服務(wù)。

五、EnhancedGolden Tickets

在Golden Ticket部分說明可利用krbtgt的密碼HASH值生成金票,從而能夠獲取域控權(quán)限同時能夠訪問域內(nèi)其他主機的任何服務(wù)。但是普通的金票不能夠跨域使用,也就是說金票的權(quán)限被限制在當(dāng)前域內(nèi)。

1普通金票的局限性

為什么普通金票會被限制只能在當(dāng)前域內(nèi)使用?

在上一篇文章中說到了域樹和域林的概念,同時說到Y(jié)UNYING.LAB為其他兩個域(NEWS.YUNYING.LAB和DEV.YUNYING.LAB)的根域,根域和其他域的最大的區(qū)別就是根域?qū)φ麄€域林都有控制權(quán)。而域正是根據(jù)Enterprise Admins組(下文會說明)來實現(xiàn)這樣的權(quán)限劃分。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

2 實驗演示

實驗環(huán)境

根域:YUNYING.LAB  域控:DC.YUNYING.LAB

子域:NEWS.YUNYING.LAB  域控:NEWSDC.NEWS.YUNYING.LAB

子域:DEV.YUNYING.LAB  域控:DEVDC.DEV.YUNYING.LAB

操作系統(tǒng)均為WindowsServer 2008 R2 x64

使用工具:

Mimikatz

實驗流程:

首先使用mimikatz在NEWSDC(NEWS.YUNYING.LAB的域控)上生成普通的金票,真實環(huán)境會是在域內(nèi)的主機中,這里方便演示所以在域控中,原理和結(jié)果是一樣的。

kerberos::golden /admin:administrator /domain:news.yunying.lab /sid:SID /krbtgt:XXXXX /ptt

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

這里使用的是NEWS.YUNYING.LAB域的SID號,訪問根域的DC共享文件夾被拒絕。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

下面說明下具體原因。

Enterprise Admins組

EnterpriseAdmins組是域中用戶的一個組,只存在于一個林中的根域中,這個組的成員,這里也就是YUNYING.LAB中的Administrator用戶(不是本地的Administrator,是域中的Administrator)對域有完全管理控制權(quán)。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

通過whoami命令在yunying.lab的域控上可以看到Enterprise Admins組的RID為519(最后三位)

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

Domain Admins組

可以看到在子域中是不存在EnterpriseAdmins組的,在一個子域中權(quán)限最高的組就是Domain Admins組。截圖是news.yunying.lab這個子域中的Administrator用戶,這個Administrator有當(dāng)前域的最高權(quán)限。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

通過whoami命令也可以看到在news.yunying.lab這個子域中沒有EnterpriseAdmins組的SID號。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

在子域中使用mimikatz創(chuàng)建的黃金票據(jù)不能跨域使用的原因也就在這里,通過whoami可以看到Y(jié)UNYING.LAB中Enterprise Admins組的SID號是:

S-1-5-21-4249968736-1423802980-663233003-519

而NEWS.YUNYING.LAB域中的SID號是:

S-1-5-21-3641416521-285861825-2863956705-XXX

mimikatz通過/sid選項接收SID號然后在尾部拼接RID號(512,519等),拼接之后生成的EnterpriseAdmins組的完整SID是:

S-1-5-21-3641416521-285861825-2863956705-519

而這個SID在整個域林中都是不存在的,所以在子域中通過mimikatz生成的金票無法跨域或者是訪問其他域的資源。在一個域林中,域控權(quán)限不是終點,根域的域控權(quán)限才是域滲透的終點。

3 突破限制

普通的黃金票據(jù)被限制在當(dāng)前域內(nèi),在2015年Black Hat USA中國外的研究者提出了突破域限制的增強版的黃金票據(jù)。通過域內(nèi)主機在遷移時LDAP庫中的SIDHistory屬性中保存的上一個域的SID值制作可以跨域的金票。這里沒有遷移,直接拿根域的SID號做演示。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

如果知道根域的SID那么就可以通過子域的KRBTGT的HASH值,使用mimikatz創(chuàng)建具有 EnterpriseAdmins組權(quán)限(域林中的最高權(quán)限)的票據(jù)。環(huán)境與上文普通金票的生成相同。

首先我們通過klist purge刪除當(dāng)前會話的Kerberos票據(jù),也可以在mimikatz里通過kerberos::purge來刪除。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

然后通過mimikatz重新生成包含根域SID的新的金票

kerberos::golden /admin:administrator /domain:news.yunying.lab /sid:XXX /sids:XXX /krbtgt:XXX /startoffset:0 /endin:600 /renewmax:10080 /ptt

Startoffset和endin分別代表偏移量和長度,renewmax表示生成的票據(jù)的最長時間

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

注意這里是不知道根域YUNYING.LAB的krbtgt的密碼HASH的,使用的是子域NEWS.YUNYING.LAB中的KRBTGT的密碼HASH。

然后再通過dir訪問DC. YUNYING.LAB的共享文件夾,發(fā)現(xiàn)已經(jīng)可以成功訪問。

Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么

此時的這個票據(jù)票是擁有整個域林的控制權(quán)的。我們知道制作增強金票的條件是通過SIDHistory那防御方法就是在域內(nèi)主機遷移時進行SIDHistory過濾,它會擦除SIDHistory屬性中的內(nèi)容。MS14068的利用方式和金銀票據(jù),主要用來提升和維持域內(nèi)權(quán)限,通常情況下需要結(jié)合其他的域內(nèi)攻擊方式進行使用,比如獲取了域控制器的NTLM HASH等內(nèi)容時。

關(guān)于Kerberos中MS14068和金銀票據(jù)的原理和利用方式是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI