CN108932199A - 一种基于用户界面分析的自动化污点分析系统 - Google Patents
一种基于用户界面分析的自动化污点分析系统 Download PDFInfo
- Publication number
- CN108932199A CN108932199A CN201810750080.0A CN201810750080A CN108932199A CN 108932199 A CN108932199 A CN 108932199A CN 201810750080 A CN201810750080 A CN 201810750080A CN 108932199 A CN108932199 A CN 108932199A
- Authority
- CN
- China
- Prior art keywords
- interface
- label
- analysis
- module
- automation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Telephone Function (AREA)
Abstract
本发明提出一种基于用户界面分析的自动化污点分析系统,包括应用程序采集模块、静态预处理模块、基于界面分析的自动化交互模块、污点传播分析模块、行为分析模块和报告生成模块,该系统通过实时分析应用程序窗口列表以及界面的空间元素,自动生成输入和点击等交互事件,实现对应用程序的自动化交互和遍历,结合污点分析技术完成用户隐私数据泄露的检测。本发明与传统的采用静态或动态分析进行检测的方法相比,具有自动化程度高,检测覆盖率广的特点,可以更有效的发现较为隐蔽的用户数据隐私泄露行为。
Description
技术领域
本发明涉及移动终端软件安全领域,尤其是一种基于用户界面分析的自动化污点分析系统。
背景技术
随着移动互联网的高速发展,越来越多的网民通过智能手机或平板电脑等智能移动终端接入到互联网。根据2018年中国互联网络信息中心(CNNIC)发布的第四十一次《中国互联网络发展状况统计报告》:截止至2017年底,我国网民规模达7.72亿,普及率达到55.8%,超过全球平均水平(51.7%)4.1个百分点,超过亚洲平均水平(46.7%)9.1个百分点,其中手机上网用户达7.53亿,占到网民总数的97.5%。
移动互联网的蓬勃发展主要源于智能移动终端的大规模普及。智能移动终端操作系统的种类较多,目前主要有Google公司的Android、苹果公司的iOS、诺基亚的Symbian、微软的Windows Phone、惠普公司的WebOS以及黑莓的Blackberry 0S等。Jumptap发布的调查数据称,2017年安装有iOS或Android系统的设备共占领了移动市场的91%,其中Android市场占比为58.8%。
智能移动终端的广泛使用带动了移动应用软件产业的快速发展。各类应用商店提供的海量应用程序为人们提供了各类丰富和实用的功能,除了具备最基本的打电话和发短信的功能,人们可以使用智能移动终端随时随地查询周边生活信息,实时分享所见所闻,处理工作上邮件和文档,进行移动支付,听音乐、看视频以及玩游戏等等。然而智能移动终端强大的功能在给人们生活带来极大便利的同时,也给终端用户带来巨大的安全隐患。
大量的恶意代码通过感染热门的应用程序,在移动终端系统上执行恶意行为,给用户带来了巨大的安全威胁,常见的恶意行为如下:
1.资费损耗,该类恶意代码会在用户不知道的情况下,在后台通过短信定制服务提供商的收费服务,或者大量拨打电话,访问网络等,给用户造成资费上的损失。
2.隐私泄露,该类恶意代码会在不通知用户的情况下,读取用户终端上的隐私信息,如联系人信息、位置信息、设备号码信息、短信内容或者日程安排等,然后通过网络或者短信的方式发送给攻击者。有些恶意软件甚至能够在后台进行音频录制或者拍照录像等,对终端用户进行窃听和监控。
3.系统破坏,该类恶意代码则是以破换系统运行为目的,如阻止网络连接,耗尽电池,让系统重启或者恶意删除文件等。
根据360安全中心发布的《2017年中国手机安全状况报告》,2017年Android平台新增恶意程序主要会造成资费消耗,占比高达71.7%,说明移动端恶意程序依然是以推销广告、消耗流量等手段,增加手机用户的流量资费等谋取不法商家的经济利益。这类恶意程序由于其具有较强的隐秘性,很难被用户发现,可以长期潜伏在手机中,持续造成话费、流量的损失。恶意扣费和流氓行为类型的恶意程序,更多的是伪装成游戏、色情类播放器等,一旦安装,在用户不知情或虚假描述下,直接订购增值业务,恶意推广程序和广告,造成几十元甚至上百元的流量和话费损失。
综上所述,目前的智能移动终端,特别是Android终端上有大量恶意软件通过应用商店进行广泛传播,用户面临着严重的安全威胁。而目前移动应用商店对应用的审核主要集中在功能、界面以及兼容性等方面,对于应用程序的安全性审核则较为欠缺,虽然Google公司也意识到了应用程序安全检查的重要性,并于2012年2月份推出了Bouncer工具用于其应用商店Google Play上应用程序的安全检查,但Google并未公布其技术细节,其他第三方应用商店并不能获取和使用该工具。现有的程序检测手段或者技术都建立在遍历程序所有行为的基础上,而遍历过程往往都是采用的人工方式,费时费力并且还会存在漏检测情况,效率不高。
发明内容
发明目的:为解决上述技术问题,本发明提供了一种基于用户界面分析的自动化污点分析系统。通过实时分析应用程序窗口列表以及界面的空间元素,自动生成输入和点击等交互事件,实现对应用程序的自动化交互和遍历,结合污点分析技术检测隐私数据是否遭到泄露。本发明针对Android平台的移动终端智能程序安全检查系统,基于用户界面进行自动化污点分析,对于保护智能移动终端用户的数据安全以及资费安全具有重要的意义。
技术方案:为实现上述技术效果,本发明提出以下技术方案:
一种基于用户界面分析的自动化污点分析系统,包括:应用程序采集模块101、静态预处理模块102、基于界面分析的自动化交互模块103、污点传播分析模块104、行为分析模块105和报告生成模块106;
应用程序采集模块101提取智能移动终端上用户已安装的应用程序文件,并发送至静态预处理模块102;
静态预处理模块102从应用程序文件中提取出程序声明的权限以及组件信息;
基于界面分析的自动化交互模块103将待测应用程序的进行安装和运行,在运行应用程序的过程中采用多叉树结构方法确定可能出现的所有界面以及各界面的产生与提取出的组件信息之间的逻辑关系,生成界面调用树状图;再根据界面调用树状图的顺序对每个界面进行用户交互模拟,即在每个界面上模拟出用户的所有操作,直至界面上的所有控件都被触发;
污点传播分析模块104给智能移动终端的隐私数据添加预先定义好的隐私数据标签,并选定待检测的潜在数据泄露途径作为检测点;在对界面调用树状图中的每个界面进行用户交互模拟的过程中,隐私数据标签跟随隐私数据在智能终端应用程序内传播,污点传播分析模块104在检测点检测隐私数据泄露,判断检测到的隐私数据所带有的隐私数据标签是否来自于预先定义的隐私数据标签;若不是,则直接放行;若是,则判定为泄露行为并将该泄露行为记录到日志文件中;
行为分析模块105针对污点传播分析模块104所记录的日志文件进行过滤和分析,生成待测应用程序的行为图;
报告生成模块106根据其他模块的检测结果,按照预先设定的模板生成检测报告。
进一步的,所述检测点包括网络传输途径、文件传输途径和短信传输途径。
进一步的,所述界面调用树状图的生成步骤为:
S1:定义多交叉树种的每一个节点都代表一个界面,然后为每个节点定义三个指针,三个指针分别指向父节点、首个孩子节点、属于同一父节点的兄弟节点;
S2:根据原始父节点一步步调用到每个底层子节点,根据所有界面产生的控件点击逻辑关系将所有节点根据指针指向关系相连,得到界面调用树状图。
进一步的,所述用户交互模拟的具体步骤为:
1)从界面调用树状图的初始界面开始,按照由顶层到底层,由父节点到子节点到属于同一父节点的兄弟节点的顺序进行界面遍历,获取每个界面的窗口列表及界面控件信息;
2)按顺序触发当前界面的所有控件,调用出所有可以被调用的界面;
3)查询是否有界面仍未被调用,如果没有,执行步骤4),如果有,则根据未被调用界面所声明的触发条件产生广播信息进行调用;
4)分析和触发界面控件直至所有界面上的所有控件都被触发。
进一步的,所述隐私数据标签包括:空标签、位置信息标签、联系人信息标签、麦克风输入数据标签、电话号码标签、GPS获取信息标签、基站获取位置信息标签、最近一次保存位置信息标签、摄像头数据标签、加速计数据标签、短信数据标签、IMEI标签、IMSI标签、ICCID标签、设备序列号标签、账号信息标签、浏览器历史记录标签、其他数据库信息标签、文件内容标签、已安装程序标签、拨号记录标签、电子邮件标签、日历备忘标签、系统设置标签。
进一步的,所述隐私数据标签中还包含用于标识数据泄露行为类型的键名,数据泄露行为类型包括:动态加载类,调用服务程序,拨打电话,发送短信,隐私泄露,文件读操作,文件写操作,建立网络连接,从网络读数据,向网络发数据,调用加密函数。
进一步的,所述用户的操作包括:对智能移动终端的屏幕进行点击、左滑、右滑、输入。
有益效果:与现有技术相比,本发明具有以下优势:
本发明针对Android平台的移动终端智能程序安全检查系统提出了一种基于UI分析的自动化污点分析系统,该系统通过实时分析应用程序窗口列表以及界面的空间元素,自动生成输入和点击等交互事件,实现对应用程序的自动化交互和遍历,结合污点分析技术检测隐私数据是否遭到泄露,对于保护智能移动终端用户的数据安全以及资费安全具有重要的意义。
附图说明
图1为本发明的系统架构图;
图2为本发明的应用程序采集模块流程框图;
图3为本发明的自动化交互模块中多叉树节点定义图;
图4为本发明的自动化交互模块中的多叉树生成例图;
图5为本发明中行为分析模块中的行为分析流程图;
图中:101、应用程序采集模块,102、静态预处理模块,103、基于界面分析的自动化交互模块,104、污点传播分析模块,105、行为分析模块,106、报告生成模块,107、应用程序界面分析模块,108、和界面自动化交互模块,109、用户界面。
具体实施方式
下面结合附图对本发明作更进一步的说明。
图1所示为本发明的系统架构图,包括:应用程序采集模块101、静态预处理模块102、基于界面分析的自动化交互模块103、污点传播分析模块104、行为分析模块105和报告生成模块106;其中,基于界面分析的自动化交互模块103由应用程序界面分析模块107和界面自动化交互模块108构成。
应用程序采集模块101提取智能移动终端上用户已安装的应用程序文件,并发送至静态预处理模块102;
静态预处理模块102从应用程序文件中提取出程序声明的权限以及组件信息;
基于界面分析的自动化交互模块103将待测应用程序的进行安装和运行,在运行应用程序的过程中采用多叉树结构方法确定可能出现的所有界面以及各界面的产生与提取出的组件信息之间的逻辑关系,生成界面调用树状图;再根据界面调用树状图的顺序对每个界面进行用户交互模拟,即在每个界面上模拟出用户的所有操作,直至界面上的所有控件都被触发;
污点传播分析模块104给智能移动终端的隐私数据添加预先定义好的隐私数据标签,并选定待检测的潜在数据泄露途径作为检测点;在对界面调用树状图中的每个界面进行用户交互模拟的过程中,隐私数据标签跟随隐私数据在智能终端应用程序内传播,污点传播分析模块104在检测点检测隐私数据泄露,判断检测到的隐私数据所带有的隐私数据标签是否来自于预先定义的隐私数据标签;若不是,则直接放行;若是,则判定为泄露行为并将该泄露行为记录到日志文件中;
行为分析模块105针对污点传播分析模块104所记录的日志文件进行过滤和分析,生成待测应用程序的行为图;
报告生成模块106根据其他模块的检测结果,按照预先设定的模板生成检测报告。
下面对各模块的功能进行详细说明。
(一)应用程序采集模块
图2是应用程序采集模块101的工作流程框图,201表示确定要检测的Android系统中的应用程序,首先在移动智能终端获取其root权限,然后运行adb root命令得到root过后的第三方应用程序。202表示使用adb pull命令将第三方应用程序提取到指定目录下的过程,例如用户安装的第三方应用程序通常默认放在/data/app目录下,假如要将所有程序导出到/home/lanzl/apks/目录下,则命令格式如下:adb pull/data/app//home/lanzl/apks/;203表示系统需要选择某个标识对已经检测过的应用程序以及移动终端进行识别,以避免对设备和应用程序做重复检测,在本系统中将智能移动终端的serialNumber作为移动设备的标识;将APK文件经过MD5算法计算得到的Hash值作为应用程序的标识。
(二)静态预处理模块
静态预处理模块102从应用程序文件中提取出程序声明的权限以及组件信息。
(三)基于界面分析的自动化交互模块
基于界面分析的自动化交互模块103由应用程序界面分析模块107和界面自动化交互模块108构成。应用程序界面分析模块107实现待测应用程序的自动安装和运行,并在运行期间采用多叉树结构方法确定程序的运行过程中可能出现的所有界面以及不同界面的产生与提取出的组件信息间的逻辑关系,生成界面调用树状图,并将界面调用树状图发送给界面自动化交互模块108;界面自动化交互模块108根据应用程序界面分析模块107生成的界面调用树状图来模拟触屏和点击等动作与应用程序的用户界面109进行交互,即遍历出每个界面上可能产生的所有点击、左滑、右滑等操作,即自动地使待检测应用程序完整运行一遍,其主要步骤为:
步骤1:记录待测应用程序所有界面的调用层次并使用多叉树结构方法生成调用图;
步骤2:按照调用图顺序对每个界面进行分析,获取窗口列表及界面控件信息;
步骤3:按顺序触发当前界面的所有控件,调用出是所有可以被调用的界面;
步骤4:查询是否有界面仍未被调用,如果没有,执行步骤5,如果有,则根据未被调用界面所声明的触发条件产生广播信息进行调用;
步骤5:分析和触发界面控件直至所有界面上的所有控件都被触发。
上述过程种采用多叉树的结构存储界面的调用层次信息。每个多叉树的节点代表一个界面,包括界面的相关信息以及三个用于连接各节点的指针,其定义如图3所示,节点有四个指针,301表示parent指针用于指向父节点,302表示first_child指针指向该节点的首个孩子节点,303表示next_slibing则指向属于同一个父节点的兄弟节点,304表示DATA字段用于存放界面的所有相关信息。多叉树结构中第一层的节点代表父节点,第二层的节点代表子节点,往下一层代表这一层延伸出的子节点。通常我们第一层设为只有主界面A一个根结点,其父节点指针指向空,没有相邻的兄弟节点,而孩子节点指针指向第二层的界面;第二层界面父节点指针指向第一层的主界面,兄弟节点指针指向主界面其他孩子节点指向的子界面。依此类推,构成一个多叉树的结构。为了记录当前自动化交互模块正在操作的是哪个界面,系统设置了一个指针用于指示当前界面。界面的调用层次是在自动化交互模块对界面不断分析的过程中逐渐创建的。当所有的控件触发完毕,则整个界面自动化交互模块的工作就完成了,同时记录下整个交互过程中的变化顺序。
综上所述,多叉树结构生成界面调用和遍历方法可以归纳为以下步骤:
步骤1:多叉树结构定义。首先定义一个节点来代表界面;然后为每个节点定义三个指针分别指向父节点、首个孩子节点、属于同一父节点的兄弟节点;
步骤2:多叉树生成。程序中除初始界面外出现的所有界面一定都可以由已有的界面经过控件作用产生,即一定可以根据原始父节点一步步调用到每个底层子节点。根据所有界面产生的控件点击逻辑关系将所有节点根据指针指向关系相连,就能得到多叉树调用图。
步骤3:多叉树遍历。多叉树调用图展现了程序所有出现界面之间产生的逻辑关系,根据它从初始界面开始,按照由顶层到底层,由父节点到子节点到属于同一父节点的兄弟节点的顺序进行界面遍历,在每个界面上进行点击左滑右滑等操作遍历。
下面通过一个具体实施例详细描述多交叉树结构生成的原理,如图4所示,多交叉树第一层的节点代表父节点,第二层的节点代表子节点,往下一层代表这一层延伸出的子节点。第一层只有主界面A一个根结点,其parent指向NULL,没有相邻的兄弟节点,所以next_slibing也指向NULL,而first_child则指向第二层的界面B,该界面的parent指向第一层的主界面A,next_slibing指向界面A的第二个孩子节点界面C,依此类推,构成一个多叉树的结构。为了记录当前自动化交互模块正在操作的是哪个界面,系统设置了一个指针CurrentActivity用于指示当前界面。界面的调用层次是在自动化交互模块对界面不断分析的过程中逐渐创建的。图4中,A是父节点,B、C、D都是A的子节点,E是B的子节点,F、G是D的子节点。记录界面A之后,CurrentActivity指向A,当触发A中控件跳到新的界面B时,系统将B添加为A的孩子节点,并将CurrentActivity指向B。当B继续触发新的界面E,则将E添加为B的孩子节点,CurrentActivity指向E。界面E上所有的控件触发完,而且没有触发新的界面,则CurrentActivity重新指向E的父节点B,接着触发B中剩下的控件,之后再跳转到根节点A,继续触发根节点A剩下的控件,会产生新的界面C,则将CurrentActivity切换为C并将节点C添加为A的孩子节点,这时因为A已经有一个孩子节点了,所以将C添加为B的兄弟节点。接着再分析界面C上的控件,进行交互处理,如此直到最后回到根节点A。当所有的控件触发完毕,则整个界面自动化交互模块的工作就完成了。整个交互过程中CurrentActivity的变化顺序如下:
A→B→E→B→A→C→F→C→G→C→A→D→A
自动化交互模块在每次进入新的Activity之后都会对界面的控件元素进行分析,之后再对可触发的控件进行触发。
(四)污点传播分析模块
污点传播分析模块104实现隐私数据标签的添加,传播以及提取和判断,并对隐私泄露行为和关键函数调用进行记录。污点传播分析模块104首先定义24种隐私数据标签来跟踪不同的数据类型,以及11种存在的数据泄露行为;并选取移动智能终端的网络、文件、短信作为泄露点来检测隐私数据是否泄露,在选定检测点的基础上,使用遍历算法,模拟鼠标的左键单击双击,右键单击双击等操作将应用程序完整地运行一次,遍历出程序所有可能出现的子界面以及潜在的链接生成等等;遍历结束后,判断在上述三个泄露点检测到的隐私数据带有的隐私数据标签是否来自于系统定义的隐私数据标签隐私源,来决定对隐私数据执行放行操作还是确定存在前述的11种数据泄露行为,存在则需要记录。整个流程如下:
步骤1:定义隐私数据标签来跟踪不同类型数据;
步骤2:选定待检测的潜在数据泄露途径(包括网络、文件、短信)作为检测点,进行检测并提取隐私数据标签;
步骤3:将提取出的隐私数据标签进行检测并判断属于何种泄露行为。
本实施例采用一个32比特长度的整型作为隐私数据标签,整型的每一位用于表示一种隐私数据,总共24种标签,包括:空标签、位置信息标签、联系人信息标签、麦克风输入数据标签、电话号码标签、GPS获取信息标签、基站获取位置信息标签、最近一次保存位置信息标签、摄像头数据标签、加速计数据标签、短信数据标签、IMEI标签、IMSI标签、ICCID标签、设备序列号标签、账号信息标签、浏览器历史记录标签、其他数据库信息标签、文件内容标签、已安装程序标签、拨号记录标签、电子邮件标签、日历备忘标签、系统设置标签。24个隐私数据标签的定义说明表如表1所示:
表1隐私数据标签的定义说明表
标签类型 | 十六进制表示 | 备注 |
TAINT-CLEAR | 0x00000000 | 空标签 |
TAINT_LOCATION | 0x00000001 | 位置信息 |
TAINT_CONTACTS | 0x00000002 | 联系人信息 |
TAINT_MIC | 0x00000004 | 麦克风输入数据 |
TAINT_PHONE_NUMBER | 0x00000008 | 电话号码 |
TAINT_LOCATION_GPS | 0x00000010 | GPS获取的位置信息 |
TAINT_LOCATION_NET | 0x00000020 | 基站获取的位置信息 |
TAINT_LOCATION_LAST | 0x00000040 | 上次保存的位置信息 |
TAINT_CAMERA | 0x00000080 | 摄像头数据 |
TAINT_ACCELEROMETER | 0x00000100 | 加速计的数据 |
TAINT_SMS | 0x00000200 | 短信数据 |
TAINT_IMEI | 0x00000400 | IMEI号码 |
TAINT_IMSI | 0x00000800 | IMSI号码 |
TAINT_ICCID | 0x00001000 | ICCID号码 |
TAINT_DEVICE_SN | 0x00002000 | 设备序列号 |
TAINT_ACCOUNT | 0x00004000 | 账号信息 |
TAINT_BROWSER | 0x00008000 | 浏览器历史记录 |
TAINT_OTHERDB | 0x00010000 | 其他数据库信息 |
TAINT_FILECONTENT | 0x00020000 | 文件内容 |
TAINT_PACKAGE | 0x00040000 | 已安装程序包的信息 |
TAINT_CALL_LOG | 0x00080000 | 拨号记录 |
TAINT_EMAIL | 0x00100000 | 电子邮件 |
TAINT_CALENDAR | 0x00200000 | 日历备忘 |
TAINT_SETTING | 0x00400000 | 系统设置信息 |
接下来污点分析模块要考虑泄漏点的选取,Android系统中的隐私数据可以有多种泄露途径,本实施例主要考虑了网络、文件以及短信这三个泄露点。为了判断是否有隐私数据泄露,需要在这三个泄露点添加额外处理,判断所发送的数据中是否带有隐私数据标签。如果所发送数据带的隐私数据标签不属于上表内,则表示该数据不是来自于已定义的隐私源,就可以直接放行,但如果所发送的数据带有非空隐私数据标签,系统将对该泄露行为记录到日志文件中。
上述方案中,标签日志记录使用的是Android提供的logcat工具,其日志输出格式如下:
其中,第1部分是日志级别,W表示Warning为警告级别,logcat总共定义了5种日志级别,级别从低到高分别为V(Verbose)、D(Debug)、I(Info)、W(Warning)、E(Error)和F(Fatal)。污点泄露的记录选用Warning作为日志输出级别。
斜杠后面的第2部分是日志标签,该部分可以自定义,主要是为了方便日志分析时进行过滤。一般由Dalvik虚拟机内部产生的日志信息都会有“Dalvikvm”关键字。
括号里的第3部分是产生日志的进程ID号,该部分不用指定,日志系统会自动添加。
最后的第4部分LogContent就是具体的日志内容,这里可以是任意的字符串内容。
为了便于日志过滤,污点传播分析模块在日志内容的开头定义了另外一个标签“TaintAnA”(取TaintAnalysis前面一部分),用于区分Dalvikvm中的其他日志信息。为了让日志的内容便于解析,日志的内容部分采用JSON结构。JSON结构就是若干个键值对的集合,该格式类似于Python语言中字典结构。后续使用Python语言分析时,可以很方便的进行转换。最终系统输出的日志格式如下:
W/Dalvikvm(450):TaintAnA:{keyl:valuel,key2:value2}
TaintAnA是日志标签,后面大括号内的即为JSON结构的数据。另外由于日志的前面一部分内容是固定的,所以系统对其Android日志记录函数进行封装,在dalvik,system.Taint类中提供了Taint.log函数,方便框架层调用。上面的日志信息,只需调用Taint.log(″{key1:valuel,key2:value2}″)即可得到。
对于泄露点标签的提取和记录,步骤如下:
步骤1:选取移动智能终端的网络、文件、短信作为泄露点来检测隐私数据泄露;
步骤2:在选定检测点的基础上,使用遍历算法,模拟鼠标的左键单击双击,右键单击双击等操作将应用程序完整地运行一次,遍历出程序所有可能出现的子界面以及潜在的链接生成等等;
步骤3:判断在上述三个泄露点检测到的隐私数据带有的隐私数据标签是否来自于系统定义的隐私数据标签隐私源,来决定对隐私数据执行放行操作还是确定存在数据泄露行为,需要记录;
步骤4:对步骤3中存在数据泄露的数据按照日志级别,日志标签,进程ID号,具体日志内容的格式记录形成日志记录,保存并进行后续的行为分析。
本实施例中选取的隐私数据的泄露点主要包括网络,文件以及短信,虽然这几个泄露途径不同,但最终要发送的数据最终都是字节数组ByteArray的形式。取出value的隐私数据标签然后判断是否为TAINT_CLEAR,若不是,则value中存在隐私数据,将该标签转换成十六进制的字符串然后记录到日志中。
系统除了实现隐私数据泄露行为的记录,还对一些系统关键函数的调用进行监控与记录。日志内容中,标签TaintAnA后面JSON结构中的键名用于标识行为的类型。包括前面介绍的隐私泄露行为的类型“DataLeak”,系统总共定义了十一种行为类型:动态加载类,调用服务程序,拨打电话,发送短信,隐私泄露,文件读操作,文件写操作,建立网络连接,从网络读数据,向网络发数据,调用加密函数。
上面内容是行为的类型标记,将被记录到日志中,用于区分不同类型的行为。这些行为的记录都是通过在相关的系统调用函数中进行日志输出得到的。比如启动服务的行为,就是在startService函数调用接口中使用输出日志,记录被启动服务的名称。
(五)行为分析模块
行为分析模块105主要是针对污点传播模块所记录的日志文件进行分析,获取待测应用程序的行为概况。行为分析模块对日志文件的处理可以分为三步,分别是501表示日志过滤,502表示日志解析以及503表示行为图的生成,流程如图5所示。
日志过滤主要是从大量的日志信息中提取分析所需的日志条目。日志解析主要是对过滤后的日志进行逐条解析,并将结果进行存储。生成行为图则是根据日志解析的结果进行绘制的,用以显示应用程序的行为概况。
(六)报告生成模块
报告生成模块106对前面模块的检测结果进行综合,生成最终的检测报告。
检测报告主要是综合前面各模块对应用程序的检测结果,包括以下内容:
(1)基本信息:包括被测应用程序的名称,程序包名,文件大小,文件MD5值以
及报告创建时间等一些基本信息。
(2)权限列表:该部分主要将静态预处理模块中得到的应用程序所使用的权限列
表进行显示。包括请求的系统权限,以及程序自定义的权限。
(3)基本组件:列出应用程序所包含的四大基本组件:Activity、Service、
BroadcastReceiver和ContentProvider,以及相应的触发条件。
(4)行为图:显示行为分析模块生成的行为图。
(5)程序截图:列出检测过程中所截取的Activity界面。
HTML格式的报告生成采用了Cheetah模板引擎,Cheetah是一个Python的模板引擎和代码生成工具,可以很方便地集成到系统中。Cheetah有自己的一套语法,在模板文件中支持两种标签:一种是“$”符号开头的标签,相当于一个变量,作为占位符,在模板解析的时候,直接被替换为Python变量的值;另一种是以“#”符号开头,表示该行为一条指令,如循环或者判断指令等。
因此只要事先定义好报告的模板,使用变量作为占位符,这样在检测和分析结束时,准备好报告所需的数据,最终由Cheetah模板引擎进行模板的解析,执行模板中的指令,将具体数据填入模板中,就得到了最终的报告。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种基于用户界面分析的自动化污点分析系统,其特征在于,包括:应用程序采集模块(101)、静态预处理模块(102)、基于界面分析的自动化交互模块(103)、污点传播分析模块(104)、行为分析模块(105)和报告生成模块(106);
应用程序采集模块(101)提取智能移动终端上用户已安装的应用程序文件,并发送至静态预处理模块(102);
静态预处理模块(102)从应用程序文件中提取出程序声明的权限以及组件信息;
基于界面分析的自动化交互模块(103)将待测应用程序的进行安装和运行,在运行应用程序的过程中采用多叉树结构方法确定可能出现的所有界面以及各界面的产生与提取出的组件信息之间的逻辑关系,生成界面调用树状图;再根据界面调用树状图的顺序对每个界面进行用户交互模拟,即在每个界面上模拟出用户的所有操作,直至界面上的所有控件都被触发;
污点传播分析模块(104)给智能移动终端的隐私数据添加预先定义好的隐私数据标签,并选定待检测的潜在数据泄露途径作为检测点;在对界面调用树状图中的每个界面进行用户交互模拟的过程中,隐私数据标签跟随隐私数据在智能终端应用程序内传播,污点传播分析模块(104)在检测点检测隐私数据泄露,判断检测到的隐私数据所带有的隐私数据标签是否来自于预先定义的隐私数据标签;若不是,则直接放行;若是,则判定为泄露行为并将该泄露行为记录到日志文件中;
行为分析模块(105)针对污点传播分析模块(104)所记录的日志文件进行过滤和分析,生成待测应用程序的行为图;
报告生成模块(106)根据其他模块的检测结果,按照预先设定的模板生成检测报告。
2.根据权利要求1所述的一种基于用户界面分析的自动化污点分析系统,其特征在于,所述检测点包括网络传输途径、文件传输途径和短信传输途径。
3.根据权利要求2所述的一种基于用户界面分析的自动化污点分析系统,其特征在于,所述界面调用树状图的生成步骤为:
S1:定义多交叉树种的每一个节点都代表一个界面,然后为每个节点定义三个指针,三个指针分别指向父节点、首个孩子节点、属于同一父节点的兄弟节点;
S2:根据原始父节点一步步调用到每个底层子节点,根据所有界面产生的控件点击逻辑关系将所有节点根据指针指向关系相连,得到界面调用树状图。
4.根据权利要求3所述的一种基于用户界面分析的自动化污点分析系统,其特征在于,所述用户交互模拟的具体步骤为:
1)从界面调用树状图的初始界面开始,按照由顶层到底层,由父节点到子节点到属于同一父节点的兄弟节点的顺序进行界面遍历,获取每个界面的窗口列表及界面控件信息;
2)按顺序触发当前界面的所有控件,调用出所有可以被调用的界面;
3)查询是否有界面仍未被调用,如果没有,执行步骤4),如果有,则根据未被调用界面所声明的触发条件产生广播信息进行调用;
4)分析和触发界面控件直至所有界面上的所有控件都被触发。
5.根据权利要求4所述的一种基于用户界面分析的自动化污点分析系统,其特征在于,所述隐私数据标签包括:空标签、位置信息标签、联系人信息标签、麦克风输入数据标签、电话号码标签、GPS获取信息标签、基站获取位置信息标签、最近一次保存位置信息标签、摄像头数据标签、加速计数据标签、短信数据标签、IMEI标签、IMSI标签、ICCID标签、设备序列号标签、账号信息标签、浏览器历史记录标签、其他数据库信息标签、文件内容标签、已安装程序标签、拨号记录标签、电子邮件标签、日历备忘标签、系统设置标签。
6.根据权利要求5所述的一种基于用户界面分析的自动化污点分析系统,其特征在于,所述隐私数据标签中还包含用于标识数据泄露行为类型的键名,数据泄露行为类型包括:动态加载类,调用服务程序,拨打电话,发送短信,隐私泄露,文件读操作,文件写操作,建立网络连接,从网络读数据,向网络发数据,调用加密函数。
7.根据权利要求6所述的一种基于用户界面分析的自动化污点分析系统,其特征在于,所述用户的操作包括:对智能移动终端的屏幕进行点击、左滑、右滑、输入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810750080.0A CN108932199B (zh) | 2018-07-09 | 2018-07-09 | 一种基于用户界面分析的自动化污点分析系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810750080.0A CN108932199B (zh) | 2018-07-09 | 2018-07-09 | 一种基于用户界面分析的自动化污点分析系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108932199A true CN108932199A (zh) | 2018-12-04 |
CN108932199B CN108932199B (zh) | 2020-11-17 |
Family
ID=64448044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810750080.0A Active CN108932199B (zh) | 2018-07-09 | 2018-07-09 | 一种基于用户界面分析的自动化污点分析系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108932199B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486815A (zh) * | 2020-11-26 | 2021-03-12 | 北京指掌易科技有限公司 | 一种应用程序的分析方法、装置、服务器及存储介质 |
CN113010408A (zh) * | 2019-12-20 | 2021-06-22 | Sap欧洲公司 | 通过沿着数据流的污点跟踪进行内容驱动的调试 |
CN113608818A (zh) * | 2021-08-19 | 2021-11-05 | 北京字跳网络技术有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120304010A1 (en) * | 2011-05-25 | 2012-11-29 | Microsoft Corporation | Code coverage-based taint perimeter detection |
CN103729595A (zh) * | 2014-01-02 | 2014-04-16 | 东南大学 | 一种Android应用程序隐私数据泄露离线检测方法 |
CN103902886A (zh) * | 2014-03-04 | 2014-07-02 | 珠海市君天电子科技有限公司 | 一种检测第三方应用的方法及装置 |
CN104008329A (zh) * | 2014-05-22 | 2014-08-27 | 中国科学院信息工程研究所 | 一种基于虚拟化技术的软件隐私泄露行为检测方法及系统 |
CN104035867A (zh) * | 2014-06-04 | 2014-09-10 | 重庆泰凯科技有限公司 | 基于Android的应用功能遍历测试方法 |
CN104394509A (zh) * | 2014-11-21 | 2015-03-04 | 西安交通大学 | 一种高效的差分扰动位置隐私保护系统及方法 |
US9530016B1 (en) * | 2016-01-29 | 2016-12-27 | International Business Machines Corporation | Using source taint analysis to reduce false positives in an advanced persistent threat (APT) protection solution |
CN107343008A (zh) * | 2017-07-17 | 2017-11-10 | 山东超越数控电子有限公司 | 一种抗访问模式泄露的数据安全隔离与共享实现方法 |
CN107784229A (zh) * | 2016-08-26 | 2018-03-09 | 安提特软件有限责任公司 | Javascript 安全测试 |
-
2018
- 2018-07-09 CN CN201810750080.0A patent/CN108932199B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120304010A1 (en) * | 2011-05-25 | 2012-11-29 | Microsoft Corporation | Code coverage-based taint perimeter detection |
CN103729595A (zh) * | 2014-01-02 | 2014-04-16 | 东南大学 | 一种Android应用程序隐私数据泄露离线检测方法 |
CN103902886A (zh) * | 2014-03-04 | 2014-07-02 | 珠海市君天电子科技有限公司 | 一种检测第三方应用的方法及装置 |
CN104008329A (zh) * | 2014-05-22 | 2014-08-27 | 中国科学院信息工程研究所 | 一种基于虚拟化技术的软件隐私泄露行为检测方法及系统 |
CN104035867A (zh) * | 2014-06-04 | 2014-09-10 | 重庆泰凯科技有限公司 | 基于Android的应用功能遍历测试方法 |
CN104394509A (zh) * | 2014-11-21 | 2015-03-04 | 西安交通大学 | 一种高效的差分扰动位置隐私保护系统及方法 |
US9530016B1 (en) * | 2016-01-29 | 2016-12-27 | International Business Machines Corporation | Using source taint analysis to reduce false positives in an advanced persistent threat (APT) protection solution |
CN107784229A (zh) * | 2016-08-26 | 2018-03-09 | 安提特软件有限责任公司 | Javascript 安全测试 |
CN107343008A (zh) * | 2017-07-17 | 2017-11-10 | 山东超越数控电子有限公司 | 一种抗访问模式泄露的数据安全隔离与共享实现方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010408A (zh) * | 2019-12-20 | 2021-06-22 | Sap欧洲公司 | 通过沿着数据流的污点跟踪进行内容驱动的调试 |
CN113010408B (zh) * | 2019-12-20 | 2023-12-26 | Sap欧洲公司 | 通过沿着数据流的污点跟踪进行内容驱动的调试 |
CN112486815A (zh) * | 2020-11-26 | 2021-03-12 | 北京指掌易科技有限公司 | 一种应用程序的分析方法、装置、服务器及存储介质 |
CN112486815B (zh) * | 2020-11-26 | 2024-03-22 | 北京指掌易科技有限公司 | 一种应用程序的分析方法、装置、服务器及存储介质 |
CN113608818A (zh) * | 2021-08-19 | 2021-11-05 | 北京字跳网络技术有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
CN113608818B (zh) * | 2021-08-19 | 2024-01-16 | 北京字跳网络技术有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN108932199B (zh) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103186740B (zh) | 一种Android恶意软件的自动化检测方法 | |
CN108133139B (zh) | 一种基于多运行环境行为比对的安卓恶意应用检测系统 | |
CN103309808B (zh) | 基于标签的安卓用户隐私泄露黑盒检测方法及系统 | |
CN103729595B (zh) | 一种Android应用程序隐私数据泄露离线检测方法 | |
Kiss et al. | Kharon dataset: Android malware under a microscope | |
CN104376266B (zh) | 应用软件安全级别的确定方法及装置 | |
CN112685737A (zh) | 一种app的检测方法、装置、设备及存储介质 | |
CN106845236A (zh) | 一种针对iOS平台的应用程序多维度隐私泄露检测方法及系统 | |
CN103368957B (zh) | 对网页访问行为进行处理的方法及系统、客户端、服务器 | |
CN108932199A (zh) | 一种基于用户界面分析的自动化污点分析系统 | |
CN107092830A (zh) | 基于流量分析的ios恶意软件预警和检测系统及其方法 | |
CN106570399A (zh) | 一种跨App组件间隐私泄露的检测方法 | |
CN104715203A (zh) | 信息泄漏漏洞的定量分析的方法和系统 | |
CN104462973A (zh) | 移动终端中应用程序的动态恶意行为检测系统及方法 | |
CN105022815A (zh) | 信息拦截方法及装置 | |
CN105653946A (zh) | 基于组合事件行为触发的Android恶意行为检测系统及其检测方法 | |
CN104640138B (zh) | 一种定位问题终端的方法及装置 | |
CN109361713A (zh) | 互联网风险监控方法、装置、设备及存储介质 | |
CN104320793B (zh) | 一种手机短信自动化测试方法及系统 | |
CN108197476A (zh) | 一种智能终端设备的漏洞检测方法及装置 | |
CN108399336A (zh) | 一种安卓应用恶意行为的检测方法及装置 | |
CN108681671A (zh) | 一种Android移动攻击溯源方法 | |
Tang et al. | Detecting permission over-claim of android applications with static and semantic analysis approach | |
Min et al. | Runtime-based behavior dynamic analysis system for android malware detection | |
CN106778264A (zh) | 一种移动客户端的应用程序分析方法及分析系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |