本文来自“白帽子社区红队知识星球”
作者:白帽子社区红队-伟大宝宝
星球主要面向高级持续性威胁领域技术的研究。目前已在研究或发表技术成果的主题主要涵盖持久化控制、反溯源、后门传播、免杀、钓鱼伪装技术、Windows系统服务漏洞研究、开源产品漏洞研究等领域,目前已有以下7大板块:【产品漏洞】【内网穿透】【权限维持】【系统提权】【内网渗透】【免杀技术】【技术研究】还可以与嘉宾大佬们接触,在线答疑微信群、互相探讨,不定时进行技术直播分享。
在后渗透阶段,想要长久控制一台或多台主机,获取主机密码是非常关键的一个环节,本次 为各位提供了目前非常有效的几种密码提取方法。
需要注意,windows server 2008 及以前的版本在系统中存储的是明文密码,而在之后的版本 默认导出的密码均为 NTLM hash,本文会提供此类问题的解决方法。
使用 procdump 获取密码副本,采用此方式可以解决 mimikatz 无法使用的问题,导出的 dmp 文件可在其他主机进行还原密码。
在导出 dmp 文件后通过 Mimikatz 对密码进行
Wdigest 是 lsass 进程的一个 SSP 程序,用于 LDAP 认证和 WEB 身份认证,他会将用户的密码 信息以加密的形式存储在内存中。而我们常用 Mimikatz 的 logonpasswords 命令也是依托于 它运行的。
在这里可以看到使用 logonpasswords 无法获取系统密码,因为这个方法是在 windows server 2012 上运行的,在该版本的windows 中默认是无法获取到明文密码的。
解决这个问题的方法很简单,通过将注册表 HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest 下的 UseLogonCredential 的值修改为 1 即可,如果没有这一项可以自己添加(下面第一张图是没有这个选项的)。
操 作 命 令 :
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /vUseLogonCredential /t REG_DWORD /d 1 /f
剩下的就是需要让用户再次输入密码登录(锁屏、故意使服务挂掉),然后再次运行 logonpasswords 命令便可看到内存中的明文密码。
这种方法同样适用于导出 dmp 文件的场景,同样都是需要在修改注册表后让用户再次登录。
这种方法与方法一的原理一样,通过转储 lsass 进程的 dmp 文件来解密获取密码。只不过这 里不需要依托于 procdump,而是直接依靠系统自带的组件。首先需要获取 lsass.exe 的进程号
之后通过 comsvcs.dll 的 minidump 函数来转储文件
需要注意这里的命令需要在 powershell 中执行,因为转储文件需要有 SeDebugPrivilege 权限, 而 cmd 下默认是没有开启的。
通过注册表导出的方式只能获取到 hash,无法获取到明文,命令比较简单可参考下图。
这属于被动的获取密码方法,需要让用户登录。原理是通过修改 lsass 进程的 SSP 加载程序 来执行恶意操作。这里所用到恶意程序就是 mimikz 中的 mimilib.dll 在使用时候请根据操作 系统情况选择不同位数的 mimilib.dll。
将 mimilib.dll 放在 C:/windows/system32/目录下
修改注册表 HKLMSYSTEMCurrentControlSetControllsa 中 Security Packages 项的值如下图
用户再次登以后在 C:/windows/system32/目录下会生成 kiwissp.log 文件,里面会记录用户的密码信息。
白帽子社区知识星球红队专家现金奖励计划规则:白帽子社区星球红队专家奖励计划
▼扫码关注白帽子社区公众号&加入知识星球▼
原文始发于微信公众号(白帽子社区):windows下系统密码的多种提取方式
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论