【域渗透】教你怎么利用DCSync导出域内所有用户hash
前言
在之前的文章《域滲透——DCSync》曾系統(tǒng)的整理過(guò)DCSync的利用方法,本文將要針對(duì)利用DCSync導(dǎo)出域內(nèi)所有用戶hash這一方法進(jìn)行詳細(xì)介紹,分析不同環(huán)境下的利用思路,給出防御建議。
簡(jiǎn)介
本文將要介紹以下內(nèi)容:
?利用條件
?利用工具
?利用思路
?防御建議
利用條件
獲得以下任一用戶的權(quán)限:
?Administrators組內(nèi)的用戶
?Domain Admins組內(nèi)的用戶
?Enterprise Admins組內(nèi)的用戶
?域控制器的計(jì)算機(jī)帳戶
利用工具
1.C實(shí)現(xiàn)(mimikatz)
實(shí)現(xiàn)代碼:
https://github.com/gentilkiwi/mimikatz/blob/master/mimikatz/modules/lsadump/kuhl_m_lsadump_dc.c#L27
示例命令:
(1)導(dǎo)出域內(nèi)所有用戶的hash
(2)導(dǎo)出域內(nèi)administrator帳戶的hash
2.Python實(shí)現(xiàn)(secretsdump.py)
示例命令:
3.Powershell實(shí)現(xiàn)(MakeMeEnterpriseAdmin)
?核心代碼使用C Sharp實(shí)現(xiàn),支持以下三個(gè)功能:
?通過(guò)DCSync導(dǎo)出krbtgt用戶的hash
?使用krbtgt用戶的hash生成Golden ticket
導(dǎo)入Golden ticket
注:
我在測(cè)試環(huán)境下實(shí)驗(yàn)結(jié)果顯示,生成Golden ticket的功能存在bug,導(dǎo)入Golden ticket后無(wú)法獲得對(duì)應(yīng)的權(quán)限
4.C Sharp實(shí)現(xiàn)
我在(MakeMeEnterpriseAdmin)的基礎(chǔ)上做了以下修改:
?支持導(dǎo)出所有用戶hash
?導(dǎo)出域sid
?導(dǎo)出所有域用戶sid
代碼已上傳至github,地址如下:
https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpDCSync.cs
補(bǔ)充:代碼開(kāi)發(fā)細(xì)節(jié)
輸出Dictionary中所有的鍵和值:
byte數(shù)組轉(zhuǎn)string,用來(lái)輸出hash:
string轉(zhuǎn)byte數(shù)組,用來(lái)將hash轉(zhuǎn)換成byte數(shù)組:
利用思路
1.在域控制器上執(zhí)行
0x03中提到的工具均可以
2.在域內(nèi)主機(jī)上執(zhí)行
(1)Mimikatz
有以下兩種利用思路:
?導(dǎo)入票據(jù),執(zhí)行DCSync
?利用Over pass the hash啟動(dòng)腳本,腳本執(zhí)行DCSync
(2)secretsdump.py
直接執(zhí)行即可
(3)C Sharp實(shí)現(xiàn)
首先需要生成票據(jù)
有以下兩種利用思路:
1、拿到krbtgt用戶的hash,在本地使用Mimikatz生成Golden ticket
命令示例:
2、拿到高權(quán)限用戶,使用Rubeus發(fā)送請(qǐng)求獲得ticket
命令示例:
接著導(dǎo)入票據(jù)
可以選擇SharpTGTImporter.cs,代碼已上傳至github,地址如下:
https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpDCSync.cs
我在(MakeMeEnterpriseAdmin)的基礎(chǔ)上做了以下修改:
支持導(dǎo)入指定票據(jù)文件
命令示例:
最后執(zhí)行DCSync
導(dǎo)出所有用戶hash可以選擇SharpDCSync.cs,代碼已上傳至github,地址如下:
https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpDCSync.cs
命令示例:
導(dǎo)出krbtgt用戶hash可以選擇SharpDCSync_krbtgt.cs,代碼已上傳至github,地址如下:
https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpDCSync_krbtgt.cs
命令示例:
3.在域外主機(jī)上執(zhí)行
方法同“2.在域內(nèi)主機(jī)上執(zhí)行”
防御建議
攻擊者需要以下任一用戶的權(quán)限:
?Administrators組內(nèi)的用戶
?Domain Admins組內(nèi)的用戶
?Enterprise Admins組內(nèi)的用戶
?域控制器的計(jì)算機(jī)帳戶
通過(guò)事件日志檢測(cè)可以選擇監(jiān)控日志Event ID 4662
參考資料:
https://www.blacklanternsecurity.com/2020-12-04-DCSync/
小結(jié)
本文介紹了利用DCSync導(dǎo)出域內(nèi)所有用戶hash的方法,在(MakeMeEnterpriseAdmin)的基礎(chǔ)上編寫(xiě)代碼SharpTGTImporter.cs和SharpDCSync.cs,便于利用,結(jié)合利用思路,給出防御建議。
最后
我有整理了相關(guān)的資料與工具,有需要的可以關(guān)注私我哦,我分享給你
【資料大綱】
總結(jié)
以上是生活随笔為你收集整理的【域渗透】教你怎么利用DCSync导出域内所有用户hash的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【CTF大赛】第五届XMan选拔赛 ez
- 下一篇: 【入门建议收藏】密码学学习笔记之线性分析