浏览器中的浏览器(BITB)攻击

694 阅读2分钟

本文译自:mrd0x.com/browser-in-…

本文探讨了一种钓鱼技术,即在浏览器内模拟浏览器窗口来伪造一个合法的域名。

简介

对于安全专家来说,URL 通常是一个域名最值得信赖的方面。是的,有像 IDN HomographDNS Hijacking 这样的攻击可能会降低 URL 的可靠性,但还没有达到使 URL 不可靠的程度。

这一切让我想到,是否有可能使 "检查URL" 的建议不那么可靠?经过一周的头脑风暴,我确定答案是肯定的。

弹出式登录窗口

很多时候,当我们通过谷歌、微软、苹果等公司认证一个网站时,我们会得到一个弹出的窗口,要求我们进行认证。下面的图片显示了当有人试图用他们的谷歌账户登录 Canva(译者注:一款在线平面设计工具)时出现的窗口。

复制窗口

幸运的是,使用基本的 HTML/CSS 复制整个窗口设计是非常简单的。将该窗口设计与指向托管钓鱼页面的恶意服务器的 iframe 结合起来,其基本上没有区别。下面的图片显示了假窗口与真实窗口的对比。很少有人会注意到这两者之间的细微差别。

可以很容易地使用 JavaScript 来使窗口在链接或按钮点击时出现,在页面加载时出现等等。当然,你也可以通过 JQuery 等库中的动画,使窗口以一种视觉上吸引人的方式出现。

演示

悬停上的自定义URL

在允许使用 JavaScript 的情况下,将鼠标悬停在一个 URL 上以确定它是否合法并不是很有效。链接的 HTML 通常看起来像这样。

<a href="https://gmail.com">Google</a>

如果添加了一个返回 false 的 onclick 事件,那么在链接上悬停将继续显示 href 属性中的网站,但当链接被点击时,href 属性就会被忽略。我们可以利用这些知识来使弹出窗口看起来更真实。

<a href="https://gmail.com" onclick="return launchWindow();">Google</a>

function launchWindow(){
    // Launch the fake authentication window
    return false; // This will make sure the href attribute is ignored
}

可用的模板

我已经为以下操作系统和浏览器创建了模板。

  • Windows - Chrome (浅色和深色模式)
  • Mac OSX - Chrome (浅色和深色模式)

这些模板可以在我的 Github 上找到。

总结

有了这个技术,我们现在就可以升级我们的网络钓鱼游戏。目标用户仍然需要登录你的网站以显示弹出式窗口。但是,一旦访问攻击者拥有的钓鱼网站,用户就会放下戒备,在看似合法的网站上输入他们的凭证(因为可信的 URL 是这样说的)。

(完)


以此为灵感,前段时间本人也复刻了一个 QQ 登录的例子,如下:

动画1.gif