锤子科技Smartisan OS云服务
内部研讨报告
1 概述
1.1 锤子科技
1.2 Smartisan OS及其云服务
1.3 TLS以及中间人攻击
2 测试过程修杰楷个人资料
2.1 测试过程概述任程伟主演的电影
2.2 测试工具
2.3 反编译关键应用
2.4 模拟器环境下加密流量劫持梁博家庭背景
2.5 针对JSON API的黑盒测试
3 安全缺陷
3.1 用户头像泄露
3.2 用户个人信息泄露
3.3 用户同步令牌泄露
3.4 安全缺陷成因分析及临时解决方案梅艳芳葬礼刘德华
4 总结
1 概述
1.1 锤子科技
本篇报告阐述了锤子科技(北京)有限公司出品的Smartisan OS手机操作系统中云服务存在的安全缺陷,测试过程,以及缺陷导致的危害。并从公司管理的角度指出了信息安全,以及一只公司专属的安全团队对锤子科技的重要性。
由于本篇报告包含技术细节过多,因此仅作内部交流使用。出于对锤子科技声誉的保护以及法律责任考虑,本报告应高度保密,不得外传。
1.2 Smartisan OS及其云服务
Smartisan OS是锤子科技推出的基于Android定制的移动操作系统。该系统于2013年3月27日在北京国家会议中心的“锤子智能手机操作系统发布会”上,由锤子科技的创始人罗永浩首次公布。该操作系统目前由锤子科技官方适配四款手机。由于2014年5月20日发布会的临近,目前该系统版本号非常接近1.0.0.0,但是并没有除优化便签等应用用户体验外的更大改进。
Smartisan OS在2014年4月11日发布的V0.9.9.7 alpha版本中新增了云服务功能,用来供用户同步联系人,日历以及便签到锤子科技的服务器上。
目前上述云服务使用基于Nginx定制的scws/2.4.9作为Web服务器。scws即Smartisan Cloud Web Server之意。同时,上述云服务使用锤子科技自行颁发的X.509证书以及TLS 1.2协议对访问流量进行加密。打羽毛球的技巧
1.3 TLS以及中间人攻击
TLS,即Transport Layer Security,传输层安全协议,是SSL(安全套接字)的继任者,二者均使用
公开密钥技术对网络流量进行非对称加密。
中间人攻击,即Man-in-the-middle Attack,是指攻击者分别与通信的两端建立连接,转发两者之间的流量,从而窃听通信内容的攻击方式。而TLS和SSL有防范中间人攻击的机制。在本次测试过程中,实际上更多地使用了中间人转发通信内容的方式获取锤子科技云服务的加密流量的明文以进行分析,而并非窃听他人的通信。
由于锤子科技云服务采用了TLS加密其HTTP流量,因此,在中间人代理服务器与锤子科技云服务通信时,流量采用锤子科技的X.509证书加密,而在云服务客户端程序与中间人代理服务器通信时,流量采用代理服务器自行生成的X.509证书加密。于是,中间人代理服务器便能够监听并篡改云服务客户端程序和云服务服务器之间的通信。
2测试过程
2.1 测试过程概述
本次针对锤子科技云服务(下称云服务)的测试主要由三部分组成:反编译关键应用,模拟器环境下加密流量劫持以及针对JSON API的黑盒测试。实际上,上述三部分并没有如此清晰的划分,而是一个不断获取新的信息,不断深入挖掘安全缺陷的过程。第一部分,即反编译关键应用,揭示了云服务的
基本请求格式以及URL。第二部分探索了在Android模拟器环境下调试流量加密应用的基本原理和方法。第三部分通过上述一、二部分收集的信息,对云服务的JSON API进行了一系列安全检测,并发现了安全缺陷。
2.2 测试工具
本次测试中用到的工具主要有Poster,Android模拟器和mitmproxy。
Poster是Firefox浏览器的一款插件。通过这款插件,用户可以定义HTTP请求的几乎一切参数,从请求URL到请求头一应俱全。除常见的GET,POST以及PUT等HTTP方法外,Poster 还支持HEAD,MOVE等不常用的HTTP方法。
本次测试中使用的Android模拟器由锤子科技论坛网友使用Google Android SDK中的模拟器,通过打包Smartisan OS的系统文件并替换模拟器中的system.img,定制而成,运行早期Smartisan OS。通过修改设置中移动网络的APN(接入点名称),配置HTTP代理服务器,可以实现流量转发,从而达到分析流量的目的。
mitmproxy,即Man-in-the-Middle Proxy。顾名思义,mitmproxy是一款通过中间人攻击的原理来进行流量分析和修改的代理服务器软件。mitmproxy使用Python开发,支持针对TLS 以及SSL的加密流量
劫持。mitmproxy有透明代理,HTTP代理等多种模式。在HTTP代理模式下可以很好地配合Android模拟器工作。同时,mitmproxy对TLS以及SSL加密流量的中间人劫持功能也使得针对加密的HTTP流量的分析成为可能。
2.3 反编译关键应用
在本次测试的第一部分,由于受限于硬件条件,无法进行真机调试,因此从静态分析入手,即通过分析云服务客户端程序的代码,而不是通过实际运行程序,来获得云服务系统的相关信息。
在下载锤子科技上的V0.9.9.7 alpha版压缩包后,解压system目录下的CloudServiceSmartisan.apk,并使用通用的apk反编译工具对其进行反编译,生成jar文件。而后使用Java Decompiler 查看由字节码反编译而成的源代码。
图  1 CloudServiceSmartisan.apk登录相关部分代码
在名为CommonHttpUtils的类中可以看到一些反编译错误,以及认证用的名为Ticket的HTTP头,如下图所示。
闫妮的老公是谁图  2 GET请求相关代码
而在NoteTask类中,可以看到更新,新建,删除便签的操作细节。如下图所示,创建便签操作的请求是一个发往api.sync.cloud.smartisan/USER_ID/notes.json的PUT请求。
图  3 NoteTask类中上传便签相关代码
2.4 模拟器环境下加密流量劫持
在本次测试的第二部分,上文所述Android模拟器,即“锤子系统电脑版”,被用来运行第一部分中所提到的云服务客户端程序,即CloudServiceSmartisan.apk。同时,一台运行Ubuntu操作系统的虚拟机被用来运行mitmproxy,作为Android模拟器的HTTP代理服务器以劫持云服务客户端程序与服务器的通信。
启动“锤子系统电脑版”后发现,这款Android模拟器的所载入的Smartisan OS发布于2013年7月,并不具有V0.9.9.7 alpha版本的云服务功能。由于在使用最新版的Smartisan OS 重新打包system.img文件后,模拟器并不能正常启动,因此转而使用Android系统调试工具adb安装CloudServiceSmartisan.apk。安装成功后可在“设置”中选择“添加账户”来登录或注册云服务账户。