本文探讨了一种钓鱼技术,即在浏览器内模拟浏览器窗口来伪造一个合法的域名。
简介
对于安全专家来说,URL 通常是一个域名最值得信赖的方面。是的,有像 IDN Homograph 和 DNS 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 登录的例子,如下: