哈希值传递攻击是最难阻止的攻击之一,在这些攻击中,攻击者或者企业内部员工通过执行未经许可的操作来获取管理员权限。有了管理员访问权限后,攻击者就可以从计算机内存中获取用户的密码哈希,然后登录到其他计算机窃取更多数据。
一旦攻击者获取了高级别访问权限,就很难检测出哈希传递值攻击了,网上甚至还有免费的黑客工具来实现这个过程,更糟糕的是,哈希值传递攻击专门针对高强度密码、智能卡和很多其他登录令牌,几乎没有任何措施可以防止这种攻击,这也是安全管理员害怕这种攻击的原因,然而,防御方法确实存在。
不仅仅是Windows问题
很多人错误地认为只有Windows系统才易受到哈希值传递攻击,事实上,现在大部分主流操作系统都是利用密码哈希来执行对象验证(例如用户、计算机、服务等),而这些哈希将会停留在计算机的内存中(就像windows系统一样),并且很容易被攻击者利用。
在早期不太复杂的操作系统中,密码原本是以纯文本形式存储的,通常使用开放的未加密的通信通道在登录客户端与验证服务器/服务间通信,这种形式仍然存在于很多不安全的操作系统和程序中,例如FTP和Telnet,尽管受到舆论的广泛批评。
操作系统供应商认为密码哈希可以加大破解密码的难度,对于一个好的密码哈希,攻击者几乎不可能获取密码哈希将其转换为原来的纯文本形式,即使攻击者获得密码哈希数据库(在Windows系统中,密码哈希数据库是存储在本地SAM数据库或者Active Directory数据库中的)或者截获网络中的哈希,他都无法立即将其转换为同等的纯文本形式。
对于Windows Vista之前的系统,Windows是以两种哈希形式来存储密码哈希的:LANManager和NT。IBM公司早80年代初创建的LANManager,这种形式并不安全,尤其是当用于保护最多14位长度的Windows密码时非常容易被攻破。
NT哈希则是很好的加密哈希形式,它能够保护较长或者复杂的密码。Unix、Linux和BSD系统也有类似的密码哈希问题,早期哈希都不安全,SHA-512和Bcrypt这些新哈希则可以抵御破解攻击。
8位字符密码曾被认为是安全的,而现在则推荐广大用户采用至少12位字符的密码。密码破解的速度每年都在提升,在将来可能12位的密码也会变得不安全。