点击劫持攻击:警惕社交网络身份识别

很难抵挡点击免费iPhone提供链接的诱惑。但要小心:您的点击可能会被轻易劫持,结果可能会灾难性。

什么是点击劫持?

点击劫持是一种攻击方法,也被称为用户界面伪装,因为它通过伪装(或伪装)覆盖链接来欺骗用户,使其进行与他们认为不同的操作。

大多数社交网络用户喜欢随时保持登录状态的便利。攻击者可以轻易利用这种习惯,强迫用户无意识地点赞或关注某些内容。为此,网络犯罪分子可以在其自己的网页上放置一个诱人的按钮 – 例如,以吸引人的文本为例,比如“限时免费iPhone优惠”,并在其中嵌入一个包含社交网络页面的不可见框架,以便“点赞”或“分享”按钮覆盖在免费iPhone按钮上。

这种简单的点击劫持技巧可以迫使Facebook用户无意识地关注某些群组或粉丝页面。

所描述的情景在某种程度上无害,因为受害者唯一的后果就是被添加到社交网络群组中。但是通过一些额外的努力,同样的技术可以用于确定用户是否已登录其银行账户,而不是点赞或分享某些社交媒体内容,而是被迫点击一个将资金转入攻击者账户的按钮,例如。最糟糕的是,由于用户是合法地登录到其银行账户,并且他们自愿点击了转账按钮,因此无法追踪这种恶意操作。

因为大多数点击劫持技术需要social engineering,所以社交网络成为理想的攻击载体。

让我们看看它们是如何被利用的。

Twitter上的点击劫持

大约十年前,Twitter社交网络遭受了一次大规模攻击,迅速传播了一条消息,导致用户点击链接,利用了他们天生的好奇心。

带有文本“Don't click”(不要点击)的推文,后跟一个链接,迅速传播到成千上万个Twitter账户。当用户点击链接,然后点击目标页面上似乎无害的按钮时,一条推文将从他们的账户发送出去。该推文包含文本“Don't click”,后面跟着恶意链接。

Twitter工程师不久之后修补了点击劫持攻击。攻击本身被证明是无害的,它作为一种警告告诉人们Twitter点击劫持行动的潜在风险。恶意链接将用户带到一个带有隐藏iframe的网页。框架内部有一个不可见按钮,从受害者的账户发送恶意推文。

Facebook上的点击劫持

使用移动Facebook应用程序的用户面临一个错误,让垃圾邮件发送者在其时间线上发布可点击的内容,而不需要得到他们的同意。一位安全专家在分析垃圾邮件活动时发现了这个漏洞。专家观察到他的许多联系人都在发布指向一个有趣图片页面的链接。在达到图片之前,用户被要求点击一个宣告成年的声明。

他们不知道的是,声明是在不可见的框架下。

当用户接受声明时,他们被带到一个有趣图片的页面。但与此同时,链接被发布在用户的Facebook时间线上。这是可能的,因为Facebook应用程序中的Web浏览器组件与帧选项标头不兼容(下面我们将解释它们是什么),因此允许恶意帧覆盖。

Facebook并未将此问题视为错误,因为它对用户账户的完整性没有影响。因此,是否会修复这个问题还不确定。

较小的社交网络上的点击劫持

这不仅仅发生在Twitter和Facebook上。其他不那么流行的社交网络和博客平台也存在可以进行点击劫持的漏洞。以LinkedIn为例,它曾经存在一个漏洞,让攻击者可以欺骗用户代表他们分享和发布链接,而用户并不知情。在修复之前,这个漏洞允许攻击者在隐藏的框架中加载LinkedIn的ShareArticle页面,并将此框架覆盖在看似无害和吸引人的链接或按钮上。

另一个例子是公共网络博客平台Tumblr。该网站使用JavaScript代码来防止点击劫持。但是,由于页面可以被隔离在一个阻止运行JavaScript代码的HTML5框架中,这种保护方法变得无效。可以使用精心设计的技术结合密码助手浏览器插件来窃取密码:通过欺骗用户输入错误的验证码文本,他们可能无意中将密码发送到攻击者的网站。

跨站请求伪造

点击劫持攻击的一种变体称为跨站请求伪造,简称CSRF。通过社交工程,网络犯罪分子对终端用户发起CSRF攻击,迫使他们执行不需要的操作。攻击向量可以是通过电子邮件或聊天发送的链接。

CSRF攻击并不意图窃取用户的数据,因为攻击者无法看到虚假请求的响应。相反,攻击目标是状态更改请求,如密码更改或资金转移。如果受害者使用了administrative privileges,则此攻击有可能危及整个Web应用程序。

CSRF攻击可以存储在易受攻击的网站上,特别是具有所谓“存储的CSRF漏洞”的网站。这可以通过在稍后显示在页面上的输入字段中输入IMG或IFRAME标签来实现,例如评论或搜索结果页面。

真实案例:点击劫持举例

在2016年,谷歌广告流量质量官员Andres Ferrate在一篇博文中澄清,一些发布者将广告(iFrame)隐藏在典型的可点击内容上方。

图片来源:Google

因此,当普通用户尝试点击目标元素时,覆盖的广告被点击了。在第二个GIF中,您可以看到隐形广告单元跟踪鼠标移动。这样无论访问者在恶意网页上点击哪里,都会加载广告。

对于新手来说,点击广告才是网站真正赚钱的方式,比仅仅展示广告带来的收益要多得多。

尽管这种点击劫持对访问者来说很讨厌,但广告商却因此白白损失了钱财。最终,谷歌终止了这些发布者的Adsense账户,以确保他们的广告网络对每个利益相关者都是有益的。

预防框架攻击

现代浏览器可以告诉是否允许在框架中加载特定资源。它们还可以选择仅在请求源自用户所在的同一网站时才在框架中加载资源。这样,用户就不会被欺骗点击来自其他网站的不可见框架中的内容,并且他们的点击不会被劫持。

客户端的缓解技术称为框架破坏或框架销毁。尽管它们在某些情况下可能有效,但也很容易被绕过。这就是为什么客户端方法不被视为最佳实践的原因。安全专家推荐使用服务器端方法,如X-Frame-Options(XFO)或更近期的方法,如内容安全策略。

X-Frame-Options是一种响应头,Web服务器在Web页面中包含它,以指示浏览器是否允许在框架中显示其内容。

X-Frame-Option头允许三个值。

  • DENY,禁止在框架中显示页面
  • SAMEORIGIN,允许在框架中显示页面,只要它保持在相同的域中
  • ALLOW-FROM URI,允许在框架中显示页面,但只限于指定的URI(统一资源标识符),例如只在特定的网页内显示。

更近期的防点击劫持方法包括内容安全策略(CSP)和框架祖先指令。与XFO相比,CSP的一个主要优点是它允许Web服务器授权多个域名来框架其内容。然而,并不是所有浏览器都支持它。

CSP’s frame-ancestors指令接受三种类型的值:‘none,’阻止任何域显示内容;‘self,’只允许当前站点在框架中显示内容,或者一个带有通配符的URL列表,如‘*.some site.com’,‘https://www.example.com/index.html,’等,只允许在列表中的元素匹配的任何页面上进行框架。

如何保护自己免受点击劫持

在浏览时保持登录社交网络很方便,但如果这样做,你需要谨慎点击。你还应该注意你访问的网站,因为并不是所有网站都采取必要的措施来防止点击劫持。如果你对自己访问的网站不确定,不管它看起来有多诱人,你都不应该点击任何可疑的链接。

另一个需要注意的是你的浏览器版本。即使一个网站使用了我们之前提到的所有点击劫持预防头部,也并非所有浏览器都支持所有这些头部,所以确保使用你能获取到的最新版本,并且它支持反点击劫持功能。

常识是有效的防护点击劫持的设备。当你看到异常内容,包括一个朋友在任何社交网络上发布的链接时,在采取任何行动之前,你应该问自己这是否是你的朋友会发布的类型的内容。如果不是,你应该警告你的朋友,他或她可能已经成为了点击劫持的受害者。

最后一个建议:如果你是一个有影响力的人,或者在任何社交网络上有很多粉丝或朋友,你应该加倍注意,并且在网上采取负责任的行为。因为如果你成为点击劫持的受害者,攻击将最终影响到很多人。

类似文章