论文部分内容阅读
近几年,随着互联网及其应用不断发展,互联网安全态势也不断发展变化。各种针对Web应用的攻击形式不断出现,相对于传统的网络层攻击,这些攻击从应用层入手,可以轻易避开防火墙等传统安全防护设备,利用Web应用的漏洞,直接对Web应用展开攻击。这一类攻击行为往往怀有经济性企图,例如窃取用户账户密码信息、获取用户权限、欺骗用户进行某种操作等,其目的性更明确,影响范围广,危害较大。其中以点击劫持式的攻击形式尤其让人防不胜防。
相识Click Jacking
2008年,SecTheory公司的罗伯特·汉森(Robert Hansen)和白帽安全公司的杰罗麦亚·格罗斯曼(Jeremiah Grossman)首次提出了点击劫持漏洞(Click Jacking)。它是一种基于视觉欺骗的WEB会话劫持攻击,通过在网页的输入控件上覆盖一个不可见的框(Frame),当用户操作该控件时,实际上是在其之上的不可见的框 (Frame)中进行操作。
点击劫持的基本方法是允许攻击者强制Web用户在想要点击良性链接的时候,点击到恶意链接,攻击者可以构建一个恶意的Web页面,用以在用户的电脑上安装rootkit或者其他恶意软件,然后用看起来无害的网页呈现所有页面,比如,其中一个就含有基于Flash的游戏。当用户点击页面上的各种链接和按钮的时候,实际上点击的是被攻击者控制的隐藏的链接。
相知Click Jacking
伴随着WEB2.0的出现,以及HTML5的发展,很多应用操作都已经向WEB上移植,使基于WEB的攻击层出不穷,信息安全也开始过渡到以Web环境为基础、Web应用为载体新时代.相对于WEB安全十多年的发展史,点击劫持算是一种较新型的攻击手法,其发展十分迅速,在百度搜索点击劫持攻击结果中可以看到151000条记录。
点击劫持攻击刚被提出来的时候,主要攻击模式包括“鼠标拖放”劫持和“触摸劫(tap jacking)”两种。其中,一是结合Iframe、CSS等技术隐藏目标网页;二是结合社会工程学、JavaScript技术、Flash 以及AJAX 技术实现欺骗点击、鼠标跟随、鼠标点击劫持等,目的是欺骗和劫持用户鼠标点击目标按钮,并进行各种“后台”操作,获取用户敏感信息,控制摄像头等终端PC资源。例如,将一个弹出框外观设计成与QQ消息框一模一样的形式,用户潜意识中会不假思索点击查看最新的消息,从而触发恶意攻击。
拖放劫持
在Black Hat Europe 2010大会上,Paul Stone提出了基于点击劫持延伸的另外一种攻击模式——鼠标“拖放劫持”攻击。它具有以下四项特点:
操作简单:点击某个对象,并按住鼠标按钮不放,将鼠标移动到另一个区域,然后释放鼠标按钮将对象“放”在这里。
可见即可拖:浏览器中可以拖放对象一直在不断的增加,而且允许页面上任何控件成为放置目标,随着HTML5的发展,支持拖放操作的API函数也会相应增多而且功能强大。HTML5中拖动时依次触发以下事件:Dragstart、Drag、Dragend;放置时依次触发以下事件:Dragenter、Dragover、Dragleave或 Drop。
dataTransfer 对象:dataTransfer 对象使得自定义处理拖曳操作成为可能。dataTransfer对象可于源对象和目标对象中使用,通过event对象完成这种功能。典型用法是,setdata方法用于源事件,以指定格式给对象赋予数据;相应的,getData方法用于目标事件以便确保获取的数据和数据格式。
跨域操作:拖放不受同源策略限制,用户可以把一个域的内容拖放到另外一个不同的域,而这样的操作是“点击劫持”无法做到的。跨域操作可以拖放链接,这些链接中可能会有session key,token,password,也可以拖放内容,把页面拖拽到文本编辑模式中,这样就可以看到源代码。这些HTML源代码中可能会有type="hidden"等敏感信息。
触屏劫持
近几年,移动互联网发展十分迅速,通过智能移动终端上网的用户数已远超PC用户。针对现有智能移动设备,斯坦福大学的研究人员从攻击电脑浏览器的类似方式点击劫持引申出一个新的概念:触屏劫持。
当前的智能移动设备触屏即包含了PC上的鼠标和键盘全部功能,智能设备屏幕小,视觉攻击更容易。在智能移动设备触屏上,手指的点击与松开、拖与放都有特定的API函数接口,完全可以编写浏览器识别的WEB脚本。此外,针对移动终端的WEB应用安全还未得到足够重视(因为攻击事件还相对少),因此,点击劫持变种为触屏劫持(Tap jacking)并在触屏上实现是完全可能的。
防御Click Jacking
点击劫持是用巧妙的视觉欺骗的方式对WEB会话进行劫持。通过对点击劫持攻击模式分析,可以发现其实现必须满足以下几个前提:一是恶意网页必须能够以一定方式存在于正常网页中,这需要依赖Iframe等一些特定技术实现方式;二是客户端浏览器Cookie,攻击者能够利用用户身份进行恶意攻击;三是网页之上必须有欺骗鼠标操作交互,诱骗用户点击、拖放。针对以上特点,笔者设计实现对于点击劫持的防御解决方案。
点击劫持防御主要包含客户端防御和服务器端防御两个方面。对于客户端来说,目前几乎所有的浏览器都提供了防御点击劫持的安全机制,例如支持X-Frame-Options。对于客户端来说,及时更新浏览器、修复安全漏洞,提高个人安全意识,不随意访问、点击不安全的页面,都能够有效地防止这一类恶意攻击。
针对服务器端的防御方法,目前有三种:
支持X-Frame-Options。X-Frame-Options是由微软提出来的防御点击劫持的一种方法,WEB开发人员可以在HTML responses中加入一个X-Frame-Options字段,浏览器会根据X-Frame-Options字段中参数来判断页面是否可以被IFRAME标签包含,通过拒绝或限制iframe 载入,黑客就无法通过Iframe 隐藏特定的网页。
使用Frame Busting代码。这种方法是使用javascript脚本来对页面进行控制,达到页面无法被IFRAME标签包含。但是如果用户浏览器禁用JavaScript 脚本执行,则Frame Busting 代码也无法正常运行,所以这一方法只能提供有限的防御。
使用验证码认证用户。在网站页面上增加认证码来识别用户,确定是用户的发出的点击命令才执行。例如,在许多网站上设置的交互认证码,要求用户输入图形中的字符、选择相似图形等。
(作者单位:国网浙江杭州市萧山区供电公司)
相识Click Jacking
2008年,SecTheory公司的罗伯特·汉森(Robert Hansen)和白帽安全公司的杰罗麦亚·格罗斯曼(Jeremiah Grossman)首次提出了点击劫持漏洞(Click Jacking)。它是一种基于视觉欺骗的WEB会话劫持攻击,通过在网页的输入控件上覆盖一个不可见的框(Frame),当用户操作该控件时,实际上是在其之上的不可见的框 (Frame)中进行操作。
点击劫持的基本方法是允许攻击者强制Web用户在想要点击良性链接的时候,点击到恶意链接,攻击者可以构建一个恶意的Web页面,用以在用户的电脑上安装rootkit或者其他恶意软件,然后用看起来无害的网页呈现所有页面,比如,其中一个就含有基于Flash的游戏。当用户点击页面上的各种链接和按钮的时候,实际上点击的是被攻击者控制的隐藏的链接。
相知Click Jacking
伴随着WEB2.0的出现,以及HTML5的发展,很多应用操作都已经向WEB上移植,使基于WEB的攻击层出不穷,信息安全也开始过渡到以Web环境为基础、Web应用为载体新时代.相对于WEB安全十多年的发展史,点击劫持算是一种较新型的攻击手法,其发展十分迅速,在百度搜索点击劫持攻击结果中可以看到151000条记录。
点击劫持攻击刚被提出来的时候,主要攻击模式包括“鼠标拖放”劫持和“触摸劫(tap jacking)”两种。其中,一是结合Iframe、CSS等技术隐藏目标网页;二是结合社会工程学、JavaScript技术、Flash 以及AJAX 技术实现欺骗点击、鼠标跟随、鼠标点击劫持等,目的是欺骗和劫持用户鼠标点击目标按钮,并进行各种“后台”操作,获取用户敏感信息,控制摄像头等终端PC资源。例如,将一个弹出框外观设计成与QQ消息框一模一样的形式,用户潜意识中会不假思索点击查看最新的消息,从而触发恶意攻击。
拖放劫持
在Black Hat Europe 2010大会上,Paul Stone提出了基于点击劫持延伸的另外一种攻击模式——鼠标“拖放劫持”攻击。它具有以下四项特点:
操作简单:点击某个对象,并按住鼠标按钮不放,将鼠标移动到另一个区域,然后释放鼠标按钮将对象“放”在这里。
可见即可拖:浏览器中可以拖放对象一直在不断的增加,而且允许页面上任何控件成为放置目标,随着HTML5的发展,支持拖放操作的API函数也会相应增多而且功能强大。HTML5中拖动时依次触发以下事件:Dragstart、Drag、Dragend;放置时依次触发以下事件:Dragenter、Dragover、Dragleave或 Drop。
dataTransfer 对象:dataTransfer 对象使得自定义处理拖曳操作成为可能。dataTransfer对象可于源对象和目标对象中使用,通过event对象完成这种功能。典型用法是,setdata方法用于源事件,以指定格式给对象赋予数据;相应的,getData方法用于目标事件以便确保获取的数据和数据格式。
跨域操作:拖放不受同源策略限制,用户可以把一个域的内容拖放到另外一个不同的域,而这样的操作是“点击劫持”无法做到的。跨域操作可以拖放链接,这些链接中可能会有session key,token,password,也可以拖放内容,把页面拖拽到文本编辑模式中,这样就可以看到源代码。这些HTML源代码中可能会有type="hidden"等敏感信息。
触屏劫持
近几年,移动互联网发展十分迅速,通过智能移动终端上网的用户数已远超PC用户。针对现有智能移动设备,斯坦福大学的研究人员从攻击电脑浏览器的类似方式点击劫持引申出一个新的概念:触屏劫持。
当前的智能移动设备触屏即包含了PC上的鼠标和键盘全部功能,智能设备屏幕小,视觉攻击更容易。在智能移动设备触屏上,手指的点击与松开、拖与放都有特定的API函数接口,完全可以编写浏览器识别的WEB脚本。此外,针对移动终端的WEB应用安全还未得到足够重视(因为攻击事件还相对少),因此,点击劫持变种为触屏劫持(Tap jacking)并在触屏上实现是完全可能的。
防御Click Jacking
点击劫持是用巧妙的视觉欺骗的方式对WEB会话进行劫持。通过对点击劫持攻击模式分析,可以发现其实现必须满足以下几个前提:一是恶意网页必须能够以一定方式存在于正常网页中,这需要依赖Iframe等一些特定技术实现方式;二是客户端浏览器Cookie,攻击者能够利用用户身份进行恶意攻击;三是网页之上必须有欺骗鼠标操作交互,诱骗用户点击、拖放。针对以上特点,笔者设计实现对于点击劫持的防御解决方案。
点击劫持防御主要包含客户端防御和服务器端防御两个方面。对于客户端来说,目前几乎所有的浏览器都提供了防御点击劫持的安全机制,例如支持X-Frame-Options。对于客户端来说,及时更新浏览器、修复安全漏洞,提高个人安全意识,不随意访问、点击不安全的页面,都能够有效地防止这一类恶意攻击。
针对服务器端的防御方法,目前有三种:
支持X-Frame-Options。X-Frame-Options是由微软提出来的防御点击劫持的一种方法,WEB开发人员可以在HTML responses中加入一个X-Frame-Options字段,浏览器会根据X-Frame-Options字段中参数来判断页面是否可以被IFRAME标签包含,通过拒绝或限制iframe 载入,黑客就无法通过Iframe 隐藏特定的网页。
使用Frame Busting代码。这种方法是使用javascript脚本来对页面进行控制,达到页面无法被IFRAME标签包含。但是如果用户浏览器禁用JavaScript 脚本执行,则Frame Busting 代码也无法正常运行,所以这一方法只能提供有限的防御。
使用验证码认证用户。在网站页面上增加认证码来识别用户,确定是用户的发出的点击命令才执行。例如,在许多网站上设置的交互认证码,要求用户输入图形中的字符、选择相似图形等。
(作者单位:国网浙江杭州市萧山区供电公司)