内网-域控安全
域控安全
ntds.dit文件介绍
ntds.dit为ad的数据库,内容有域用户、域组、用户hash等信息,域控上的ntds.dit只有可以登录到域控的用户(如域管用户、DC本地管理员用户)可以访问。ntds.dit包括三个主要表:数据表、链接表、 sd表。所以只要在域渗透中能够获取到ntds.dit就可以获取到所有域用户的用户名和对应的hash,它和 SAM文件一样,被windows系统锁死
Ntds.dit位置
1 |
|
无法直接读取
1.多种方式提取和移动ntds.dit文件
ntdsutils.exe提取ntds.dit
ntdsutils.exe 是一个为活动目录提供管理机制的命令行工具,使用 ntdsutils.exe 可以维护和管理活动目录数据库、控制单个主机操作、创建应用程序目录分区等,该工具默认安装在域控服务器上,可 以在域控制器上直接操作,支持windows server 2003、2008、2012。提取过程分为3步:
第一步:创建快照
1 |
|
可以看到快照的uid是 412baa5a-8ed7-43dd-8d05-adcdacff8c89
第二步:加载快照
1 |
|
可以看到快照的地址为 C:\$SNAP_202310241441_VOLUMEC$
第三步:复制快照中的ntds.dit文件
1 |
|
1 |
|

第四步:删除快照
1 |
|
vssadmin提取ntds.dit
vssadmin1是Windows Server 2008及Windows 7系统提供的VSS管理工具,它可以用于创建或删除卷影副本,列出卷影副本的信息(只能管理系统Provider创建的卷影副本)。还可以用于显示所有安装的所有卷影副本写入程序(writers)和提供程序(providers),以及改变卷影副本存储空间(即所谓的 “diff空间”)的大小等。支持的操作系统:Server 2008、Server 2012
第一步:创建快照
1 |
|
{a7624614-2c64-43da-9034-96e064941bae}
第二步:复制文件
1 |
|
第三步:删除快照
1 |
|
vssown提取ntds.dit
vssown.vbs和vssadmin类似,它是由Tim Tomes开发完成的,它可以创建和删除卷影副本,以及启动 和停止卷影复制服务
第一步:启动卷影复制服务
1 |
|
第二步:创建一个C盘的卷影副本
1 |
|
第三步:列出当前卷影副本
1 |
|
第四步:复制文件:
1 |
|
第五步:删除卷影副本
1 |
|
IFM
可以通过创建一个 IFM 的方式获取 ntds.dit,在使用 ntdsutil 创建媒体安装集(IFM)时,需要进行生成快照、加载、将 ntds.dit 和计算机的 SAM 文件复制到目标文件夹中等操作,这些操作也可以通过 PowerShell 或 VMI 远程执行。
第一步:
1 |
|
此时 ntds.dit 将被保存在 C:\test\Active Directory 下,SYSTEN 和 SECURITY 两个文件将被保存在C:\test\registry 文件夹下

第二步:删除
1 |
|
impacket
通过 impacket 里的 secretsdump.exe 脚本可以直接远程读取 ntds.dit 并导出哈希值
1 |
|
2.离线方式读取ntds.dit文件(建议)
优点:不会报毒 缺点:需要传输ntds和system文件
离线一般需要两步:
1、将远端域控的ntds.dit下载到本地,
2、然后利用再在本地进行。
注意:因为system.hive里存放着 ntds.dit 的秘钥,所以需要转储 system.hive ,不然没法查看 ntds.dit 里内容
命令如下:
1 |
|
下面介绍几种方式离线读取ntds.dit文件
esedbexport
1、以kali为例子,安装esedbexport
1 |
|
将导出的文件放到该目录下

2、导出 ntds.dit,两个重要的表为:datatable以及link_table,他们都会被存放在./ntds.dit.export/文 件夹中
1 |
|
3、安装 ntdsxtract
1 |
|
如果提示 ImportError: No module named Crypto.Hash,请执行 pip install pycryptodome
4、将 ntds.dit.export 和 SYSTEM 文件放入到 ntdsxtract 工具的文件夹中,然后导出哈希值,最后的结果将保存在 1.txt 里
1 |
|


impacket
将 ntds.dit.export 和 SYSTEM 文件放入到 和secretsdump.exe 同级目录下
1 |
|
NTDSDump.exe
NTDSDumpEx.exe 可以进行导出哈希值的操作
1 |
|
DSInternals
DSInternals是powershell脚本,可以离线读取ntds文件
安装DSInternals
1 |
|
导出 hash,并保存在 txt 文件里
1 |
|
3.在线方式读取ntds.dit文件
优点:不用传输文件 缺点:容易报毒
在线的方式就是直接读取不需要在导出ntds文件,在域环境中,不要直接在线获取hash,特别是域环境比较大的时候,在线获取hash等待时时间较长,工具占用资源太多,容易造成域控服务器崩溃
mimikatz
1、可以读取所有用户的hash
1 |
|
2、也可以读取单个用户的hash
1 |
|
Quarks PwDump
1、上传工具到目标机器,使用命令先导出ntds文件,然后直接读取
1 |
|
impacket
使用secretsdump直接读取
1 |
|
1 |
|
Invoke-DCSync
Invoke-DCSyncs是powershell脚本可以在线读取内存中的用户hash
1 |
|
4.MSF读取ntds.dit文件
离线读取
离线读取使用msf读取ntds文件,前提是msf必须和域控在相同网段,我们可以使用代理技术,将msf代理到内 网,然后使用msf导出ntds文件
1、使用导出模块进行导出
1 |
|
2、填写相关的选项,主要有 IP,域,用户名和密码
1 |
|
3、运行之后 ntds和system文件会被保存到/root/.msf4/loot下
4、在相应的目录下找到该文件
5、使用相应的工具读取该文件即可
在线读取
1、使用cs或者其他的方式先上线的msf中使用派生会话的方式
1 |
|

cs设置msf派生会话的监听器


2、拿到shell之后执行hashdump,如果不能执行就迁移进程到64位中
失败原因:使用的32位程序 使用migrate进行进程迁移

3、或者使用下面的脚本,也可以读取域内的hash
1 |
|