标题 | 简介 | 类型 | 公开时间 | ||||||||||||||||
|
|||||||||||||||||||
|
|||||||||||||||||||
详情 | |||||||||||||||||||
[SAFE-ID: JIWO-2025-1040] 作者: ecawen 发表于: [2017-11-12]
本文共 [579] 位读者顶过
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”(关闭网络共享)选项,这样就允许任意用户访问共享文件夹而且不需要认证。
[出自:jiwo.org] SCF 文件微软从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文件结构就像下面这样:
就这么简单,值得要说的一点是SCF文件是Windows很模糊的一个功能,相关的文档近乎于无。
攻击,窃取哈希值要实施这次攻击,我们打算使用Metasploit,还有一个SCF文件,SCF文件可根据下面的代码进行创建:
192.168.1.111 是我们攻击机器的ip地址,我们在这台机器上运行了Metasploit的capture/smb 模块:
我们将使用John the Ripper 来破解获取到的哈希值,这也是为什么我们设置了JOHNPWFILE选项,将其指向文件:/tmp/smbhash.txt,我们截获的windows哈希值将会存放到这里。
现在,“Prueba2”文件是空的(不是空的也行)。
攻击前的共享文件夹
包含SCF文件的共享文件夹 现在我们的Metasploit Console会显示如下:
正如你看到的那样,一次上传会触发几次认证请求,这个不用管。 现在我们已经得到了截获的密码哈希值了,我们可以使用John进行破解。
John破解出来了哈希值,登录的用户“juan”使用了弱密码“abc”。
攻击,让目标机器死机第二个攻击,我们可以远程让目标机器死机,来看看是怎么实现的: 我们还是需要可被攻击的共享文件夹,我们同样还需要一个SCF文件,只不过构造有点不同:
现在我们将SCF文件上传到目标机器上,(再一次使用smbclient):
就这样,不需要攻击者或者被攻击者进行其他的操作,目标机器现在已经锁定了文件系统,然后就静静等它重启了。
受影响的版本根据微软官方,从Windows 3.11 到Windows10 的所有版本,不管是桌面版本还是服务器版本都会受到该漏洞影响。 坦白的讲,我只在Windows 7 和 Windows 10上做了测试,然后我就把“锅”丢给微软了。 修复方法微软发布了针对这个漏洞的补丁,修改了两项注册表键值来关闭操作系统的NTLM。然而这个注册表键只在Windows 10和Windows Server 2016上有,微软没有打算发布对其他版本的修复补丁。 另一个问题是,禁用NTLM会破坏很多环境,这是微软他们的担忧。 我的建议是,使用强密码,在攻击之后,攻击者需要破解获取的哈希值,如果密码足够复杂那么破解过程将需要大量时间,足够让攻击者放弃。 更好的方法是:不要无密码共享文件夹,这样会比较彻底些。 致谢以及最后的评论这个漏洞已经存在很长时间了,我已经利用这个漏洞差不多一年了(当然是用在我的渗透测试项目上)。 这个漏洞如此简单,几乎任何人都可以利用,不过好的一点是,这个漏洞的成功利用需要特定的条件,而windows默认配置是不会受影响的。 我想感谢微软SRC,他们辛苦工作来修复这个漏洞,并且提供了针对这个问题的部分补丁,一个针对所有版本windows版本的补丁也是不太可能的。
这个攻击的发现还得力于来自Defense Code的Bosko Stankovic的杰出工作:Stealing Windows Credentials Using Google Chrome 当然,也感谢大家阅读这篇略长的博客。 Cheers!
根据原作者的博客简单的测试了下,第一个攻击成功了,获取了用户的密码哈希。但是第二个让服务器死机的没有复现成功。
译者测试的环境是Windows Server 2003中文版。感兴趣的小伙伴试一试在其他版本的系统能不能复现成功。
对SCF调用$MFT的调用那块不太了解,有没有小伙伴推荐些资料,要是没有的话,只能试着翻一下原作者推荐的那篇西班牙语的文章了。
--------------------------------------------分割线------------------------------------------------------------------
|