一种安卓嫌疑软件的同源识别方法及装置与流程

文档序号:12734578阅读:560来源:国知局
一种安卓嫌疑软件的同源识别方法及装置与流程

本发明涉及移动互联网安全技术领域,尤其涉及一种安卓嫌疑软件的同源识别方法及装置。



背景技术:

移动互联网的快速发展极大地丰富了人们的生活,移动终端用户可以使用安卓市场提供的多种多样的应用进行办公和娱乐,而恶意软件的不断增多也给终端用户带来了极大的困扰。由于目前很多开源的反编译工具可以对安卓应用进行破解,所以,部分恶意开发者便通过破解应用市场中的应用,通过复制代码、增添或删减部分代码、使用代码中的算法等方式对安卓软件进行克隆。由此可见,除了潜在的恶意问题,安卓市场的应用克隆也给移动终端用户带来了新的威胁。所以,亟待需要发现这些同源的安卓软件来减轻这些安全威胁。

目前识别安卓同源应用的方法主要是基于函数控制流图的几何特征,如“Achieving Accuracy and Scalability Simultaneously in Detecting Application Clones on Android Markets”中通过测量两个APP的methods的相似度,根据相似度得出是否为APP克隆的结论;“Finding Unknown Malice in 10 Seconds:Mass Vetting for New Threats atthe Google-Play Scale”在软件同源性的基础上对android软件进行“同源”和“非同源”分类,并进行函数级别和视图级别的相关性分析,从而根据同源软件的代码特征定位恶意代码。

这种基于函数控制流的几何特征识别方法虽然具有较高的精确度,但是对计算节点的配置具有较高的要求,需要支持程序高并发执行才能快速获取结果,同时这种方法对于混淆后的APK无法进行准确判断。



技术实现要素:

本发明的目的在于提供一种安卓嫌疑软件的同源识别方法及装置,解决现有技术中对计算节点配置高,需支持程序高并发执行,且无法对混淆后的APK进行准确判断的问题。

本发明的技术方案实现如下:

本发明的一个目的在于提供一种安卓嫌疑软件的同源识别方法,包括:

对APK进行静态分析,从而定位所述APK的敏感行为,提取所述敏感行为的嫌疑路径,获取所述嫌疑路径的触发方式;

对所述APK与其同源软件进行敏感行为比对;

对所述APK与其同源软件进行所述敏感行为的嫌疑路径比对;

对所述APK与其同源软件进行所述嫌疑路径的触发方式比对。

在本发明所述的同源识别方法中,所述对APK进行静态分析,从而定位所述APK的敏感行为,提取所述敏感行为的嫌疑路径,获取所述嫌疑路径的触发方式的步骤包括:

对所述APK进行反编译,通过静态分析方法对所述APK的代码进行扫描,定位得到所述APK的敏感行为;

通过控制流分析提取所述敏感行为的嫌疑路径;

根据所述嫌疑路径的头节点获取所述触发方式。

在本发明所述的同源识别方法中,所述对所述APK与其同源软件进行敏感行为比对的步骤包括:

将所述敏感行为转化为二进制字符串;

将所述APK的敏感行为的二进制字符串与同源软件的敏感行为列表进行比对,若存在相同的字符串,则对所述APK与其同源软件进行所述敏感行为的嫌疑路径比对,若不存在相同的字符串,则认为所述APK为非嫌疑软件。

在本发明所述的同源识别方法中,所述对所述APK与其同源软件进行所述敏感行为的嫌疑路径比对的步骤包括:

获取所述敏感行为的嫌疑路径的数量;

对所述APK与其同源软件进行所述嫌疑路径的数量比对,若所述APK的嫌疑路径的数量与其同源软件的嫌疑路径的数量的差值处于预设范围之内,则对所述APK与其同源软件进行所述嫌疑路径的触发方式比对,若所述差值处于所述预设范围之外,则认为所述APK为非嫌疑软件。

在本发明所述的同源识别方法中,所述对所述APK与其同源软件进行所述嫌疑路径的触发方式比对的步骤包括:

依据所述嫌疑路径的头节点确定所述触发方式为系统触发或UI触发或其它触发;

对所述APK与其同源软件的每一嫌疑路径进行触发方式比对,若相同的触发方式的数量处于预设范围之内,则确认所述APK与其同源软件属于同一软件组,并将所述APK进入所述同源软件族中,若否,则认为所述APK为非嫌疑软件。

另一方面,提供一种安卓嫌疑软件的同源识别装置,包括:

静态分析模块,用于对APK进行静态分析,从而定位所述APK的敏感行为,提取所述敏感行为的嫌疑路径,获取所述嫌疑路径的触发方式;

敏感行为比对模块,用于对所述APK与其同源软件进行敏感行为比对;

嫌疑路径比对模块,用于对所述APK与其同源软件进行所述敏感行为的嫌疑路径比对;

触发方式比对模块,用于对所述APK与其同源软件进行所述嫌疑路径的触发方式比对。

在本发明所述的同源识别装置中,所述静态分析模块包括:

敏感行为定位子模块,用于对所述APK进行反编译,通过静态分析方法对所述APK的代码进行扫描,定位得到所述APK的敏感行为;

嫌疑路径提取子模块,用于通过控制流分析提取所述敏感行为的嫌疑路径;

触发方式获取子模块,用于根据所述嫌疑路径的头节点获取所述触发方式。

在本发明所述的同源识别装置中,所述敏感行为比对模块包括:

字符串转化子模块,用于将所述敏感行为转化为二进制字符串;

敏感行为比对子模块,用于将所述APK的敏感行为的二进制字符串与同源软件的敏感行为列表进行比对,若存在相同的字符串,则对所述APK与其同源软件进行所述敏感行为的嫌疑路径比对,若不存在相同的字符串,则认为所述APK为非嫌疑软件。

在本发明所述的同源识别装置中,所述嫌疑路径比对模块包括:

数量获取子模块,用于获取所述敏感行为的嫌疑路径的数量;

嫌疑路径比对子模块,用于对所述APK与其同源软件进行所述嫌疑路径的数量比对,若所述APK的嫌疑路径的数量与其同源软件的嫌疑路径的数量的差值处于预设范围之内,则对所述APK与其同源软件进行所述嫌疑路径的触发方式比对,若所述差值处于所述预设范围之外,则认为所述APK为非嫌疑软件。

在本发明所述的同源识别装置中,所述触发方式比对模块包括:

触发方式确定子模块,用于依据所述嫌疑路径的头节点确定所述触发方式为系统触发或UI触发或其它触发;

触发方式比对子模块,用于对所述APK与其同源软件的每一嫌疑路径进行触发方式比对,若相同的触发方式的数量处于预设范围之内,则确认所述APK与其同源软件属于同一软件组,并将所述APK进入所述同源软件族中,若否,则认为所述APK为非嫌疑软件。

因此,本发明的有益效果是,该同源识别方法及装置快速简单,大大降低了自动化分析的计算量,并为进一步的人工分析提供技术支持,从而降低了人工分析的工作量,而且对计算节点的要求低。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为本发明提供的一种安卓嫌疑软件的同源识别方法流程图;

图2为本发明提供的一种安卓嫌疑软件的同源识别方法示意图;

图3为本发明第一实施例提供的同源软件族示意图;

图4为本发明第二实施例提供的同源软件族示意图;

图5为本发明提供的一种安卓嫌疑软件的同源识别装置框图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,以下将对照附图详细说明本发明的具体实施方式。应当理解,以下说明仅为本发明实施例的具体阐述,不应以此限制本发明的保护范围。

本发明提供一种安卓嫌疑软件的同源识别方法及装置,其目的在于,采用了轻量级方法,关注静态分析程序提取的软件敏感行为、敏感行为的函数调用路径以及敏感行为的触发方式等关键点,通过判断软件是否具备相同的敏感行为,对于具有相同敏感行为的软件,判断这些敏感行为的函数调用路径条数是否相近。如果两个APP(Application)对应的敏感行为函数调用路径数量差异较小,则通过比对敏感行为的触发方式是否相似,最终判定两个APP是否是同源软件。该方法的优点是快速、简单,对计算节点的要求较低。本发明利用静态分析技术,获取安卓软件可能存在的敏感行为,对于具有相同敏感行为的软件,确定敏感行为的疑似路径数是否相近,并判定敏感行为的UI触发条件是否相似。

参见图1,图1为本发明提供的一种安卓嫌疑软件的同源识别方法流程图,该同源识别方法包括以下步骤:

S1、对APK(AndroidPackage)进行静态分析,从而定位所述APK的敏感行为,提取所述敏感行为的嫌疑路径,获取所述嫌疑路径的触发方式;所述步骤S1包括以下子步骤:

S11、对所述APK进行反编译,通过静态分析方法对所述APK的代码进行扫描,定位得到所述APK的敏感行为;例如,将待测APK进行反编译,通过静态分析方法对smali(Smali是指安卓系统里的Java虚拟机所使用的一种.dex格式文件的汇编器。)代码进行扫描,定位得到软件的敏感行为。

S12、通过控制流分析提取所述敏感行为的嫌疑路径;例如,利用Dalvik(Java虚拟机)字节码的控制流分析技术,提取敏感行为的嫌疑路径。

S13、根据所述嫌疑路径的头节点获取所述触发方式。综合上述步骤S11及S12,Android软件中存在一些可能泄露用户隐私和恶意攻击的行为,本申请将这些行为定义为敏感行为,主要包括Get device id、Send Text Message、Read Contacts等,具体见表一。当定位到敏感行为后,如定位到Android APP具有“Get device id”行为,便可通过控制流分析获取该敏感行为对应的所有单条函数调用路径。对于每条调用路径的头节点,如果其API(Application Programming Interface,应用程序编程接口)为onReceive或者onLocationChanged,则认为该路径的触发方式为系统触发,否则为UI(User Interface)触发或者未知触发方式。通过这种方法,便可获取每条路径的触发方式,确认其是UI触发或者系统触发。

表一 敏感行为列表

S2、对所述APK与其同源软件进行敏感行为比对;该步骤S2包括以下子步骤:

S21、将所述敏感行为转化为二进制字符串;例如,获取到软件的敏感行为后,将敏感行为以0/1二进制的形式进行表示,0表示无此敏感行为,1表示有此行为。

S22、将所述APK的敏感行为的二进制字符串与同源软件的敏感行为列表进行比对,若存在相同的字符串,则对所述APK与其同源软件进行所述敏感行为的嫌疑路径比对,若不存在相同的字符串,则认为所述APK为非嫌疑软件。对于同源软件,一般认为这些软件具有相似的功能,所以,Android问题软件应该与其同源软件具有相同的敏感行为。假定同源软件具有相同的敏感行为。通过这种方式将软件的敏感行为列表转换为二进制字符串,并与同源软件族中的敏感行为进行比较。若同源软件族中没有与此软件相同的敏感行为列表,则退出当前APK的分析;否则进一步比对敏感行为的疑似路径数。

S3、对所述APK与其同源软件进行所述敏感行为的嫌疑路径比对;该步骤S3包括以下子步骤:

S31、获取所述敏感行为的嫌疑路径的数量;即根据静态分析结果,获取待测APK中每个敏感行为的疑似路径数量。

S32、对所述APK与其同源软件进行所述嫌疑路径的数量比对,若所述APK的嫌疑路径的数量与其同源软件的嫌疑路径的数量的差值处于预设范围之内,则对所述APK与其同源软件进行所述嫌疑路径的触发方式比对,若所述差值处于所述预设范围之外,则认为所述APK为非嫌疑软件。与同源软件族中与此APK具有相同敏感行为的软件进行疑似路径数量的比对。鉴于同源软件在代码上会有部分修改,所以在进行疑似路径数量比对时,假定数量比对可以存在10%的误差。即,如果同源软件族中某APK的Get device id行为有100条疑似路径,则被测软件如果有90-110条路径,便认为两个敏感行为的路径数量相近。若确认被测APK与同源软件族中APK的所有疑似路径相近,则进入触发方式的比对阶段,否则退出当前APK的分析。

S4、对所述APK与其同源软件进行所述嫌疑路径的触发方式比对。该步骤S4包括以下子步骤:

S41、依据所述嫌疑路径的头节点确定所述触发方式为系统触发或UI触发或其它触发。

S42、对所述APK与其同源软件的每一嫌疑路径进行触发方式比对,若相同的触发方式的数量处于预设范围之内,则确认所述APK与其同源软件属于同一软件组,并将所述APK进入所述同源软件族中,若否,则认为所述APK为非嫌疑软件。与同源软件族中与此APK具有相同敏感行为的软件进行疑似路径触发方式的比对。与步骤S32同理,假定触发方式比对可以存在10%的误差。若比对后确认被测APK与同源软件族中APK的触发方式不相似时,则退出本APK的分析;否则,确认该APK属于某一软件族,并将此软件加入同源软件族,当确定被测APK与同源软件族中样本为同类软件后,便可将该APK信息加入同源软件族。该识别方法快速简单,大大降低了自动化分析的计算量,并为进一步的人工分析提供技术支持,从而降低了人工分析的工作量。至此,该被测APK的识别结束。

实现上述步骤S1-S4的嫌疑软件同源识别算法的伪代码如下:

Input:target APK’sbehavior,evidence and trigger_mode

Output:whether the APK is similar to other APK

behavior_list=[behavior list]

evidence_count={evidence count for every behavior}

trigger_mode={mode for every behavior}

Target_behavior=[target behavior]

Target_evidence_count={target evidence count}

Target_trigger_mode={target trigger mode}

methodsim_analysis()

behaviorStr=binary_conversion(behavior_list)

ifbehaviorStr in Target_behavior:

for each behavior in behavior_list:

ifevidence_count[behavior]is not equal to Target_evidence_count[behavior]:

return False

iftrigger_mode[behavior]is not equal to Target_triggermode[behavior]:

return False

return True

综上,如图2所示,图2为本发明提供的一种安卓嫌疑软件的同源识别方法示意图。本申请关注静态分析程序提取的软件敏感行为、敏感行为的函数调用路径以及敏感行为的触发方式等关键点,最终判定两个APP是否是同源软件。本申请主要针对Android嫌疑软件同源识别方向。通过提取静态分析程序获取的敏感行为、敏感行为疑似路径和疑似路径的触发方式三类数据,对比被测软件的三类数据与同源软件族中的某一类软件类似,来自动化地判定被测软件是否软件族中某类软件的同源软件。该自动化识别方法能精确识别同源软件,并降低了计算程序对计算节点的配置要求,简单快速。

针对上述嫌疑软件的同源识别方法,参见以下具体实施例:对于软件87a3635a093f0017bfcb5430d6b345b2.apk,通过静态分析,获取其具有Get device id、Internet connection、Get phone number三种敏感行为,每个敏感行为对应的疑似路径如表二所示。

表二 87a3635a093f0017bfcb5430d6b345b2.apk软件的敏感行为及疑似路径

根据疑似路径函数调用图,可确认Get phone number敏感行为对应的两条路径触发方式为UI触发,Internet connection敏感行为对应的触发方式未知,而Get device id行为对应的两条路径触发方式也均为UI触发。

根据静态分析结果得到的敏感行为,通过二进制转换,可将其转换为序列100000000100000100000000。之后便可通过查看同源软件族中是否有相同的敏感行为列表。该软件对应的疑似路径列表和疑似路径触发方式列表分别为{‘Get phone number’:2,‘Internet connection’:1,‘Get device id’:2}、{‘Get phone number’:[ui,ui],‘Internet connection’:[none],‘Get device id’:[ui,ui]},通过在同源软件族中查看是否有相似的疑似路径列表和疑似路径触发方式列表,本识别算法最终可确定软件87a3635a093f0017bfcb5430d6b345b2.apk在同源软件族中是否有同类软件。

关于同源软件族,参见图3和图4,图3和图4是按照敏感行为和疑似路径数排序截取的两类同源软件,通过get device ID来获取相应的敏感行为,图3的敏感行为为各大网络平台,图4的敏感行为为各大新闻话题,如此,即可通过这些敏感行为判断相应的软件应用的安全性是否合格。

参见图5,提供一种安卓嫌疑软件的同源识别装置100,包括:

静态分析模块1,用于对APK进行静态分析,从而定位所述APK的敏感行为,提取所述敏感行为的嫌疑路径,获取所述嫌疑路径的触发方式;

敏感行为比对模块2,用于对所述APK与其同源软件进行敏感行为比对;

嫌疑路径比对模块3,用于对所述APK与其同源软件进行所述敏感行为的嫌疑路径比对;

触发方式比对模块4,用于对所述APK与其同源软件进行所述嫌疑路径的触发方式比对。

具体的,所述静态分析模块1包括:

敏感行为定位子模块,用于对所述APK进行反编译,通过静态分析方法对所述APK的代码进行扫描,定位得到所述APK的敏感行为;例如,将待测APK进行反编译,通过静态分析方法对smali代码进行扫描,定位得到软件的敏感行为。

嫌疑路径提取子模块,用于通过控制流分析提取所述敏感行为的嫌疑路径;例如,利用Dalvik字节码的控制流分析技术,提取敏感行为的嫌疑路径。

触发方式获取子模块,用于根据所述嫌疑路径的头节点获取所述触发方式。对于每条调用路径的头节点,如果其API为onReceive或者onLocationChanged,则认为该路径的触发方式为系统触发,否则为UI触发或者未知触发方式。通过这种方法,便可获取每条路径的触发方式,确认其是UI触发或者系统触发。

具体的,所述敏感行为比对模块2包括:

字符串转化子模块,用于将所述敏感行为转化为二进制字符串;例如,获取到软件的敏感行为后,将敏感行为以0/1二进制的形式进行表示,0表示无此敏感行为,1表示有此行为。

敏感行为比对子模块,用于将所述APK的敏感行为的二进制字符串与同源软件的敏感行为列表进行比对,若存在相同的字符串,则对所述APK与其同源软件进行所述敏感行为的嫌疑路径比对,若不存在相同的字符串,则认为所述APK为非嫌疑软件。对于同源软件,一般认为这些软件具有相似的功能,所以,Android问题软件应该与其同源软件具有相同的敏感行为。假定同源软件具有相同的敏感行为。通过这种方式将软件的敏感行为列表转换为二进制字符串,并与同源软件族中的敏感行为进行比较。若同源软件族中没有与此软件相同的敏感行为列表,则退出当前APK的分析;否则进一步比对敏感行为的疑似路径数。

具体的,所述嫌疑路径比对模块3包括:

数量获取子模块,用于获取所述敏感行为的嫌疑路径的数量;即根据静态分析结果,获取待测APK中每个敏感行为的疑似路径数量。

嫌疑路径比对子模块,用于对所述APK与其同源软件进行所述嫌疑路径的数量比对,若所述APK的嫌疑路径的数量与其同源软件的嫌疑路径的数量的差值处于预设范围之内,则对所述APK与其同源软件进行所述嫌疑路径的触发方式比对,若所述差值处于所述预设范围之外,则认为所述APK为非嫌疑软件。与同源软件族中与此APK具有相同敏感行为的软件进行疑似路径数量的比对。鉴于同源软件在代码上会有部分修改,所以在进行疑似路径数量比对时,假定数量比对可以存在10%的误差。即,如果同源软件族中某APK的Get device id行为有100条疑似路径,则被测软件如果有90-110条路径,便认为两个敏感行为的路径数量相近。若确认被测APK与同源软件族中APK的所有疑似路径相近,则进入触发方式的比对阶段,否则退出当前APK的分析。

具体的,所述触发方式比对模块4包括:

触发方式确定子模块,用于依据所述嫌疑路径的头节点确定所述触发方式为系统触发或UI触发或其它触发。

触发方式比对子模块,用于对所述APK与其同源软件的每一嫌疑路径进行触发方式比对,若相同的触发方式的数量处于预设范围之内,则确认所述APK与其同源软件属于同一软件组,并将所述APK进入所述同源软件族中,若否,则认为所述APK为非嫌疑软件。与同源软件族中与此APK具有相同敏感行为的软件进行疑似路径触发方式的比对。假定触发方式比对可以存在10%的误差。若比对后确认被测APK与同源软件族中APK的触发方式不相似时,则退出本APK的分析;否则,确认该APK属于某一软件族,并将此软件加入同源软件族,当确定被测APK与同源软件族中样本为同类软件后,便可将该APK信息加入同源软件族。该识别方法快速简单,大大降低了自动化分析的计算量,并为进一步的人工分析提供技术支持,从而降低了人工分析的工作量。至此,该被测APK的识别结束。

本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1