企业该如何防御哈希值传递攻击

哈希值传递攻击是最难阻止的攻击之一,在这些攻击中,攻击者或者企业内部员工通过执行未经许可的操作来获取管理员 权限。有了管理员访问权限后,攻击者就可以从计算机内存中获取用户的密码哈希,然后登录到其他计算机窃取更多数据。  

一旦攻击者获取了高级别访问权限,就很难检测出哈希传递值攻击了,网上甚至还有免费的黑客工具来实现这个过程,更 糟糕的是,哈希值传递攻击专门针对高强度密码、智能卡和很多其他登录令牌,几乎没有任何措施可以防止这种攻击,这也是安全管理员害怕这种攻击的原因,然 而,防御方法确实存在。

不仅仅是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位的密码也会变得不安全。

拦截通过技术

大多数研究人员认为哈希值传递攻击还不算严重的问题,而攻击者能够以高级别权限访问哈希的事实则更加令人担忧,攻 击者获得管理权限后还有什么做不到的?在Active Directory网络中,攻击者必须获得域控制器的管理员权限才能够得到大多数用户的哈希,这意味着在大多数情况下,攻击者实际上已经成了域管理员。从 这点来看,哈希值传递攻击只是一小部分问题而已。

对于这种攻击,安全专家的最大建议就是,阻止或者尽量控制域管理员登陆到非域控制器以及执行非Active Directory管理任务。域管理员只能登录来执行限制给域管理员的任务,即便如此,这些任务也只能在域控制器上执行。在Active Directory中,通常分配给域管理员任务中有95%的任务(例如用户和计算机账户管理、组策略更新等)可以利用Active Directory Delegation Control向导分配给不是域管理员组的专门的团队来执行。

默认情况下,域管理员是每个域计算机群的本地管理员组中的成员,他们对于所有资源都有完全控制的权力,我们应该从 本地管理员组移除域管理员,并且增加需要对特定计算机的完全控制力的特定角色组。域管理员真的需要对大部分重要数据库和所有敏感数据的完全控制吗?

另外,需要定期对不同域管理员执行的任务进行归档。然后创建特定角色组,并将这些任务分别分配给合适的组,下一 步,移除所有“不需要的”域管理员,连系其余的域管理员,保证高度安全性。可以像某些公司一样部署一些特殊的工具(如CyberArk和 Cloakware等)来简化管理和控制高权限管理员的任务。

这里的主要建议就是尽量控制高权限管理员的数量,防止他们使用其证书登录普通工作站,因为普通工作站比受到良好保 护的域控制器更容易被攻击。

防御哈希值传递攻击的其他方法还包括对高权限用户登录过的电脑进行重新启动,这能够防止哈希存储到内存,因为攻击 者能够在内存很轻松地获取哈希值传递。

服务器和域隔离是最大限度控制哈希值传递攻击范围的最佳方法,这样不仅可以防止攻击者获取大多数计算机和服务器的 访问权限,还可以让攻击者的活动触发其他纵深防御程序,例如IDS和防火墙等。

此外,使用杀毒软件扫描软件来检查哈希值传递工具,如果你在系统环境中发现任何这种工具,你将需要立刻进行调查, 这个方法是对已部署的防御措施的补充,能够帮助防止攻击者获取对系统的高级别访问权限。

所有这些建议归结起来无非就是最低特权安全政策,按照上述建议来操作比阻止哈希值传递攻击更能提高安全性。