使用Windows操作系统的SMB文件共享协议,窃取身份凭证的攻击技术,已经存在了很长时间,这是一个不可避免的问题。尽管该技术具有多种实现方式,但大多数都位于本地网络内部。在过去的十年中,没有人公开展示过针对浏览器(IE和Edge除外)的SMB身份验证攻击,但是在本文中,我们将介绍Windows凭据窃取攻击,该技术将影响最受欢迎的网络浏览器-ChromeChrome(
可选配置),以及所有支持浏览器的Windows版本。

问题描述在各种配置下,Chrome浏览器会自动下载它认为安全的文件,而且不会提示用户选择文件的存储位置(使用的是顺序地址)。从安全的角度来看,这个功能是存在问题的,但如果恶意文件想要运行的话,还是需要用户手动单击“打开/运行”按钮才可以。不过,如果下载下来的文件不需要用户交互就能够执行恶意操作的话,那又该怎么办呢?真的有哪一类文件可以做到这一点吗?

Windows资源管理器Shell命令文件(.scf文件)是一种鲜为人知的文件类型,可以返回到Windows98。可能只有Windows98/Me/NT/2000/XP用户可能遇到过这种文件,当时它主要它本质上是一个文本文件,其中有一部分可以确定一段需要运行的命令(仅在运行资源管理器和切换桌面)和一个图标文件的位置。下面是一个SCF文件的内容示例:

通过Windows快捷方式LNK文件的生成,当文件显示在资源管理器中时,图标地址会进行自动解析。将图标地址指向一台远程SMB服务器已经是可以的攻击向量了,这种技术利用了Windows但是从攻击的角度来看,LNK和SCF之间的区别在哪里呢?自从震网病毒出现之后,Chrome会强制将LNK文件的后缀名替换。下载,但SCF文件并没有得到相同的占用。因此,我们可以利用一个仅包含两行代码的SCF文件来欺骗Windows系统:

文件下载完成之后,当用户在Windows资源管理器中打开下载目录的那一瞬间,请求就会被触发,随后文件便会被删除。整个过程根本不需要用户点击或打开下载文件,因为Windows资源管理器会自动尝试获取“
icon”(图标)内容。

攻击者所设置的远程SMB服务器随时准备着抓住目标用户的用户名以及NTLMv2密码哈希,他们可以将这些数据用作脱机破解或伪造用户身份并访问在线服务(SMB转发攻击)。捕获到的信息大致如下:

上面这个例子泄漏了目标用户的用户名,所在域(域),以及NTLMv2密码哈希。

需要注意的是,无论您的系统设置如何,SCF文件在Windows资源管理器中都不会显示其后缀名(.scf)。因此,类似picture.jpg.scf这样的文件名在Windows资源管理器中显示,就是picture.jpg。因此,这也可以利用SCF文件的攻击活动更加难以被发现了。

  影响

  密码泄漏

对于企业和政府用户而言,密码泄漏将有可能导致内部网提权和数据泄漏等风险出现。对于使用了微软账号(MSA)而非本地账号的Windows8/10的用户来说,密码泄漏将会影响用户所有的微软服务,例如OneDrive,Outlook.com,Office365,Office
Online,Skype,以及Xbox Live等。同时,密码重用等问题将会导致更多的账号发生泄漏。

从前,一张Nvidia GTX
1080的计算能力约为1600MH/s,即每秒可计算16亿哈希值。对于一个长度为8个字符的密码,一台配备了四块GTX1080的密码破解机可以在不到一天时间里遍历整个密码空间(包括大小写字母+常用特殊字符(!@#$%
&))。

  SMB中继攻击

像Microsoft
Exchange(或Outlook)这种允许远程访问的以及使用NTLM作为身份验证方法的服务将有可能受到SMB中继攻击,攻击者将能够伪装成受害者来访问用户的数据,而且还没有使用破解用户乔纳森·布鲁萨德(Jonathan
Brossard)在BlackHat黑客大会上已经向全世界演示过这种方法了,感兴趣的同学可以观看这个演示视频【传送门】。

在某些特殊情况下,攻击者甚至还可以在中继攻击的帮助下,利用窃取来的证书入侵目标网络,并获取内部网络的访问权。

针对SCF的反病毒产品

当浏览器无法提示这方面的安全风险时,我们只能指望其他的安全解决方案能够保护我们的安全了。于是我们对当前领先的安全解决方案进行了测试,从而使它们能够识别恶意下载文件。但不幸的是,所有测试产品都无法将这类文件标记为可疑对象。不过,想要识别出可疑的SCF文件其实也并不难,我们只要检查文件中的IconFile参数所指向的地址就可以了,所以我们希望厂商在将来能够增加这种检测机制。

  反射文件下载(RFD)攻击

注:这种攻击技术最初是由OrenHafif发现的,研究的同学可以参考介绍文章【参考资料】。

由于SCF格式比较简单,而我们的攻击只需要两行代码,而且可定制程度较高,因此它也非常适用于RFD攻击。

RFD通常针对的是RESTfulAPI代理,因为它们通常允许我们在URL路径中设置文件的扩展名。Chrome不会直接下载API响应内容类型,因此我们需要在“
href =”属性中添加下载链接来强制浏览器完成下载。

我们以WorldBankAPI为例进行演示:

由于字符“%0B”无法打印出来,因此Chrome将会自动将响应内容下载并保存为iwantyourhash.scf文件。当保存此文件的下载目录被打开之后,Windows将尝试与远程SMB服务器进行身份验证,并暴露目标用户的认证哈希。

缓解方案

为了防止这种通过SCF文件所进行的NTLMv2凭证窃取攻击,我们可以通过以下方法替换Chrome浏览器的自动下载功能:设置->显示高级设置->替换“在下载之前查询保存文件路径”选项。

除此之外,我们也希望谷歌能够在将来的Chrome浏览器版本中解决这个问题。以上就是关于浏览器如何窃取Windows密码的全部内容介绍,想了解更多关于信息安全的信息,请继续关注。