内网渗透阶段,攻击者利用MSF获取meterpreter或者CS获取bacon之后,首先就是要获取凭证或NTLM hash值。然而获取到Hash值然后破解hash难度很高,难以利用,故诞生了PTH,即获取了目标机器用户的NTLM Hash的情况下,可无需破解哈希直接使用目标的NTLM Hash来完成身份验证。从红队的视角来看,PTH攻击(哈希传递攻击)只是windows横向渗透的开始。下面仅谈谈PTH的相关原理。
一:windows 密码凭证
windows系统使用两种方法对用户输入的密码进行加密处理:LM Hash以及NTLM Hash。
LM Hash是windows最早使用的加密算法,其本质是DES加密,LM Hash算法较为脆弱。微软后期引入NTLM Hash,其本质是MD4 加密。操作系统密码转换为十六进制,经过Unicode转换后,再调用MD4加密算法加密,这个加密结果的十六进制就是NTLM Hash。个人版在Vista之后,服务版在windows 2003 之后windows系统认证均采用NTLM Hash加密。
windows系统中密码凭证通常由LM Hash以及NTLM Hash两部分组成,结构如下:
用户名称:RID:LM-HASH值:NT-HASH值
在域环境中,密码凭证存储在%SystemRoot%ntds\ntds.dilt路径下的ntds.dit二进制文件中。在工作组环境下,用户的密码凭证被存储在%SystemRoot%\system32\config\sam路径下的SAM文件中。在渗透测试中获取windows密码凭证可以利用mimikatz,Pwddump7,WCE,注册表以及MSF、CS框架模块等获取。