CN106022116B - 基于安卓程序应用间攻击的自动化补丁系统及方法 - Google Patents

基于安卓程序应用间攻击的自动化补丁系统及方法 Download PDF

Info

Publication number
CN106022116B
CN106022116B CN201610313468.5A CN201610313468A CN106022116B CN 106022116 B CN106022116 B CN 106022116B CN 201610313468 A CN201610313468 A CN 201610313468A CN 106022116 B CN106022116 B CN 106022116B
Authority
CN
China
Prior art keywords
point
entrance
path
patch
attack
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.)
Active
Application number
CN201610313468.5A
Other languages
English (en)
Other versions
CN106022116A (zh
Inventor
伏晓
谢佳筠
骆斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201610313468.5A priority Critical patent/CN106022116B/zh
Publication of CN106022116A publication Critical patent/CN106022116A/zh
Application granted granted Critical
Publication of CN106022116B publication Critical patent/CN106022116B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于安卓程序应用间攻击的自动化补丁系统及方法,其中方法包括配置初始化步骤、路径提取步骤、关键点定位步骤、应用间攻击补丁步骤。本发明中系统运行在应用层,能够十分精确的捕获上层语义,进而识别出恶意的行为,并针对这种行为进行自动化补丁;同时使用双向控制,能够识别出较为丰富的攻击类型,具备较强的分析防护能力。本发明采用静态分析和动态防护相结合的方式,克服了以往方法针对应用内部恶意行为的不足,提供了一种针对应用间恶意攻击的防护方法,使得防护效果全面有效。

Description

基于安卓程序应用间攻击的自动化补丁系统及方法
技术领域
本发明属于计算机安全防护技术领域,具体涉及一种应用于安卓平台的自动化补丁方法及实现该方法的系统。
背景技术
近年来,随着智能手机的功能不断完善,智能手机普及率越来越高。安卓作为一款开源的操作系统,在2015年已经占有了83%的市场占有率。由于其绝对性的主导地位及其开源特性,安卓设备也成为众多恶意攻击者攻击的对象。安卓平台的不完善或者开发者无意暴露的接口,都会引发应用间攻击。应用间攻击作为安卓平台上的一类攻击手段,近期被用在很多攻击场景中。然而,目前并没有较好的防护措施来对付此类攻击,导致安卓用户暴露在危险之中。
基于现状,检测安卓应用程序的恶意行为并对其进行有效防护成为当务之急。现在比较常见的技术为数据流分析,该技术用来分析一个应用程序中的敏感数据流向,进而判断出是否存在恶意行为。还有一些静态分析能够发现应用程序中存在的漏洞,进而提出一些安全方面的建议。除此之外,一些方法在内核层或者中间件层面进行修改,添加全局的访问控制策略,从而对整个应用程序进行监控,分析出其恶意的操作。但是在上述这些底层监控存在具有语义鸿沟的问题,不能清晰的描述上层应用的行为。另外还有一些解决方式在应用层对应用程序做修改,添加一些全局机制或者针对某种漏洞做修补,进而对某个应用程序进行防护。但是这类防护大多针对单个应用,并不能有效应对应用间攻击。
发明内容
为解决上述问题,本发明公开了一种基于安卓程序应用间攻击的自动化补丁方法及系统,实现了一个自动化应用间漏洞防护生成器,使应用程序能够规避由于系统的缺陷或者开发者对安全方面的不关注而导致的一系列应用间攻击接口。
为了达到上述目的,本发明提供如下技术方案:
基于安卓程序应用间攻击的自动化补丁方法,包括如下步骤:
步骤一、配置初始化:
通过定义外部配置文件和分析安卓程序得到其中所有的关键点:源点、沉淀点、入口点和出口点;通过解析形成关键点数据结构,将数据存入内存;所述源点定义为与权限相关的API调用代码片段,所述沉淀点定义为发生数据传送出设备的代码片段,所述入口点定义为进入一个应用的入口方法,所述出口点定义为跳转到应用内其他组件或者跳转到其他应用组件的代码片段;
步骤二、路径提取:
根据已有的四种关键点,设定开始点和结束点;
然后构造控制流图,在安卓应用程序中找出所有符合条件的开始点和结束点;
使用静态污点分析,通过向前分析和向后分析找出所有存在的数据流;构造从开始点至结束点的关键路径;
将关键路径记录至路径文件中;
步骤三、关键点定位:
根据步骤二提供的关键路径,对入口点、出口点和沉淀点进行定位,定位关键点时根据其所在的关键路径,查找出所有可能存在越权攻击的关键点;
步骤四、应用间攻击补丁:
包括越权攻击分析步骤、信息泄露分析步骤和合谋攻击分析步骤,
所述越权攻击分析步骤包括:在入口点针对越权攻击进行补丁,通过在入口点至源点的路径中使用权限聚集算法,获取入口点方法上所有的权限,对外部调用者进行权限切割,起到防护作用;
所述信息泄露分析步骤包括:分析源点至沉淀点的路径识别应用内泄露并阻止泄漏,分析入口点至沉淀点的路径通过获取入口点中所包含的参数,判断其是否存在敏感信息,进而判断出该路径是否存在应用间信息泄露的风险,如存在风险则阻止泄漏;
所述合谋攻击分析步骤包括:对合谋攻击可能发生的出口点进行补丁,将源点的信息添加进应用间通信的消息句柄中,同时将可能通过该应用进行合谋的通道给阻断。
进一步的,所述步骤一中解析方法包括以下步骤:当关键点为源点、沉淀点和出口点时,对相应的配置文件进行解析,随后匹配具体的代码执行片段;当关键点为入口点的时候,根据安卓程序清单文件计算出所有的入口点。
进一步的,所述计算入口点的过程具体包括如下步骤:
(1)获取安卓程序Manifest文件;
(2)针对Manifest文件解析出所有组件,通过对所有组件进行条件筛选,得到入口点所在的类;
(3)针对每个入口点所在类,提取所有的生命周期方法和能够进行通信的回调方法,即为入口点;
(4)将所有的入口点解析成关键点数据结构,存入内存中。
进一步的,所述步骤二中需要构造出五种不同类型的路径,源点至沉淀点,源点至出口点,入口点至沉淀点,入口点至出口点以及入口点至源点,针对需要构造的不同路径,每次需要重新定义起始点和结束点。
进一步的,所述步骤三中关键点定位过程如下:
对安卓应用程序进行反编译,生成相应的反编译目录和反编译文件;
利用文件传输类,将步骤二中生成的关键路径文件复制到反编译目录下;
找出所有关键点方法,找到其所在的目录、类、方法以及行;
通过加载路径文件,读入整个文件的内容,使用定位模块进行筛选,定位到所在的关键点方法位置。
进一步的,所述步骤四中越权攻击分析步骤具体如下:
(1)分析入口点所携带的通信句柄信息,获取调用者应用程序包名;
(2)识别调用者应用包名和入口点所在应用的包名是否一致,如果一致,继续执行正常后续步骤;如果不一致,继续下一步越权分析;
(3)读取生成的入口点至源点的路径文件,对路径文件进行解析,存储成入口点方法和权限集合的映射关系的数据结构,匹配当前的入口点方法,获取其上面聚集的权限集合,将其设置为入口点权限集合,并存入内存中;
(4)获取设备上所有应用的包名和权限集合的映射关系,存储至内存中,根据调用者应用程序的包名,获取出调用者应用上所有的权限集合,将其设置为调用者权限集合,存入内存;
(5)将入口点权限集合和调用者权限集合做差集,在入口点权限集合中删除所有出现在调用者权限集合中的权限,并将结果定义为权限差集,存入内存中;
(6)判断上述步骤中计算出的差集是否为空,如果为空,则继续执行正常后续步骤;如果不为空,则直接警告用户此处发生越权调用,中断后续越权操作。
进一步的,所述步骤四中信息泄露分析步骤具体如下:
(1)读取生成的源点至沉淀点的路径文件,对路径文件进行解析,提取存在的所有的沉淀点集合;
(2)判断是否存在源点至沉淀点的路径,如果存在,跳转至步骤3;如果不存在,跳转至步骤4;
(3)发生应用内部信息泄露,阻止泄露操作,结束程序;
(4)提取入口点至沉淀点的路径,将其存入内存;
(5)对入口点所包含的通信消息句柄,提取出其中的信息,存入内存;
(6)分析入口点所携带的通信句柄信息,判断其中是否存在敏感信息,如果不存在敏感信息,则跳至步骤9;如果存在敏感信息,跳至步骤7;
(7)判断在整条路径中是否存在将敏感信息通过沉淀点发送出去的操作,如果不存在,则跳至步骤9;如果存在,则跳至步骤8;
(8)数据泄露发生,结束程序;
(9)运行正常后续步骤。
进一步的,所述步骤四中合谋攻击分析步骤具体如下:
(1)加载入口点至出口点的路径文件,获取路径中所有的代码片段;
(2)解析所有的代码片段,建立所有代码片段的列表;
(3)分析代码片段列表中是否存在从入口点参数句柄中获取相应的参数的操作,如果存在,则进行步骤4,否则跳至步骤6;
(4)分析步骤2中所有的代码判断列表,是否存在将步骤3中的参数传入出口点参数句柄的操作,如果存在,跳转至步骤5;如果不存在,跳至步骤6;
(5)发生合谋攻击,弹出提示框,提示用户存在风险;
(6)运行正常后续步骤。
本发明还提供了用于实现上述方法的基于安卓程序应用间攻击的自动化补丁系统,包括初始化配置模块、路径提取模块、代码定位模块和代码补丁功能模块,
所述初始化配置模块用于
对关键点进行定义,完成关键点的初始化,所述关键点包括源点、沉淀点、入口点和出口点;对配置文件解析将源点、沉淀点和出口点存入内存,对安卓应用程序进行分析匹配,先计算入口点,并将入口点存入内存;
所述路径提取模块用于
获取初始化配置存在内存中的关键点,并且将其设置为路径提取的起始点和结束点;
使用静态分析,构造出其所在的控制流图,定位到程序中的起始点和结束点;
使用静态污点分析,使用向前分析和向后分析,计算所有的数据流图;
标记出所有从起始点至结束点可疑的路径;
所述代码定位模块用于根据路径提取模块所提取的路径,对入口点、出口点和沉淀点三个关键点进行定位;
所述代码补丁功能模块包括越权攻击补丁单元、信息泄露补丁单元和合谋攻击补丁单元;所述越权攻击补丁单元用于对越权攻击发生的入口点进行补丁,并应用越权攻击防护算法;信息泄露补丁单元用于对信息泄露发生的沉淀点进行补丁,分析所有可能外泄的敏感数据,进行防护;合谋攻击补丁单元用于对合谋攻击可能发生的出口点进行补丁,将源点的信息添加进应用间通信的消息句柄中,同时将可能通过该应用进行合谋的通道阻断。
与现有技术相比,本发明具有如下优点和有益效果:
1.采用静态分析和动态防护相结合的方式,克服了以往方法针对应用内部恶意行为的不足,提供了一种针对应用间恶意攻击的防护方法,使得防护效果更好且全面有效。同时采用模块化的操作,方便在各个运行步骤中进行扩展。
2.克服了以往需要在全局进行访问策略控制的缺点,采用了静态分析的策略,能够高效找出所有潜在的应用间攻击面,进而针对这些攻击面进行修补,最小范围内修改现有应用的代码,有效防止应用间攻击的发生。
3.摒弃了以往较粗的路径生成方法,采用了细粒度的路径分割策略,将应用程序中的关键点分为源点、沉淀点、入口点和出口点,进而能够有效针对不同类型的攻击,使得防护效果更好更精确。
4.提出一个创新的双向防护的概念。采用了权限聚集策略来防护越权攻击,将入口点所能到达的所有的权限聚集到入口点方法上,通过权限切割的方法,能够在源头上阻止越权攻击。同时在出口点和沉淀点进行分析,防止敏感信息从关键点泄露到外部环境中。
5.不依赖于得到安卓程序的源码,能够在没有源码的情况下对安卓程序进行分析、定位和补丁操作。同时所有流程都是自动化的,从路径提取,到补丁修复所有的操作都是自动化的,能够为大规模操作打下良好基础。
6.不修改安卓系统内核层和中间件层的任何代码,不依赖于应用开发人员进行安全防护,同时整个补丁生成的时间较短,运行时性能损耗低。
附图说明
图1为本发明提供的基于安卓应用间攻击的自动化补丁系统的系统架构图。
图2为关键点定位步骤流程图。
图3为越权攻击补丁步骤的流程图。
图4为信息泄露补丁步骤的流程图。
图5为合谋攻击补丁步骤的流程图。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
本发明中系统运行在应用层,能够十分精确的捕获上层语义,进而识别出恶意的行为,并针对这种行为进行自动化补丁;同时使用双向控制,能够识别出较为丰富的攻击类型,具备较强的分析防护能力。基于此,本发明提供了基于安卓应用间攻击的自动化补丁系统,其架构如图1所示本系统主要由四个模块组成——初始化配置模块、路径提取模块、代码定位模块和代码补丁功能模块。自动化补丁系统为防护各种应用间攻击提供便利,各个模块相互配合,完成防护工作。各个模块都可以通过增加或修改功能子模块实现功能的扩展和改善。
其中,初始化配置模块用于在分析之前对所有可能出现的关键点进行定义,完成关键点的初始化。上述关键点包括源点、沉淀点、入口点和出口点,其中源点定义为与权限相关的API调用代码片段,沉淀点定义为发生数据传送出设备的代码片段,入口点定义为进入一个应用的入口方法,出口点定义为跳转到应用内其他组件或者跳转到其他应用组件的代码片段。初始化配置模块通过对配置文件解析将源点、沉淀点和出口点存入内存;通过对安卓应用程序中进行分析匹配,对入口点需要首先计算入口点,并存入内存。在初始化配置过程完成后将控制权交给路径提取模块组。
路径提取模块用于提供数据流分析支持,基于初始化配置模块存入的关键点,对安卓应用程序进行分析,提取出五种关键路径:源点至沉淀点,源点至出口点,入口点至沉淀点,入口点至出口点,入口点至源点。本模块具体实现以下功能:获取初始化配置中存在内存中的关键点,并且将其设置为路径提取的起始点和结束点;使用静态分析,构造出其所在的控制流图,定位到程序中的起始点和结束点;使用静态污点分析,使用向前分析和向后分析,计算所有的数据流图;标记出所有从起始点至结束点可疑的路径,并将其提供给代码定位模块。
代码定位模块用于根据路径提取模块所提取的路径,对应用间攻击存在较为广泛的三个关键点上进行定位,这三个关键点包括入口点、出口点和沉淀点;并将定位的结果提供给代码补丁功能模块组。
代码补丁功能模块用于根据代码定位模块提供的结果,根据不同需要打上不同的补丁。代码补丁功能模块包括三个补丁单元——越权攻击补丁单元、信息泄露补丁单元和合谋攻击补丁单元。越权攻击补丁单元用于对越权攻击发生的入口点进行补丁,将越权攻击防护算法应用到该补丁中;信息泄露补丁单元用于对信息泄露发生的沉淀点进行补丁,分析所有可能外泄的敏感数据,进行防护;合谋攻击补丁单元用于对合谋攻击可能发生的出口点进行补丁,将源点的信息添加进应用间通信的消息句柄中,同时将可能通过该应用进行合谋的通道给阻断。
基于上述系统,本发明提供的基于安卓应用间攻击的自动化补丁方法,具体包括如下步骤:
步骤一、配置初始化:
首先通过定义外部配置文件和分析安卓程序得到其中所有的关键点:源点、沉淀点、入口点和出口点。
其次,针对配置文件,需要对所有的配置文件进行解析和针对分析安卓程序得到的关键点,通过解析形成关键点数据结构,将数据存入内存。上述安卓关键点配置文件的内容为文本格式,文本中每一行存储需要匹配的关键点信息。
在进行关键点解析时不同的关键点类型采用不同的解析方法:当关键点为源点、沉淀点和出口点的时候,需要对相应的配置文件进行解析,随后匹配具体的代码执行片段。当关键点为入口点的时候,需要根据安卓程序清单文件计算出所有的入口点。其中计算入口点的过程具体包括如下步骤:
(1)获取安卓程序Manifest文件;
(2)针对Manifest文件解析出所有组件,通过对所有组件进行条件筛选,得到入口点所在的类;
(3)针对每个入口点所在类,提取所有的生命周期方法和能够进行通信的回调方法,即为入口点;
(4)将所有的入口点解析成关键点数据结构,存入内存中。
步骤二、路径提取:
根据已有的四种关键点,对安卓应用程序进行分析,提取出五种关键路径:源点至沉淀点,源点至出口点,入口点至沉淀点,入口点至出口点,入口点至源点。
本步骤具体步骤如下:
(1)初始化运行环境配置,设定分析的平台以及使用的基础工具;
(2)使用静态分析,构造控制流图,在安卓应用程序中找出所有符合条件的开始点和结束点;
(3)使用静态污点分析,通过向前分析和向后分析找出所有存在的数据流;
(4)构造从开始点至结束点的关键路径。步骤二中需要构造出五种不同类型的路径,源点至沉淀点,源点至出口点,入口点至沉淀点,入口点至出口点以及入口点至源点。针对需要构造的不同路径,每次需要重新定义起始点和结束点。
(5)将关键路径记录至路径文件中。
步骤三、关键点定位:
请参阅图2,本步骤根据步骤二提供的关键路径,对入口点、出口点和沉淀点进行定位。定位入口点时根据入口点至源点的关键路径,查找出所有可能存在越权攻击的入口点。首先对安卓应用程序进行反编译,会生成相应的反编译目录,目录下包含反编译出来的文件;利用文件传输类,将步骤二中生成的关键路径文件复制到反编译目录下;找出所有入口点方法,找到其所在的目录、类、方法以及行;通过加载路径文件,读入整个文件的内容,使用定位模块进行筛选,定位到所在的入口点方法位置;根据沉淀点和出口点所在的目录、类、方法以及行,我们同样可以定位具体的沉淀点和出口点;进行定位的文件是安卓中间Smali代码文件。本步骤中定位的方式会根据关键点的类型而不同。
本步骤反编译过程中生成的文件主要包含安卓Manifest文件,安卓资源文件,安卓中间Smali代码文件。
步骤四、应用间攻击补丁:
根据步骤三提供的位置,根据不同需要打上不同的补丁。
(1)在入口点我们需要针对越权攻击进行补丁,通过在入口点至源点的路径中使用权限聚集算法,获取入口点方法上所有的权限,对外部调用者进行权限切割,进而起到防护作用;对于越权攻击进行补丁的流程请参阅图3,具体步骤如下:
1.分析入口点所携带的通信句柄信息,获取调用者应用程序包名;
2.识别调用者应用包名和入口点所在应用的包名是否一致,如果一致,则表明是应用内通信,不需进行判断是否越权,跳出越权攻击分析步骤并继续执行正常后续步骤;如果不一致,表明是两个不同的应用,继续下一步越权分析;
3.读取生成的入口点至源点的路径文件,对路径文件进行解析,存储成入口点方法和权限集合的映射关系的数据结构,匹配当前的入口点方法,获取其上面聚集的权限集合,将其设置为入口点权限集合,并存入内存中;
4.获取设备上所有应用的包名和权限集合的映射关系,存储至内存中,根据调用者应用程序的包名,获取出调用者应用上所有的权限集合,将其设置为调用者权限集合,存入内存;
5.将入口点权限集合和调用者权限集合做差集,在入口点权限集合中删除所有出现在调用者权限集合中的权限,并将结果定义为权限差集,存入内存中;
6.判断上述步骤中计算出的差集是否为空,如果为空,则表明没有发生越权调用,继续执行正常后续步骤;如果不为空,则表明发生越权调用,直接警告用户此处发生越权调用,中断后续越权操作。
(2)对于信息泄露,分析源点至沉淀点的路径可以识别应用内泄露,分析入口点至沉淀点的路径可以防止应用间泄露,通过获取入口点中所包含的参数,判断其是否存在敏感信息,进而判断出该路径是否存在应用间信息泄露的风险;对于信息泄露进行防护的流程请参阅图4,具体步骤如下:
1.读取生成的源点至沉淀点的路径文件,对路径文件进行解析,提取存在的所有的沉淀点集合;
2.判断是否存在源点至沉淀点的路径,如果存在,跳转至步骤3;如果不存在,跳转至步骤4;
3.发生应用内部信息泄露,阻止泄露操作,结束程序;
4.提取入口点至沉淀点的路径,将其存入内存;
5.对入口点所包含的通信消息句柄,提取出其中的信息,存入内存;
6.分析入口点所携带的通信句柄信息,判断其中是否存在敏感信息,如果不存在敏感信息,则跳至步骤9;如果存在敏感信息,跳至步骤7;
7.判断在整条路径中是否存在将敏感信息通过沉淀点发送出去的操作,如果不存在,则跳至步骤9;如果存在,则跳至步骤8;
8.数据泄露发生,结束程序;
9.运行正常后续步骤。
(3)对于合谋攻击,我们从一个中间者的角度来杜绝这种攻击的发生,如果入口点至出口点中存在相应的不明信息的传播,我们需要对此进行防范。最后对打上补丁的中间代码进行重新编译,打包和签名。对于合谋攻击进行防护的流程请参阅图5,具体步骤如下:
1.加载入口点至出口点的路径文件,获取路径中所有的代码片段;
2.解析所有的代码片段,建立所有代码片段的列表;
3.分析是否存在从入口点参数句柄中获取相应的参数的操作,如果存在,则进行步骤4,否则跳至步骤6;
4.分析步骤2中所有的代码判断列表,是否存在将步骤3中的参数传入出口点参数句柄的操作,如果存在,表明入口点至出口点存在一条路径,可以被利用传送数据,跳转至步骤5;如果不存在,跳至步骤6;
5.发生合谋攻击,弹出提示框,提示用户存在风险;
6.运行正常后续步骤。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (8)

1.基于安卓程序应用间攻击的自动化补丁方法,其特征在于,包括如下步骤:
步骤一、配置初始化:
通过定义外部配置文件和分析安卓程序得到其中所有的关键点:源点、沉淀点、入口点和出口点;通过解析形成关键点数据结构,将数据存入内存;所述源点定义为与权限相关的API调用代码片段,所述沉淀点定义为发生数据传送出设备的代码片段,所述入口点定义为进入一个应用的入口方法,所述出口点定义为跳转到应用内其他组件或者跳转到其他应用组件的代码片段;
步骤二、路径提取:
根据已有的四种关键点,设定开始点和结束点;
然后构造控制流图,在安卓应用程序中找出所有符合条件的开始点和结束点;
使用静态污点分析,通过向前分析和向后分析找出所有存在的数据流;构造从开始点至结束点的关键路径;
将关键路径记录至路径文件中;
步骤三、关键点定位:
根据步骤二提供的关键路径,对入口点、出口点和沉淀点进行定位,定位关键点时根据其所在的关键路径,查找出所有可能存在越权攻击的关键点;
步骤四、应用间攻击补丁:
包括越权攻击分析步骤、信息泄露分析步骤和合谋攻击分析步骤,
所述越权攻击分析步骤包括:
(1)分析入口点所携带的通信句柄信息,获取调用者应用程序包名;
(2)识别调用者应用包名和入口点所在应用的包名是否一致,如果一致,继续执行步骤(7);如果不一致,继续下一步越权分析;
(3)读取生成的入口点至源点的路径文件,对路径文件进行解析,存储成入口点方法和权限集合的映射关系的数据结构,匹配当前的入口点方法,获取其上面聚集的权限集合,将其设置为入口点权限集合,并存入内存中;
(4)获取设备上所有应用的包名和权限集合的映射关系,存储至内存中,根据调用者应用程序的包名,获取出调用者应用上所有的权限集合,将其设置为调用者权限集合,存入内存;
(5)将入口点权限集合和调用者权限集合做差集,在入口点权限集合中删除所有出现在调用者权限集合中的权限,并将结果定义为权限差集,存入内存中;
(6)判断上述步骤中计算出的差集是否为空,如果为空,则继续执行步骤(7);如果不为空,则直接警告用户此处发生越权调用,中断后续越权操作;
(7)运行正常后续步骤;
所述信息泄露分析步骤包括:分析源点至沉淀点的路径识别应用内泄露并阻止泄漏,分析入口点至沉淀点的路径通过获取入口点中所包含的参数,判断其是否存在敏感信息,进而判断出该路径是否存在应用间信息泄露的风险,如存在风险则阻止泄漏;
所述合谋攻击分析步骤包括:对合谋攻击可能发生的出口点进行补丁,将源点的信息添加进应用间通信的消息句柄中,同时将可能通过该应用进行合谋的通道给阻断。
2.根据权利要求1所述的基于安卓程序应用间攻击的自动化补丁方法,其特征在于,所述步骤一中解析方法包括以下步骤:当关键点为源点、沉淀点和出口点时,对相应的配置文件进行解析,随后匹配具体的代码执行片段;当关键点为入口点的时候,根据安卓程序清单文件计算出所有的入口点。
3.根据权利要求2所述的基于安卓程序应用间攻击的自动化补丁方法,其特征在于,所述计算入口点的过程具体包括如下步骤:
(1)获取安卓程序Manifest文件;
(2)针对Manifest文件解析出所有组件,通过对所有组件进行条件筛选,得到入口点所在的类;
(3)针对每个入口点所在类,提取所有的生命周期方法和能够进行通信的回调方法,即为入口点;
(4)将所有的入口点解析成关键点数据结构,存入内存中。
4.根据权利要求1所述的基于安卓程序应用间攻击的自动化补丁方法,其特征在于,所述步骤二中需要构造出以下五种路径:源点至沉淀点,源点至出口点,入口点至沉淀点,入口点至出口点以及入口点至源点;针对需要构造的不同路径,每次需要重新定义起始点和结束点。
5.根据权利要求1所述的基于安卓程序应用间攻击的自动化补丁方法,其特征在于,所述步骤三中关键点定位过程如下:
对安卓应用程序进行反编译,生成相应的反编译目录和反编译文件;
利用文件传输类,将步骤二中生成的关键路径文件复制到反编译目录下;
找出所有关键点方法,找到其所在的目录、类、方法以及行;
通过加载路径文件,读入整个文件的内容,使用定位模块进行筛选,定位到所在的关键点方法位置。
6.根据权利要求1所述的基于安卓程序应用间攻击的自动化补丁方法,其特征在于,所述步骤四中信息泄露分析步骤具体如下:
(1)读取生成的源点至沉淀点的路径文件,对路径文件进行解析,提取存在的所有的沉淀点集合;
(2)判断是否存在源点至沉淀点的路径,如果存在,跳转至步骤3;如果不存在,跳转至步骤4;
(3)发生应用内部信息泄露,阻止泄露操作,结束程序;
(4)提取入口点至沉淀点的路径,将其存入内存;
(5)对入口点所包含的通信消息句柄,提取出其中的信息,存入内存;
(6)分析入口点所携带的通信句柄信息,判断其中是否存在敏感信息,如果不存在敏感信息,则跳至步骤9;如果存在敏感信息,跳至步骤7;
(7)判断在整条路径中是否存在将敏感信息通过沉淀点发送出去的操作,如果不存在,则跳至步骤9;如果存在,则跳至步骤8;
(8)数据泄露发生,结束程序;
(9)运行正常后续步骤。
7.根据权利要求1所述的基于安卓程序应用间攻击的自动化补丁方法,其特征在于,所述步骤四中合谋攻击分析步骤具体如下:
(1)加载入口点至出口点的路径文件,获取路径中所有的代码片段;
(2)解析所有的代码片段,建立所有代码片段的列表;
(3)分析代码片段列表中是否存在从入口点参数句柄中获取相应的参数的操作,如果存在,则进行步骤4,否则跳至步骤6;
(4)分析步骤2中所有的代码片段列表中是否存在将步骤3中的参数传入出口点参数句柄的操作,如果存在,跳转至步骤5;如果不存在,跳至步骤6;
(5)发生合谋攻击,弹出提示框,提示用户存在风险;
(6)运行正常后续步骤。
8.基于安卓程序应用间攻击的自动化补丁系统,用于实现权利要求1~7中任意一项所述的基于安卓程序应用间攻击的自动化补丁方法,其特征在于:
包括初始化配置模块、路径提取模块、代码定位模块和代码补丁功能模块,
所述初始化配置模块用于
对关键点进行定义,完成关键点的初始化,所述关键点包括源点、沉淀点、入口点和出口点;对配置文件解析将源点、沉淀点和出口点存入内存,对安卓应用程序进行分析匹配,先计算入口点,并将入口点存入内存;
所述路径提取模块用于
获取初始化配置存在内存中的关键点,并且将其设置为路径提取的起始点和结束点;
使用静态分析,构造出其所在的控制流图,定位到程序中的起始点和结束点;
使用静态污点分析,使用向前分析和向后分析,计算所有的数据流图;
标记出所有从起始点至结束点可疑的路径;
所述代码定位模块用于根据路径提取模块所提取的路径,对入口点、出口点和沉淀点三个关键点进行定位;
所述代码补丁功能模块包括越权攻击补丁单元、信息泄露补丁单元和合谋攻击补丁单元;所述越权攻击补丁单元用于对越权攻击发生的入口点进行补丁,并应用越权攻击防护算法;信息泄露补丁单元用于对信息泄露发生的沉淀点进行补丁,分析所有可能外泄的敏感数据,进行防护;合谋攻击补丁单元用于对合谋攻击可能发生的出口点进行补丁,将源点的信息添加进应用间通信的消息句柄中,同时将可能通过该应用进行合谋的通道阻断。
CN201610313468.5A 2016-05-12 2016-05-12 基于安卓程序应用间攻击的自动化补丁系统及方法 Active CN106022116B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610313468.5A CN106022116B (zh) 2016-05-12 2016-05-12 基于安卓程序应用间攻击的自动化补丁系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610313468.5A CN106022116B (zh) 2016-05-12 2016-05-12 基于安卓程序应用间攻击的自动化补丁系统及方法

Publications (2)

Publication Number Publication Date
CN106022116A CN106022116A (zh) 2016-10-12
CN106022116B true CN106022116B (zh) 2018-11-06

Family

ID=57100170

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610313468.5A Active CN106022116B (zh) 2016-05-12 2016-05-12 基于安卓程序应用间攻击的自动化补丁系统及方法

Country Status (1)

Country Link
CN (1) CN106022116B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107220537B (zh) * 2017-05-25 2021-02-23 南京大学 一种程序内存布局信息泄露行为的检测方法
CN107506648B (zh) * 2017-08-07 2021-02-23 创新先进技术有限公司 查找应用漏洞的方法、装置和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104766012A (zh) * 2015-04-09 2015-07-08 广东电网有限责任公司信息中心 基于动态污点追踪的数据安全动态检测方法及系统
CN104834862A (zh) * 2015-03-25 2015-08-12 南京大学 一种安卓权限提升攻击的全面静态分析系统
CN104834859A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种Android应用中恶意行为的动态检测方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8875298B2 (en) * 2012-02-16 2014-10-28 Nec Laboratories America, Inc. Method for scalable analysis of android applications for security vulnerability
US9798981B2 (en) * 2013-07-31 2017-10-24 Entit Software Llc Determining malware based on signal tokens

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834862A (zh) * 2015-03-25 2015-08-12 南京大学 一种安卓权限提升攻击的全面静态分析系统
CN104766012A (zh) * 2015-04-09 2015-07-08 广东电网有限责任公司信息中心 基于动态污点追踪的数据安全动态检测方法及系统
CN104834859A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种Android应用中恶意行为的动态检测方法

Also Published As

Publication number Publication date
CN106022116A (zh) 2016-10-12

Similar Documents

Publication Publication Date Title
Qamar et al. Mobile malware attacks: Review, taxonomy & future directions
CN1983296B (zh) 用于防止非法程序窃取用户信息的方法及装置
Sharmeen et al. Malware threats and detection for industrial mobile-IoT networks
KR102306568B1 (ko) 컴퓨터 시스템의 제어 흐름 무결성의 프로세서 트레이스 기반 집행
CN104933362B (zh) Android应用软件API误用类漏洞自动化检测方法
CN106203113B (zh) 安卓应用文件的隐私泄露监控方法
Homayoun et al. A blockchain-based framework for detecting malicious mobile applications in app stores
WO2015124018A1 (zh) 基于智能终端设备的应用程序访问方法与装置
Berthome et al. Repackaging android applications for auditing access to private data
CN112685737A (zh) 一种app的检测方法、装置、设备及存储介质
CN109101815A (zh) 一种恶意软件检测方法及相关设备
Milosevic et al. Malware in IoT software and hardware
Ziegler et al. Privacy and security threats on the Internet of Things
CN106022116B (zh) 基于安卓程序应用间攻击的自动化补丁系统及方法
CN106485170A (zh) 一种信息输入方法和装置
CN106682493B (zh) 一种防止进程被恶意结束的方法、装置及电子设备
CN106295336B (zh) 恶意程序检测方法及装置
Louk et al. An analysis of security system for intrusion in smartphone environment
Kulkarni et al. Open source android vulnerability detection tools: a survey
Yadav et al. A Review on malware analysis for IoT and android system
Zhang et al. Android Application Security: A Semantics and Context-Aware Approach
Chen et al. Detecting mobile application malicious behaviors based on data flow of source code
CN114357387A (zh) java应用程序防篡改的判断方法、编译方法及设备
Benedetti et al. Alice in (software supply) chains: risk identification and evaluation
Andriatsimandefitra et al. Diagnosing intrusions in android operating system using system flow graph

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant