从Chrome拖拽泄露NTLM哈希:文件URL的安全隐患

本文详细分析了Chromium浏览器通过文件URL拖拽功能导致的NTLM哈希泄露漏洞,介绍了DragonHash工具的实现原理,并演示了如何通过社会工程学手段诱使用户触发哈希捕获。

从Chrome拖拽泄露NTLM哈希:文件URL的安全隐患

使用DragonHash捕获哈希

图1 - 我们对工作非常认真

基于Chromium的浏览器具有一套奇特的功能集,允许在浏览器中进行广泛的拖放操作。这一特性不仅可用于点击劫持攻击期间的"输入"操作(如本博客所示),还能让Web应用更像真正的文件处理器。例如,您可以将文件从Web应用拖拽到桌面。

社会工程师可能会发现这一特性可用于诱骗用户将文件复制到其计算机上,这当然是可能的。您可以让Web应用提示用户,比如将图像拖到桌面,当用户释放该图像时,您当然可以将该图像文件复制到桌面。

但这假设您是在规规矩矩地行事。事实证明,您可以向用户释放拖拽元素的位置写入任何文件。用户可能将图像拖到桌面,但在释放时,如果您愿意,可以写入二进制文件。这听起来不是个好主意,但是,好吧,Chrome就是这样设计的。

任何黑客都可能开始自问:如果我们开始用这个功能做更多事情而不仅仅是向磁盘写入文件,会发生什么?如果我们开始使用文件URL呢?显然,Chrome不会允许这种情况发生——对吧?

图2 - 某种程度上可以!

因为我们知道,如果这种情况发生在Windows系统上,Windows会做它通常会做的事情——通常是些糟糕的事情,比如四处散播哈希值。

让我们尝试一些JavaScript代码,好吗?

假设我们有一个托管图像文件的Web服务器,我们可以创建一个可拖拽的图像,如下所示:

图3 - 它看起来如此无辜

我们想要的是让可拖拽元素将数据设置为DownloadURL,但不是提供要写入的文件内容,而是指向Responder。

图4 - 这不可能工作,对吧?

那么,当用户被诱骗将此图像从Web应用拖出并放到其Windows桌面上时,会发生什么?

播放

哦,很好——什么都没发生。但是,用户有个有趣的特点。

图5 - 为什么不呢?

当某件事不起作用,而且再次尝试非常容易时,用户经常会再次尝试。而这正是Chrome让Windows展现其愚蠢一面的地方。

播放

这实际上并不会将文件复制到磁盘,但会触发我们的NTLM哈希捕获。我们可以添加更多JavaScript代码来下载文件,希望用户不会变得太怀疑。

图6 - 为他们保存图像

现在,这要求Chrome(或用户使用的任何基于Chromium的浏览器)启用了"自动下载到文件夹"功能。当浏览器配置为每次询问用户要下载文件的位置时,这似乎不起作用。而且这个文件下载将转到配置的下载文件夹,而不是用户拖拽图像的桌面(或他们拖拽元素的任何位置)。

如果您认为完全不传输文件更不容易引起怀疑,可以跳过这个额外的文件下载步骤;您仍然会获得NTLM哈希。

您可以使用此在线工具运行自己的Responder服务器来尝试此操作: https://www.dragonhash.fun

此演示页面的代码可在以下位置找到: https://github.com/hoodoer/DragonHash

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计