基于Binder的Android支付信息安全的研究

时间:2018-08-02 编辑整理:刘子煜 吴健学 来源:早发表网

摘要:随着移动互联网的发展,Android手机平台内越来越多的APP具有移动支付功能。移动支付涉及到金融交易,支付信息安全显得尤为重要。本文分析了AndroidBinder机制,通过将监控代码动态注入目标模块,对进程间的通信数据进行提取,通过比对既有信息,分析是否有恶意软件窃取目标APP的用户隐私信息。在支付环节之前将检测结果对用户给予提示,且对支付过程无较大影响,一定程度上保障了用户支付信息的安全。

关键词:Android系统Binder动态注入信息提取

1  引言

基于Android系统庞大的使用人群,各应用公司开发了各式各样的APP为人们的生活提供了便利。但随着Android应用数量的急剧上升,应用质量参差不齐,恶意软件严重威胁着终端用户的财产和隐私安全,也制约着移动终端应用的进一步发展。根据360互联网安全中心发布的《2016年安卓恶意软件专题报告》,2016年全年,Android平台新增恶意程序样本1403.3万个,平均每天新增3.8万恶意程序样本。

随着手机支付功能的普遍化,恶意代码藏匿于普通应用程序盗取用户账户信息和密码的现象时有发生,恶意程序威胁着正常的支付功能,泄露了用户的敏感信息,对用户直接或间接造成经济损失。手机支付越来越受到人们重视,使用的场景越来越多,但手机安全却阻碍其突破性发展。

目前应用市场上存在手机管家,手机安全卫士等安全应用来管理和保护用户的手机,但安装这些安全应用会对手机产生一定的额外开销,且针对特定APP中的敏感信息无法做到精准的保护。本文针对这一现象,为Android系统中涉及支付功能的应用提出一种支付信息的保护方式,通过比对进程间的通信数据,找到获取隐私信息的恶意APP,提醒用户进行处理,以此保障用户的信息安全。

2  Binder通信机制

Android系统是由谷歌公司基于Linux内核开发的智能操作系统,在Linux系统中,进程间的通信机制有很多种,包括pipe(管道)通信,socket(套接字)通信,signal(信号)通信这些传统IPCInter Process Communication进程间通信)。Android为每个APP分配了一个区分进程身份的属性———UID,传统的IPC只能由用户在数据包里填入UID/PID,但这样容易被恶意程序所利用。由IPC机制在内核中添加的属性才是最可靠的。Binder的出现满足了Android对通信方式,传输性能和安全性的要求,与其他进程间通信方式相比,Binder通信机制更安全、简洁、高效、快速,消耗的内存资源更少。

Binder通信是Android系统的基础通信机制,转发应用之间的通信信息。Binder在完成本身转发信息的功能之外,在底层拷贝应用之间的通信信息,用户在使用手机过程中并不会察觉到。BinderAndroid的各个版本中很少变动,因此基于Binder机制的方案便于移植到Android的各版本,具有很好的兼容性,可实现更多种类Android移动终端的覆盖。

1表示了Binder基于Client-Server的通信模式,传输过程只需一次拷贝,为发送方添加UID/PID身份,既支持实名Binder也支持匿名Binder,安全性高。BinderCS架构由四大部分组成,分别是服务端、客户端、服务管理器和内核空间里的Binder驱动。

 

服务端Server提供服务,一个或多个Client客户端向服务发起请求,通信过程由Binder接口实现,数据的交互与处理在Binder驱动中完成。服务需在服务管理器Service Manager中进行注册,Service Manager是Android系统中的守护进程,负责监听客户端的请求。

3  系统设计与实现

3.1  整体设计方案

本方案设计的支付信息保护模块依托于APP的支付功能,整体流程如图2所示。

当用户生成订单信息时,支付信息保护模块同时开始工作,从生成敏感信息时开始监控信息的流向。当用户发起支付时,客户端首先调用APP后台服务器接口,APP向后台接口传入等待付款的订单号,支付方式及一系列业务相关的参数,服务器收到请求后返回JSON格式数据。若请求成功,JSON数据里包括服务器根据订单号查询到的商品信息,交易的标题,订单金额等等。客户端收到成功的指令后,根据用户选择的支付方式准备调用相应的第三方支付平台的接口。根据支付平台的要求,需要传入JSON格式数据里的敏感信息。

在敏感信息的流动过程中,支付信息保护模块同步检测敏感信息是否被其他恶意应用窃取,支付环境是否安全,将检测结果在页面予以显示,告知用户。支付信息保护模块同步覆盖支付的整个流程。

 

3.2  代码注入

代码注入是Linux系统提供的Ptrace系统调用,在目标内存空间进行hook操作。Android的动态链接器为Linker,可以实现ELF格式链接库的加载与链接。Ptrace使用PTRACE_ATTACH模式跟踪正在运行的进程,使其变为可控子进。具体过程如下:

1)调用Ptrace的PTRACE_ATTACH模式关联到目标进程;

2)获取目标进程的子进程、内存及寄存器信息并保存;

3)装载指定的共享库,将代码写入到目标进程上完成加载;

4)将函数重定向,使用新函数。主要修改PLT表和GOT表;

5)调用Ptrace的PTRACE_DETACH脱离目标进程。

当客户端生成订单信息时,系统同时调用支付信息保护模块,首先将监控代码注入到对应模块。当目标进程被动态注入后,执行ioctl函数(i/o通道控制函数)时会跳到共享库中对应的重定向函数hooked_ioctl位置上执行。利用栏截到的ioctl函数返回的数据对进程间通信的数据进行解析,从而提取出应用程序在运行时刻的行为参数,可以进行提前预判和管理。ioctl函数的调用方式为intioctlintfdintcmdstructbinder_write_read*bwr),第一个参数是文件描述符;cmd是用户程序对设备的控制命令,一般分为GET(从内核读数据)、SET(向内核写数据)等命令;第三个参数为类型为binder_write_read结构的数据流指针。

由Binder通信机制,应用程序使用服务时会优先同Service Manager进程通信来获取相应服务信息。Service Manager的Binder进程间通信数据流采用结构体binder_transaction_data表示,保存在结构体binder_write_read中的write_bufferread_buffer所指向的字节缓冲区域。在应用同Service Manager进行交互时,Service Manager用read_buffer记录应用的IPC数据。所以接下来要通过结构体binder_transaction_data来解析read_buffer中指向的缓冲区域的数据。

3.3  数据提取与比较

binder_transaction_data包含成员变量targettarget是一个联合体,表示一个目标Binder对象,Binder驱动根据其中的handle找到应该由哪个进程处理该事件;code是一个命令,它描述了Binder对象执行的操作,当应用程序需要Service Manager来查询相应的服务时,codeGET_SERVICE_TRANSACTIONsender_pidsender_euid为发起请求进程的PIDUID,用于识别应用的身份;data是一个联合体,存放数据,data_size表示数据的大小,其结构体ptr中的buffer保存通信数据。下面的伪代码用于提取buffer中的数据。

 

解析完参数信息后,创建一个子线程将数据通过UNIX套接字的方式传入上层。首先填写地址创建socketsocket监听是否有连接,packet更新后被发送到socket接收端。

将数据传到客户端应用层,编码循环遍历敏感数据。检测提取的通信数据是否包含敏感支付信息。本次实验的敏感数据包括手机号,手机MAC地址,IMEI号,支付接口传输的用户名,订单号,支付账号等等。

4  应用测试

在Ubuntu操作系统中安装配置Android集成开发工具Android Studio,在工具中新建一个购物应用,然后按照第三方支付平台的要求集成APP支付功能。此时通过开发工具打包生成不含支付信息保护模块的基本应用TEST_BASEapk

在基本应用的基础上,动态注入由监控代码生成的库文件,再次打包生成含支付信息保护模块TEST_BONUSapk

测试时将Android模拟器和两部手机作为测试平台。

在测试平台上安装TEST_BONUSapk,作为待测试APP,同时安装三个有已知恶意行为的APP和三个健康的APP。在测试APP中模拟购物,生成订单,发起支付。支付信息保护模块对用户的提示信息如图3所示。

 

综合测试结果如表1所示,“√”表示在十轮模拟支付环节中,支付信息保护模块成功检测出对应的恶意程序。

同时为了测试敏感信息提取和比对过程对用户的影响,我们在相同的环境分别安装TEST_BASEapkTEST_BONUSapk做对比实验。表1中额外耗时即为加入支付保障模块后,信息的提取与检测对用户操作的平均影响时间。

 

5  结论

针对Android手机支付时容易被盗取个人信息的情况,对AndroidBinder机制进行研究,实现了一个Android进程间通信数据提取分析的方法。通过对目标进程注入代码,分析提取应用程序间通信的数据,对数据进行分析匹配,当敏感数据有泄露的危险时,给予用户提示,保障支付信息安全。此信息保护模块内置于APP中,对特定的支付信息予以保护。相比额外安装手机管家更便捷。实验结果表示,该方案在一定程度上保证了用户支付信息的安全,对支付过程无较大影响,有很强的应用前景。


职称
论文

期刊
发表

加急
见刊

写作
咨询

课题
专答

编辑
顾问

关注
我们

返回
顶部