地址栏是不可钓鱼的吗?

信息安全 网页浏览器 网络钓鱼
2021-08-18 01:31:55

出于好奇,我参加了OpenDNS 的网络钓鱼测验,该测验试图向公众介绍如何检测网络钓鱼:

有没有想过您在区分合法网站和网络钓鱼尝试方面的能力如何?参加这个测验以找出答案。

我这样做主要是因为我的网络钓鱼检测过程基本上是这样的:

  1. 地址栏看起来合法吗?

...如果确实如此,我会认为该网站是合法的。这很可能过于简单,但是(剧透警告!)您只需查看地址栏就可以正确回答所有 14 个问题。“雅虎!!正在升级!!!” 来自“docs.google.com/spreadsheets”?Yeeeeah,那种几乎没有网络钓鱼的味道。

假设 DNS 服务器没有受到威胁,那么地址栏真的那么防弹吗?如果不是,我如何检测它是否被篡改?

4个回答

答案取决于您使用的是哪种浏览器,所以我将对其进行分解。

移动浏览器。你不能相信你看到的任何东西。对不起。小屏幕上的生活很糟糕。就是那样子。

(你想要解释为什么吗?任何网页都可以全屏显示,使用特定于移动设备的技巧,例如向下滚动页面以使地址栏不显示。然后,它可以绘制一个假地址栏。作为用户,没有合理的方法可以通过查看屏幕来检测这种伪造。另请参阅研究论文iPhish: Phishing Vulnerabilities on Consumer Electronics,作者实施了这种攻击并进行了尝试;他们了解到用户无法检测到它,即使是具有安全知识的计算机科学研究生也不会,即使他们在网络钓鱼攻击之前被警告过。)

所以基本上,没有可靠的方法可以通过查看屏幕来检测对移动浏览器的网络钓鱼攻击。保护自己的唯一方法是在输入您的凭据之前自己直接访问该站点(例如,通过单击书签):切勿通过链接到达该站点。

较旧的桌面浏览器。在较旧的浏览器上,例如 IE6 或 Firefox 2,我不知道您是否可以信任任何东西。他们充满了安全漏洞,我不会指望他们的安全。保护自己的唯一方法就是简单地避开那些浏览器:朋友不要让朋友使用 IE6。但是你说你对它们不感兴趣,所以我认为我们可以无视它们。

现代桌面浏览器。这是问题的关键,我怀疑你最感兴趣的是什么。在现代桌面浏览器上,你可以信任的只有几件事:

  • 域名。您可以信任地址栏中的域名来指示您当前所在的站点。

  • 蓝/绿光。您可以相信地址栏中名称后面的蓝/绿光指示 SSL 的存在。您还可以信任 `https://` 模式来指示使用 SSL,但发光可能更容易检查。

基本上就是这样。你不能相信 URL 旁边的图标(favicon),即使它看起来像挂锁或其他东西;您不能信任地址栏下方的任何内容;在单击链接之前将鼠标悬停在链接上时,您无法信任状态栏中的文本。您不应依赖域名后 URL 中的任何内容,因为同源策略不区分同一域上的不同 URL。

如何保护自己。 让我们把它们放在一起。如果您想在访问某个网站(例如您的银行)时保持安全,可以使用两种可行的策略来保护自己:

  • 预防:使用书签。要做好准备,请在您的银行的登录页面上做一个书签。(确保它是您要添加书签的 https 页面。)然后,当您要登录时,单击书签,然后输入您的凭据并使用该站点。切勿通过点击链接导航到您的银行网站;如果您发现自己是从其他来源访问银行网站的,请在使用该网站之前单击书签,确保您在正确的页面上。这从本质上防止了对您的银行凭据进行网络钓鱼攻击的任何机会。

  • 检测:检查地址栏。或者,您可以尝试检测网络钓鱼攻击。每次访问您的银行网站时,在输入您的凭据或使用该网站之前,请检查以确保地址栏中的域名与您银行的域名匹配。这将是检测网络钓鱼攻击的一种非常可靠的方法——只要您始终记得检查地址栏。该方法的主要缺点很明显:您必须始终记住检查地址栏。除了这种谨慎之外,这也是一个可行的策略。

    此外,您可能希望通过检查蓝/绿光来检查您当前是否正在使用 SSL(这在使用无线网络时尤其重要);如果您碰巧知道您的银行过去曾发出绿光,那么在随后的访问中,请确保该光仍然是绿色的。或者,如果您使用 Firefox,您可以安装 HTTPS Everywhere,这样您就不必检查 SSL。

警告和攻击。我需要稍微限定一下上述言论。检查地址栏并不是万无一失的防御措施。即使您查看地址栏,也有一些复杂的演示文稿攻击可能会欺骗您。让我概述一下主要的:

  • 画中画攻击。回想一下,网页可以完全控制在显示它的浏览器窗口部分上绘制哪些像素(例如,通过提供将完全按原样显示的位图图像)。在画中画攻击中,恶意网页安排在其窗口内绘制某些内容,因此在视觉上看起来像是在顶部弹出了第二个较小的浏览器窗口(并且其轮廓完全包含在外部窗口中) . 这很难用语言来描述,所以这里是一个示例图像:

    画中画攻击

    致谢:Jackson、SImon、Tan 和 Barth对扩展验证和画中画网络钓鱼攻击评估的图 2。

    在这个例子中,用户正在访问一个恶意网页:http://paypal.login.com,如最外面的地址栏所示。恶意页面控制了这个外部窗口内所有像素的内容(除了边框周围的镶边)。在这个区域,攻击者绘制了一个图像,该图像复制了第二个较小的浏览器窗口的外观,并弹出在顶部。由于攻击者控制了该图像的所有像素,因此攻击者可以完全控制“内窗口”的“地址栏”。攻击者选择欺骗一个“地址栏”,其中包含https://www.paypal.com. 如果你不小心,你可能会断定内部“窗口”有焦点,查看它的地址栏,断定你正在与 Paypal 通话,然后将你的 Paypal 密码或其他个人详细信息输入到内部“窗口”中。如果你这样做,你实际上已经向攻击者透露了你的 Paypal 密码。

    这种攻击可能很难成功安装。当一个新的浏览器窗口无缘无故弹出时,当他们没有尝试访问 Paypal 时,它依赖于用户不会产生怀疑。它还需要攻击者进行大量的工程工作才能使其外观和感觉正确。例如,攻击者需要使用 Javascript 来识别您正在使用的浏览器和操作系统,然后制作与您的浏览器版本匹配的欺骗图像,并且为了完全保真,攻击者可能需要实现 Javascript 处理程序来让您拖动内部窗口周围(您将无法将其拖动到外部窗口的范围之外),与内部窗口的欺骗镀铬进行交互,等等。

    有关此攻击的更多信息,请阅读Jackson、SImon、Tan 和 Bart对扩展验证和画中画网络钓鱼攻击的评估。我只知道在野外发生这种攻击的一个实例。

  • 同形异义词攻击。参见 Gabrilovich 和 Gontmakher 的“同形词攻击”,以及 Fu、Deng、Wenyin 和 Little 的“对抗 unicode 攻击的方法和应用”。

  • 全屏攻击。 (待定)

据我所知,这些攻击在实践中很少(如果有的话)出现,它们可能只有部分机会欺骗用户,但我想概述它们,以便您了解浏览器安全性并不完美的方式。

实际上,可以使用 Javascript编程方式更改URL 栏中的文本内容。浏览器应该阻止您更改域名;但是您可以将文本更改为足够大的内容,这可能意味着滚动,因此 URL 栏中的文本类似于:

http://big.ugly.pirate.com/      https://www.paypal.com/login.html    (spaces...)  .

有足够的“空间”,使左侧部分“滚动”出栏。我想一些Javascript可以使用窗口大小来推断要添加多少空格,以便在给定的浏览器版本上获得所需的视觉效果,假设“标准”字体设置。

是的,用敏锐的眼光你会发现它。但这可能需要一些培训。

免责声明:我没有尝试过,也没有看到它完成过;我不知道这种滚动是否真的可以强制。值得一试。)

有点。地址栏将显示您正在查看的页面的地址,但网页不是 1990 年代的单一对象。由于网页使用来自其他位置的内容和代码,如果内容或代码被修改,页面上项目的外观可能会被修改,即使地址栏中的文本相同。最常见的示例是跨站点脚本 (XSS)。

根据这个 StackOverflow 答案,确实可以在不重新加载页面的情况下更改 URL 栏。这将使 URL 栏无法免受网络钓鱼尝试的影响。

这里有一个问题:如果您可以运行一般的 Javascript,或者将用户重定向到看起来像合法页面的恶意链接,那么您已经可以使用跨站点脚本和 Javascript 重定向来做很多事情。换句话说,如果您已经说服用户访问了一个不可信的页面,那么可能已经发生了很多不好的事情——无论是内容还是 URL 重定向、基于 Flash 的恶意软件、偷渡式下载或其他攻击媒介。

这确实变得有趣的是一个像<a href="http://bad.site">http://paypal.com</a>这样的精心制作的 URL,然后将 URL 栏更改为 PayPal.com。如果用户不假思索地点击,然后检查 URL 栏,他或她可能会遇到一些麻烦!

编辑:我一直在玩 HTML5 pushState,看起来在同一主机上浏览不同的页面看起来相对简单,但不一定在不同的域上。我会继续使用它,但现在如果您访问dshaw.net/xss.html,它会将 URL 栏更改为“login.aspx”。请注意 login.aspx 不存在。这在给定域的页面上存在 XSS 而不是登录/输入凭据页面的攻击场景中可能会证明是有用的。从这个角度来看,这是一个非常危险的功能,可以充分利用。