APP下载

面向LBS服务的APP数据安全风险研究

2016-12-28严栋孜王轶骏

通信技术 2016年12期
关键词:源码攻击者逆向

严栋孜,王轶骏,薛 质,胡 玲

(上海交通大学 电子信息与电气工程学院,上海 200240)

面向LBS服务的APP数据安全风险研究

严栋孜,王轶骏,薛 质,胡 玲

(上海交通大学 电子信息与电气工程学院,上海 200240)

随着移动终端的功能日益强大,各种APP应用已经深入人们日常生活的各个方面。尤其是随着基于位置服务(Location Based Service,LBS)的迅猛发展,共享思维让人们在分享自己的状态、获得他人的信息更方便的同时,却忽视了APP应用可能存在的隐私泄露的安全隐患。因此,对基于LBS提供服务的APP应用进行安全风险分析,通过逆向工程、代码定位、功能重构等技术,获得用户的个人信息和位置信息,进而分析获得用户隐私数据,并针对这类数据泄露风险提出了安全加固建议。

LBS;逆向工程;功能重构;数据泄露

0 引 言

随着移动通讯技术的迅猛发展,手机等移动终端的使用越来越广泛。除了传统的通话功能外,微信、微博、打车软件、天气预报、各种支付类应用等,已经成为日常生活中必不可少的重要工具。尤其是基于位置服务的兴起,让人们在分享个人信息、获得便捷服务的同时,也带来了大量隐藏的信息泄露风险。

目前,常见的手机应用防护主要针对外部攻击和软件安全,通常忽视了APP应用可能存在的隐私泄露隐患。本文对基于LBS提供服务的APP应用进行安全风险分析,通过逆向工程、代码定位、功能重构等技术,获得用户的个人信息和位置信息,进而分析获得用户隐私数据,并针对这类数据泄露风险提出安全加固建议。

1 研究背景及主要内容

1.1 移动终端APP应用概述

对于任何APP应用,都需要对应的移动终端平台支撑开发和运行。目前,主流移动终端平台和APP格式如下:

(1)苹果的IOS系统,APP格式有IPA、PXL、DEB,这类手机在市场占有率约10%。

(2)Android系统,APP格式主要为APK。2016上半年数据显示,Android系统占全球移动智能手机系统86%的市场份额[1]。

(3)其他一些系统,包括微软的Windows Phone系统,APP格式为XAP;诺基亚的Symbian系统,APP格式为SIS等。这些系统加起来的市场占有率不足5%。

因此,本文把Android系统的APP应用作为主要研究对象进行阐述。

1.2 LBS应用及安全防护概述

基于位置的服务(Location Based Service,LBS)包括两层含义。第一层含义是确定移动设备或用户所在的地理位置;第二层含义是提供与位置相关的各类信息服务,指与定位相关的各类服务系统,简称“定位服务”,也称“移动定位服务”系统。基于LBS的APP应用使人们随时随地可以获得和他当前位置有关的各种信息和服务,同时通过该服务告诉周围人自己的当前信息[2]。这些服务可以提高人们的生活效率,节约大量的时间和精力,又满足了人们分享生活状态的欲望。

为了要获得更好的LBS服务,用户需要提供更精确的位置信息,这势必会带来一定的安全风险[3]。在基于位置的服务中,用户如果将自己的位置暴露给他人,将会严重危害到用户的位置隐私和轨迹隐私。这其中包括用户主动或被动提交的个人位置信息。由于位置信息与用户身份信息具有天然的联系,将造成因位置信息暴露而带来的用户身份等敏感信息的泄露。

目前,国内外机构对LBS系统用户信息的安全保护主要针对两个方面。一方面是位置隐私保护,如单快照隐私(Snapshot)保护[4],即正常用户在使用LBS服务时,他当前的准确位置不泄漏于未授权的人或组织;另一方面是轨迹隐私保护,主要有两种保护方式。一是位置泛化法,利用隐私的k-匿名原理[5],把轨迹上需要处理的位置采样点经过匿名算法处理后,变为模糊的匿名区域,从而达到隐私保护的要求;二是假数据h法,通过添加若干的假轨迹数据来对原始的轨迹进行模糊处理,但同时又要保证被干扰或模糊化的轨迹的失真程度在一定范围内。

1.3 本文研究内容

上述防护措施主要是针对攻击者从外部对APP系统或用户系统进行攻击的情况。不论是位置泛化还是假数据参杂,都是让攻击者无法获得准确的信息。但是,如果能够通过APP本身获得真实的数据,并配合模拟器批量自动化获取用户真实数据,将带来不可避免的隐私泄露隐患。

本文面向LBS服务的移动终端APP进行数据安全风险的研究和分析。具体的途径如下:首先通过逆向技术破解APP的可执行文件,获得可读的源代码;接着,通过分析APP的网络通讯方式和协议字段,并结合APP源码的分析查找,定位到相应的核心代码函数;然后,对部分软件加密防护措施进行破解,如so加密、dex加密,获得所需要的函数代码源码;最终,绕过安全限制,重新打包成新的APP可执行程序。该程序仅包含与LBS数据相关的模块,称为虚拟APP应用程序。通过运行虚拟APP应用程序,欺骗APP服务器让它将某地附近的真实数据推送给虚拟用户,实现用户轨迹信息的批量获取。这也验证了这类APP的安全风险。本文最后针对性地提出了四点防护建议,可有效提高面向LBS服务的APP应用安全性,降低用户隐私泄露的可能性。

2 安全风险的研究方法

结合本课题的研究内容,本文将从以下几个技术层面来分析和阐述面向LBS服务器的移动终端APP的数据安全风险。

APP数据安全分析流程主要分五个步骤,如图1所示。一是对APP程序进行逆向分析,通过反汇编获得smali源码,而反汇编过程中可能会遇到dex文件加密保护;二是对APP与服务器之间的通讯协议进行分析,根据数据包内容获得与核心代码相关的关键字;三是从海量APP程序源码中寻找与LBS服务相关的smali代码函数并设法获取,获取过程中可能会遇到so文件加密保护;四是将获得的功能函数smali代码转化为逻辑代码,并用JAVA语言重新编写成可执行程序,同时将与LBS服务相关的功能单独实现并添加位置参数等函数;五是将重新用JAVA编写的虚拟APP程序在模拟器上执行,实现LBS数据获取。下文将对每个步骤进行详细说明。

2.1 APP可执行文件的逆向分析

本课题重点以Android平台上的应用程序为研究对象,因此将首先阐述APK文件的结构,然后介绍APK的逆向技术。

2.1.1 APK文件的结构

逆向工程之前,首先要对Android应用程序包APK进行分析[6]。任何一个Android应用程序想要在Android平台上运行,就要进行编译,然后被打包成APK文件进行安装。APK包本质是压缩文件,其中包含以下几个文件:

(1)META-INF,存放签名信息,保证应用程序包的完整性和安全性;

(2)RES文件夹,存放图片之类的资源文件;

(3)AndroidManifest.xml,用来描述整个应用的总体结构,包括名字、版本、权限和引用等信息;

(4)classes.dex,JAVA源码编译后生成的Dalvik字节码文件,一般无法直接对其进行处理;

(5)resources.arsc,编译后的二进制资源文件。

2.1.2 APK逆向工程分析

逆向工程也称作反向工程(Reverse Engineering)[7],通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素。某些特定情况下,甚至可能推导出源代码。

APK逆向工程主要有两种方法[8]。一种方法是把classes.dex文件反编译为java代码,使用的工具是dex2jar。反编译成功后的代码,可以通过程序阅读。这种方法的优点是转化后的java代码清楚易懂,但是如果需要添加代码,修改后的文件不能直接打包成APK文件,并且在转换过程中可能出现代码的混乱。另一种方法是把classes.dex文件反编译为smali代码。虽然smali语言已经具有较高的可读性,但是和C、java等自然语言相比还有所差距,且代码量往往庞大,全部理解需要花费大量时间。因此,通过寻找关键字段在smali代码中加入断点,重新打包生成新的APK文件[9]。利用程序中的断点确定LBS应用对应的功能函数,使用工具JEB将上一步中确定的和LBS相关的smali代码转化成JAVA代码。根据JAVA代码的逻辑重新编写构建功能,最后重新封装入APK包并在模拟器上运行,通过设定虚拟地理位置,实现用户LBS信息的获取。本文采取了第二种方法。

在逆向过程中,可能会遇到dex文件的加密保护。dex文件加密基本原理是在jni层使用动态加载技术加密文件classes.dex。目前,主流加密方式都是将dex函数进行隐藏,当程序运行的时候释放进内存中运行。为了能够获得与LBS服务相关的smail代码,需要在AndroidManifest.xml中加入调试指令,使用DDMS和MAT进行内存跟踪,将原本隐藏的dex函数从内存中导出,然后转化成完整的dex函数逻辑顺序。同时,使用MAT等工具对内存信息进行分析,提取隐藏的dex代码并封装,将封装好的dex代码信息写入APK中重新打包。这样就能够绕过dex文件加密技术。

2.2 APP通讯方式

主流的APP通讯方式有两种:TCP和HTTP。TCP协议通讯的APP现在越来越少,针对TCP协议,主要通过动态调试的方式进行分析。这里主要对用HTTP协议传输通信的APP应用,通过抓包工具进行协议分析,寻找通讯过程中的关键字,为下一步分析smali源码寻找LBS相关代码打下基础。

使用Fiddler工具对APP应用的通讯过程进行抓包分析。Android程序发起LBS服务请求,通过HTTP报文发起请求。一个HTTP请求报文由三部分组成:请求行、消息头部和请求正文。请求行由请求方法字段、URL字段和HTTP协议版本字段组成,其中URL字段是一种特殊类型的统一资源标识符,包含用于查找某个资源的足够信息,格式如下:http∶//host["∶"port][abs_path]。请求报文一般为明文传输,分析URL字段中的内容信息,寻找APP程序与服务器交换数据时所用的关键字段,而这些关键字段会暴露APP源码函数的信息。因此,可以通过Fiddler工具的Inspectors功能模块对请求头部分数据进行查看,通过记录URL字段内的关键字,确认APP内源码可能与LBS服务相关的字段,以大幅提高核心代码定位的效率。

2.3 核心代码定位及获取

通过上述两个步骤获得APP程序的smali源码和与LBS服务相关的关键字段,就能开始定位APP程序与服务器进行LBS服务交互的核心代码。定位核心代码主要通过在smali源码中加入DEBUG信号,利用调试等待信号,确定APP程序在LBS服务进程中调用了哪些函数。断点的设定一般在配置文件AndroidManifest.xml中,在通讯协议关键字后面加入DEBUG标识符,并根据标识符位置对应的smali源码后面插入调试等待信号。将修改过的smali源码重新打包成可执行APP程序,通过运行修改过的APP程序,可以方便定位到smali源码内与LBS相关的功能函数。

找到具体函数位置并不能直接提取使用。APP程序开发者会对smali源码进行安全加固措施,以增加攻击者获得函数源码的代价。比较常见的加固手段有so文件加密。so文件加密就是将关键字或代码隐藏在so库里进行封装,然后通过函数调用。这样在反汇编的时候就无法搜索到任何有用信息,让攻击者难以轻易获得APP所有函数信息。通过一些断点调试方法,可以破解该加密措施,具体破解方法,如图2所示。

图2 so文件加密破解流程

具体的,so文件加密破解流程如下:

(1)根据之前逆向工程,提取出APK的so文件;

(2)使用IDA工具加载对应的so文件,配合smali调试工具,在so文件主入口处增加断点;

(3)运行程序触发断点,根据断点位置进行so代码单步调式;

(4)根据调试内容,了解核心函数在调用so文件内代码的位置和顺序,并重新确定函数逻辑结构;

(5)根据单步调试运行顺序和逻辑,将相关smali源码提取出,并使用自然语言对函数逻辑重新编写,以确保功能保持一致。

2.4 功能代码函数重构

获取核心函数的smali源码并了解其逻辑功能结构,就能用JAVA重新编写函数功能。Smali语言是Davlik的寄存器语言,本身难以直接阅读并进行大段代码修改重构。因此,利用JAVA语言将smali代码逻辑转换成简单易懂的自然语言代码,就能实现LBS服务核心函数功能的独立运行。

在将smali代码转换JAVA代码的过程中,JAVA程序会使用jni调用系统底层函数。jni的调用是APP制作者为了提高APP的执行效率,提高重构难度使用的手段。因此,在重构过程中,要反复调试JAVA代码,并确保所有环境变量与原值相同。同时,为了能够实现用户轨迹定点获取,通过增加GPS位置信息参数设置模块,并将JAVA代码打包生成一个新的只用来获取LBS数据的APP应用程序,即虚拟APP应用。

2.5 运行虚拟APP

通过运行虚拟APP程序,模拟真实APP程序与真实服务器进行通讯,并通过自主设置GPS位置信息,让服务器误以为在某地有一个真实的移动用户终端存在,从而将该终端附近的真实数据发送给虚拟APP,实现LBS数据的定点获取。获取的数据包含所有用户能看到的信息和部分APP程序与服务器交互的内部信息,因此存在严重的安全风险隐患。

3 安全风险的实例分析

为了贴近实际应用环境,本研究团队下载了国内某款打车软件Android系统安装的APP程序,并根据上述分析的安全漏洞进行风险分析。

具体流程如下:

(1)寻找APK通讯数据包,确定LBS服务关键字。如图3所示,利用抓包工具Fiddler Web Debugger,对APP与服务器通讯的数据包进行抓取。通过观察请求报文中URL内容信息,确定与LBS服务相关的关键字。

图3 通讯协议关键字分析

(2)将APK文件通过Apktool工具反编译成smali源码,执行界面如图4所示。

图4 smali代码提取

(3)在smali源码中加入DEBUG信号代码,并重新打包为APK安装程序,为单步调试打下基础。

断点调式代码部分如下:

(4)利用断点对APP应用进行单步调试,确定与LBS服务相关的smali代码函数位置,以及函数本身、函数之间的逻辑关系。提取相关smali源码并单独生成smali文件。

(5)通过JEB工具,将上一步找到的smali语言转化为JAVA语言,将其加入虚拟位置信息模块,重新编译生成新的虚拟APP程序。

(6)将重新编写的JAVA程序在模拟器上运行,设定所需要的经纬度信息,获取该地点附近APP用户的LBS信息。以国内某打车软件为例,通过位置虚拟技术,模拟打车用户和司机用户分别获得了该地区的LBS数据,包括任务坐标纬度、任务坐标经度、订单号、乘客id、乘客所在纬度、乘客所在经度、乘客出发地、乘客目的地等详细信息,依次如表1、表2所示。

表1 XX打车乘客订单信息

表2 XX打车车主信息

4 安全风险的防护建议

由于一般APP程序不会对上述风险进行防护,尤其在没有任何反逆向反调试防护的基础上,用户的个人信息将受到严重威胁。同时,利用位置虚拟技术打破了传统地域界限,让攻击者获得任何地方任何人的数据成为可能。即使增加针对逆向工程的防护措施,如果不加识别地推送LBS服务数据的机制,通过欺骗APP应用服务器,利用虚拟的位置信息也可轻易获得目标地区的用户LBS信息。针对上述安全漏洞及防护风险,建议通过以下几个方面加强安全防护,以控制风险扩散。

一是对于具有LBS服务功能的应用,增加识别移动终端唯一标识的认证过程。通过发送额外信息进行认证反馈,增加非真实用户获得真实数据的难度。同时,提高移动设备硬件识别能力,针对模拟器等工具制定相对应的安全策略。

二是针对移动终端APP用户访问情况进行分类管理,根据访问的频率判断是否为机器自动访问。如果发现频率过快或者用户地理位置有明显异常情况,则需要限制当前用户进行访问。同时,通过绑定IP地址、移动终端设备号等唯一标识信息,杜绝可能发生的利用大量虚拟用户干扰服务器的情况。

三是一些移动终端APP在访问服务器时会提供一个密钥,攻击者会想办法写一套获取key的下载程序。这个程序首先执行获取一个key值,再将key值传入APP破解程序中使用。为此,需要设立一套安全性更高的PKI-CA分发系统,实行动态密钥管理机制,同时限制每台移动终端申请密钥的时间和次数,以此降低安全风险。

四是在采取TCP或HTTP进行传输数据时,攻击者通常会通过返回POST值或GET值来获取所需要的信息,或者通过抓包工具进行协议分析。在HTTP协议中有两种传值方法,一个post传值,一个get传值。通过URL地址将值传过去,获取返回的数据。对此,需要对这两方面进行限制,通过正则表达式严格控制返回值的大小、长度和类型,让攻击者难以获得想要的信息。通过加密协议中的关键字段,让攻击者破解难度增加。

5 结 语

对于APP逆向工程的防护措施一直是近几年研究的热点,用户信息、隐私数据的保护更是安全加固首要关注的重点。然而,由于LBS服务的特性,用户需要将自己具体的位置信息和轨迹信息发送给他人以换来高效便捷的服务,但这些明文信息很容易成为攻击者关注的目标。现今,国外许多基于LBS服务的APP应用越来越关注用户数据保密,包括将用户和硬件唯一标识绑定来避免多个用户同一设备的情况,或者增加用户行为管理,对可疑的用户群或用户行为进行行为鉴别,并根据定制的策略实时预警,主动反应。然而,这些在国内的APP开发者或运行商中少有人关注。

虽然APP程序不断提高自身安全性,但是攻击者仍在寻找更隐蔽的攻击方式和数据泄露威胁。如何在利用LBS特点提供正常服务的同时,防止攻击者刻意收集大量LBS用户位置数据和轨迹数据,是需要不断研究的课题。因此,需要更深入研究基于LBS服务的APP应用系统特性及缺陷,寻找更适合、更有效的防护措施,从而将此类APP应用的安全性提升至更高层面。

[1] Winkler W E.Advanced Methods for Record Linking. Section on Survey Research Methods(American Statistical Association)[M].US:US Bureau of the Census,Statistical Research Division,1994.

[2] 腾讯数码.苹果小心了!安卓系统市场占有率竟比iOS高了这么多[EB/OL].(2016-08-22)[2016-08-25]. http://xw.qq.com/digi_tech/20160822034526/ DIG2016082203452600. Tencent Digital.Apple is Careful!Android System Market Share Actually Higher Than the iOS[EB/OL]. (2016-08-22)[2016-08-25].http://xw.qq.com/digi_ tech/20160822034526/DIG2016082203452600.

[3] GOODSTEIN L.Location based Service:Analysis of Carrier Spending[C].Devices and Applications for Handset-based and Telematics Services.New York:ABI Research,2004.

[4] Xu T,Cai Y.Feeling-based Location Privacy Protection for Location-based Services[C].New York:Proceedings of the 16th ACM conference on Computer and communications security,2009.

[5] Ghinita G,Zhao K,Papadias D,et al.A Reciprocal Framework for Spatial K-anonymity[J].Information Systems,2010,35(03):299-314.

[6] 贾菲,刘威.基于Android平台恶意代码逆向分析技术的研究[J].网络信息安全,2012(04):61-64. JIA Fei,LIU Wei.Research on the Reverse Analysis Technology of Malicious Code based on Android Platform[J]. Network Information Security,2012(04):61-64.

[7] 严秀,李龙澍.软件逆向工程技术研究[J].计算机技术与发展,2009(04):22-23. YAN Xiu,LI Long-shu.Research on Software Reverse Engineering Technology[J].Computer Technology and Development,2009(04):22-23.

[8] 丰生强.Android软件安全与逆向分析[M].北京:人民邮电出版社,2013. FENG Sheng-qiang.Android Software Security and Reverse Analysis[M].BeiJing:BeiJing Posts and Telecommunications Press,2013.

[9] ZHOU Ya-jin,JIANG Xi-xian.Dissecting Android Malware:Characterization and Evolution[C].2012 IEEE Symposium on Security and Privacy,2012:95-109.

严栋孜(1986—),男,硕士,助理工程师,主要研究方向为信息安全、网络攻防;

王轶骏(1980—),男,硕士,讲师,主要研究方向为操作系统安全机制;

薛 质(1971—),男,博士,教授,主要研究方向为计算机通信网、信息安全、网络安全攻防与评测;

胡 玲(1987—),女,硕士,工程师,主要研究方向为信息安全、数据管理。

Data Security Risk of LBS Application

YAN Dong-zi, WANG Yi-jun, XUE Zhi, HU Ling
(School of Electronic, Information and Electrical Engineering, Shanghai Jiaotong University, Shanghai 200240, China)

With the increasingly powerful mobile terminal, a variety of APP applications have seeped into every aspect of people's daily lives. Especially with the rapid development of location-based service (Location Based Service, referred to as LBS), the people with share thinking usually ignore the security risk of privacy breach in APP application while sharing their own state and conveniently acguiring others, information. For those reasons, the security risk analysis is done on the application based on LBS. And aiming at access to personal information and the location information of the user via reverse engineering, code location and function reconstruction, and further analysis on acguired private data of the user, some suggestions are proposed for security strengthening in prevention of data leakage risk.

location-based service; reverse engineering; code location; data leakage

TP393

A

1002-0802(2016)-12-1702-07

10.3969/j.issn.1002-0802.2016.12.024

2016-08-15

2016-11-18 Received date:2016-08-15;Revised date:2016-11-18

猜你喜欢

源码攻击者逆向
逆向而行
面向数据可靠传输的高译码率带反馈的LT码
国内一站式工程设备租赁平台众能联合完成C2、C3两轮融资
浅谈开源操作系统的历史
企业如何保护源码
逆向思维天地宽
正面迎接批判
正面迎接批判
有限次重复博弈下的网络攻击行为研究