-
-
[翻译]ADV170014 NTLM SSO 漏洞利用指南
-
发表于: 2017-11-7 19:56 4208
-
2017年10月,微软周二补丁日发布的补丁中有一个可选的安全补丁:ADV170014,,这个补丁修复了NTLM认证机制的一个bug,恶意攻击者可以利用这个bug窃取用户密码hash并可以远程利用该漏洞让目标机器死机。
我在2017年5月24日报告了这个bug,微软官方在2017年10月18日关闭了这个bug。
Microsot花了整整148天来确认检查问题。
在10月的周二补丁日之后,官方的解决方案已经发布,所以我打算公开漏洞的细节。现在就看系统管理员们会不会安装这个补丁了,如果他们的系统可以安装这个补丁的话(我们下面再聊修复的话题)。
微软的NTLM架构有一些缺陷,这个大家都知道,窃取哈希值也不是什么新鲜事,一个渗透者攻击微软环境做的第一件事可能就是窃取哈希。
但是,这些攻击方法大多都需要用户操作或者流量拦截。
而这篇博客要介绍的攻击并不需要用户进行操作,所有的事情都是在攻击端完成的,不过要成功的完成这样攻击还需要一些特定条件。
这种攻击需要在目标机器上有共享文件夹而且没有密码保护,这种场景在办公室、学校、医院很常见,基本上都是windows系统,可以通过共享文件来分享音乐、照片和文档。
现在假设有一个用户“juan”,他在电脑上创建了一个名为“Prueba2”的文件夹,并决定将整个文件分享给他的团队。
windows系统创建共享文件夹
现在,我们打开“Sharing”标签,修改文件夹属性,以允许共享文件并且不需要使用密码。
打开共享标签配置文件共享属性
这里我们可看到共享文件夹的路径:\\JUAN-PC\Users\juan\Desktop\prueba2,现在我们点击“Network and Sharing center”
网络和共享中心:关闭密码保护
这里我们点击“Turn off password protected sharing”(关闭网络共享)选项,这样就允许任意用户访问共享文件夹而且不需要认证。
微软从Windows 3.11开始引入了SCF文件。SCF文件是一些纯文本文件,可以让Windows文件浏览器来执行一些基本的任务。
其实已经有一些基于SCF文件的攻击了,但是这些攻击都需要用户操作来执行SCF文件。
来看看两个最近的例子,来自Defense Code 的Bosko Stankovic发现的攻击:Stealing Windows Credentials Using Google Chrome (使用谷歌Chrome浏览器窃取Windows认证文件),以及Black Hat 2015上Jonathan Brossard和Hormazd Billimoria演示的攻击:SMB: Sharing more than just your files (SMB:共享的不仅仅是你的文件)。
一个基本的SCF文件结构就像下面这样:
要实施这次攻击,我们打算使用Metasploit,还有一个SCF文件,SCF文件可根据下面的代码进行创建:
我们将使用John the Ripper 来破解获取到的哈希值,这也是为什么我们设置了JOHNPWFILE选项,将其指向文件:/tmp/smbhash.txt,我们截获的windows哈希值将会存放到这里。
现在,“Prueba2”文件是空的(不是空的也行)。
包含SCF文件的共享文件夹
现在我们的Metasploit Console会显示如下:
正如你看到的那样,一次上传会触发几次认证请求,这个不用管。
现在我们已经得到了截获的密码哈希值了,我们可以使用John进行破解。
第二个攻击,我们可以远程让目标机器死机,来看看是怎么实现的:
我们还是需要可被攻击的共享文件夹,我们同样还需要一个SCF文件,只不过构造有点不同:
现在我们将SCF文件上传到目标机器上,(再一次使用smbclient):
根据微软官方,从Windows 3.11 到Windows10 的所有版本,不管是桌面版本还是服务器版本都会受到该漏洞影响。
坦白的讲,我只在Windows 7 和 Windows 10上做了测试,然后我就把“锅”丢给微软了。
微软发布了针对这个漏洞的补丁,修改了两项注册表键值来关闭操作系统的NTLM。然而这个注册表键只在Windows 10和Windows Server 2016上有,微软没有打算发布对其他版本的修复补丁。
另一个问题是,禁用NTLM会破坏很多环境,这是微软他们的担忧。
我的建议是,使用强密码,在攻击之后,攻击者需要破解获取的哈希值,如果密码足够复杂那么破解过程将需要大量时间,足够让攻击者放弃。
更好的方法是:不要无密码共享文件夹,这样会比较彻底些。
赞赏
- [翻译]通过MITMf利用$MFT漏洞锁定局域网电脑 4270
- [翻译]图像隐写之使用PHP隐藏图像中的文本 7228
- [翻译]ADV170014 NTLM SSO 漏洞利用指南 4209
- [翻译]越权访问Uber内部聊天系统 19286
- [翻译]使用Flash进行JSON CSRF攻击 6844