本申请涉及信息安全技术领域,尤其涉及一种android系统恶意应用程序检测方法、装置及终端。
背景技术:
智能手机给我们的工作和生活带来了诸多便利。但与此同时,网络上暗藏着许多恶意应用程序,这些恶意应用程序为智能手机的使用带来巨大的安全隐患,甚至会造成用户财产的损失。因此,android系统下的恶意应用程序的检测一直是移动终端安全领域研究的重点。
随着代码混淆等保护技术的应用,恶意应用程序的检测变得愈加困难。此外,多数用户在安装应用程序时,往往忽视应用程序所申请的权限,这使得恶意应用程序更加猖獗。为了从根本上解决android系统安全保护的问题,学术界对恶意应用程序检测开展了深入研究。目前对android系统恶意应用程序的检测主要针对应用程序的行为,并且,多数研究需要依赖服务端进行特征提取和计算,一方面增加了成本,另一方面,这种检测手段需要依赖网络进行数据的传输,因此不适用于离线检测。
android6.0系统增加了运行时的权限管理,并在最新版本增加了对危险权限申请的限制,但这种权限控制仅针对单一权限或权限组,缺乏权限相关性的分析,不能有效地判定恶意应用程序,也无法向用户展示详细的危险警告。
技术实现要素:
本申请提供了一种android系统恶意应用程序检测方法、装置及终端,以解决现有的检测方式缺乏权限相关性的分析,不能有效地判定恶意应用程序,也无法向用户展示详细的危险警告的问题。
第一方面,本申请提供一种android系统恶意应用程序检测方法,所述方法包括:
获取对未安装应用程序的安装请求;
启动android系统安装器packageinstaller,对所述未安装应用程序进行解析,得到所述未安装应用程序的权限请求数据;
对所述权限请求数据进行组合,得到所述未安装应用程序所请求的权限组;
根据权限组权值数据库,查询所述未安装应用程序所请求的权限组中每个权限组的权值,其中,所述权限组权值数据库通过以下方式得到:以权限组的方式,对android系统中所有权限之间的相关性进行分析,并通过对市场上的应用程序样本进行测试,为每个权限组赋予权值以表示每个权限组的危险程度;
根据所述未安装应用程序所请求的权限组中每个权限组的权值,向用户界面显示对所述未安装应用程序的安装提示信息。
结合第一方面,在第一方面的第一种可实现方式中,所述安装提示信息包括:所述未安装应用程序申请的权限组详情信息、所述权限组的危险系数信息以及处理建议信息。
结合第一方面,在第一方面的第二种可实现方式中,根据所述未安装应用程序所请求的权限组中每个权限组的权值,向用户界面显示对所述未安装应用程序的安装提示信息之后,所述方法还包括:
获取用户对所述未安装应用程序的安装指令;
判断用户是否选择安装所述未安装应用程序;
如果用户选择安装所述未安装应用程序,加载系统内核,调用模拟器对所述未安装应用程序的行为进行监控;
根据所述监控的结果生成监控日志;
对所述监控日志中所述未安装应用程序的行为进行分析;
根据所述分析的结果,生成分析报告;
如果用户选择不安装所述未安装应用程序,直接根据所述安装提示信息生成分析报告。
结合第一方面的第二种可实现方式,在第一方面的第三种可实现方式中,所述方法还包括:
获取已安装应用程序的待检测文件;
对所述待检测文件进行内容特征提取;
根据所述内容特征提取的结果,对所述已安装应用程序进行重打包检测;
判断所述已安装应用程序是否是恶意应用程序;
如果所述已安装应用程序不是恶意应用程序,加载系统内核,调用模拟器对所述已安装应用程序的行为进行监控;
根据所述监控的结果生成监控日志;
对所述监控日志中所述已安装应用程序的行为进行分析;
根据所述分析的结果,生成分析报告;
如果所述已安装应用程序是恶意应用程序,直接根据所述重打包检测的结果生成分析报告。
结合第一方面的第三种可实现方式,在第一方面的第四种可实现方式中,所述行为包括:文件读写行为、网络连接行为、电话拨打行为以及短信发送行为。
第二方面,本申请提供一种android系统恶意应用程序检测装置,所述装置包括:
获取单元,用于获取对未安装应用程序的安装请求;
解析单元,用于启动android系统安装器packageinstaller,对所述未安装应用程序进行解析,得到所述未安装应用程序的权限请求数据;
组合单元,用于对所述权限请求数据进行组合,得到所述未安装应用程序所请求的权限组;
查询单元,用于根据权限组权值数据库,查询所述未安装应用程序所请求的权限组中每个权限组的权值,其中,所述权限组权值数据库通过以下方式得到:以权限组的方式,对android系统中所有权限之间的相关性进行分析,并通过对市场上的应用程序样本进行测试,为每个权限组赋予权值以表示每个权限组的危险程度;
显示单元,用于根据所述未安装应用程序所请求的权限组中每个权限组的权值,向用户界面显示对所述未安装应用程序的安装提示信息。
结合第二方面,在第二方面的第一种可实现方式中,所述安装提示信息包括:所述未安装应用程序申请的权限组详情信息、所述权限组的危险系数信息以及处理建议信息。
结合第二方面的第一种可实现方式,在第二方面的第二种可实现方式中,
所述获取单元,还用于获取用户对所述未安装应用程序的安装指令;
所述装置还包括:
判断单元,用于判断用户是否选择安装所述未安装应用程序;
监控单元,用于如果用户选择安装所述未安装应用程序,加载系统内核,调用模拟器对所述未安装应用程序的行为进行监控;
日志生成单元,用于根据所述监控的结果生成监控日志;
分析单元,用于对所述监控日志中所述未安装应用程序的行为进行分析;
报告生成单元,用于根据所述分析的结果,生成分析报告;
所述报告生成单元,还用于如果用户选择不安装所述未安装应用程序,直接根据所述安装提示信息生成分析报告。
结合第二方面的第二种可实现方式,在第二方面的第三种可实现方式中,
所述获取单元,还用于获取已安装应用程序的待检测文件;
所述装置还包括:
提取单元,用于对所述待检测文件进行内容特征提取;
检测单元,用于根据所述内容特征提取的结果,对所述已安装应用程序进行重打包检测;
所述判断单元,还用于判断所述已安装应用程序是否是恶意应用程序;
所述监控单元,还用于如果所述已安装应用程序不是恶意应用程序,加载系统内核,调用模拟器对所述已安装应用程序的行为进行监控;
所述日志生成单元,还用于根据所述监控的结果生成监控日志;
所述分析单元,还用于对所述监控日志中所述已安装应用程序的行为进行分析;
所述报告生成单元,还用于根据所述分析的结果,生成分析报告;
所述报告生成单元,还用于如果所述已安装应用程序是恶意应用程序,直接根据所述重打包检测的结果生成分析报告。
结合第二方面的第三种可实现方式,在第二方面的第四种可实现方式中,所述行为包括:文件读写行为、网络连接行为、电话拨打行为以及短信发送行为。
第三方面,本申请提供一种android系统恶意应用程序检测终端,包括:
处理器,以及用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取对未安装应用程序的安装请求;
启动android系统安装器packageinstaller,对所述未安装应用程序进行解析,得到所述未安装应用程序的权限请求数据;
对所述权限请求数据进行组合,得到所述未安装应用程序所请求的权限组;
根据权限组权值数据库,查询所述未安装应用程序所请求的权限组中每个权限组的权值,其中,所述权限组权值数据库通过以下方式得到:以权限组的方式,对android系统中所有权限之间的相关性进行分析,并通过对市场上的应用程序样本进行测试,为每个权限组赋予权值以表示每个权限组的危险程度;
根据所述未安装应用程序所请求的权限组中每个权限组的权值,向用户界面显示对所述未安装应用程序的安装提示信息
由以上技术方案可知,本申请提供了一种android系统恶意应用程序检测方法、装置及终端,该方法先以权限组的方式,对android系统中所有权限之间的相关性进行分析,并通过对市场上的应用程序样本进行测试,为每个权限组赋予权值以表示每个权限组的危险程度,得到权限组权值数据库,之后在用户安装应用程序时,启动android系统安装器packageinstaller,以得到未安装应用程序所请求的权限组,并根据权限组权值数据库,查询每个权限组的权值,根据查询的结果向用户界面显示对该未安装应用程序的安装提示信息,从而使用户详细了解该未安装应用程序所请求的权限组的危险程度,便于用户对恶意应用程序进行辨别,避免安装恶意应用程序为用户带来的安全隐患。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的android系统恶意应用程序检测方法的第一实施例的流程图。
图2为本申请提供的android系统恶意应用程序检测方法的第二实施例的流程图。
图3为本申请提供的android系统恶意应用程序检测方法的第三实施例的流程图。
图4为本申请提供的android系统恶意应用程序检测装置的第一实施例的结构框图。
图5为本申请提供的android系统恶意应用程序检测装置的第二实施例的结构框图。
图6为本申请提供的android系统恶意应用程序检测装置的第三实施例的结构框图。
图7为本申请提供的android系统恶意应用程序检测终端的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。
请参阅图1,为本申请提供的一种android系统恶意应用程序检测方法的第一实施例的流程图,所述方法包括:
步骤101,获取对未安装应用程序的安装请求。
用户通过安卓应用市场等途径下载某一应用程序的apk格式安装包之后,会通过点击该安装包进行安装,该步骤即获取用户点击该安装包时产生的安装请求。
步骤102,启动android系统安装器packageinstaller,对所述未安装应用程序进行解析,得到所述未安装应用程序的权限请求数据。
android系统应用程序的安装是通过packageinstaller完成,获取到用户对该未安装应用程序的安装请求之后,利用packageinstaller解析未安装应用程序的安装包文件,得到所述未安装应用程序的权限请求数据,以获知所述未安装应用程序的安装需要请求哪些权限。
权限机制是android系统分层安全模型中尤为重要的部分。目前,为避免应用程序的肆意安装,android系统依赖权限保护策略来护系统安全,即android系统应用程序如果要访问用户数据或系统资源,必须申请系统相应权限并获得授权。android系统定义的系统权限总共有140多种,官方将这些权限进行了归类分级,分别分为normal、dangerous、signature、signatureorsystem。在默认情况下,各种开发环境创建的android系统应用程序不包含任何权限,不能访问应用程序编程接口和资源。如果需要申请某一权限,可在用于资源配置的androidmanifest.xml文件中使用uses-permission标签进行声明。
在应用程序安装时,androidmanifest.xml文件会被包管理器packagemanager解析,解析的内容包括权限信息,这些权限信息将以列表形式显示给用户,只有用户同意授权后,此应用程序的安装过程才会开始,一旦用户不同意某种或多种类型的权限,系统将会终止安装。在应用程序成功安装并运行时,系统会根据被授予权限的固化信息回应应用程序的敏感操作,如果权限存在且资源可用,则访问成功,否则访问无效。
从android系统应用程序安装权限授予过程中可以看出,权限机制存在显著的安全缺陷。android系统要求用户全权掌握权限的授予,此操作仅支持全部授权和全部不授权,并且权限一经授予,在应用程序运行过程中一直有效。这种全部授权和全部不授权的策略在实际应用中既不灵活,也不便于管理,甚至会导致系统存在潜在的危险。如果考虑通用性,保持当前仍由用户决定是否授予的策略,则需要系统能够给予用户足够的信息,以使用户具有分辨各类权限,发现具有风险的权限组的能力。
步骤103,对所述权限请求数据进行组合,得到所述未安装应用程序所请求的权限组。
为了获取android系统中可能引发安全问题的相关权限组,需要首先分析google官方为android系统定义的所有权限。以android5.0版本为例,官方定义的权限总数接近140种,其中大部分权限直接与用户的个人数据相关。
例如,android.permission.read_sms/write_sms权限对应用户的短信息读取/编辑,android.permission.read_contact权限对应用户通讯录联系人数据的读取。
此外,其中也存在一部分权限涉及系统硬件使用安全,例如蓝牙权限android.permission.bluetooth/bluetooth_admin等。
值的注意的是,某些权限可能会间接地造成用户信息泄露和硬件非法使用,例如android.permission.internet权限可能被用来传送窃取的数据或下载钓鱼应用。
步骤104,根据权限组权值数据库,查询所述未安装应用程序所请求的权限组中每个权限组的权值,其中,所述权限组权值数据库通过以下方式得到:以权限组的方式,对android系统中所有权限之间的相关性进行分析,并通过对市场上的应用程序样本进行测试,为每个权限组赋予权值以表示每个权限组的危险程度。
android系统中所有权限之间的相关性分析,采用安卓权限扩展(英文:androidpermissionextension,简称:apex)框架。apex是一种为了限制应用程序的权限控制扩展框架,其设计是基于现有的android系统安装器packageinstaller,不仅支持部分权限的操作,而且在应用程序安装之后,还可以根据预先配置的限制条件,对应用程序施加约束,以便保护系统安全。权限组的权值计算主要通过统计市场上的应用程序样本申请各类权限组的频率,并在分析结束后计算总的权值累加并对其规范化。
步骤105,根据所述未安装应用程序所请求的权限组中每个权限组的权值,向用户界面显示对所述未安装应用程序的安装提示信息。
在本实施例中,所述安装提示信息包括:所述未安装应用程序申请的权限组详情信息、所述权限组的危险系数信息以及处理建议信息,以便向用户显示所安装的应用程序对系统安全影响的高低程度。
由以上技术方案可知,本申请提供的一种android系统恶意应用程序检测方法的第一实施例,先以权限组的方式,对android系统中所有权限之间的相关性进行分析,并通过对市场上的应用程序样本进行测试,为每个权限组赋予权值以表示每个权限组的危险程度,得到权限组权值数据库,之后在用户安装应用程序时,启动android系统安装器packageinstaller,以得到未安装应用程序所请求的权限组,并根据权限组权值数据库查询每个权限组的权值,根据查询的结果向用户界面显示对该未安装应用程序的安装提示信息,从而使用户详细了解该未安装应用程序所请求的权限组的危险程度,便于用户对恶意应用程序进行辨别,避免安装恶意应用程序带来的安全隐患。
请参阅图2,为本申请提供的一种android系统恶意应用程序检测方法的第二实施例的流程图,在上述android系统恶意应用程序检测方法的第一实施例的基础上,根据所述未安装应用程序所请求的权限组中每个权限组的权值,向用户界面显示对所述未安装应用程序的安装提示信息之后,所述方法还包括:
步骤201,获取用户对所述未安装应用程序的安装指令。
用户通过用户界面了解到所述未安装应用程序的申请的权限组详情信息、权限组的危险系数信息以及处理建议信息之后,可根据所述未安装应用程序对系统安全影响的高低程度,决定是否继续安装所述未安装应用程序,并发出安装指令。
步骤202,判断用户是否选择安装所述未安装应用程序。
根据用户输入的安装指令,判断用户是选择了继续安装所述未安装应用程序,还是选择了终止对所述未安装应用程序的安装。
步骤203,如果用户选择安装所述未安装应用程序,加载系统内核,调用模拟器对所述未安装应用程序的行为进行监控。
在本实施例中,所述行为包括但不限于:文件读写行为、网络连接行为、电话拨打行为以及短信发送行为。
步骤204,根据所述监控的结果生成监控日志。
步骤205,对所述监控日志中所述未安装应用程序的行为进行分析。
步骤206,根据所述分析的结果,生成分析报告。
步骤207,如果用户选择不安装所述未安装应用程序,直接根据所述安装提示信息生成分析报告。监控日志中所述未安装应用程序的行为的分析结果,将以分析报告的形式提交给用户。
由以上技术方案可知,本申请提供的一种android系统恶意应用程序检测方法的第二实施例,在上述android系统恶意应用程序检测方法的第一实施例的基础上,基于权限相关性方法,结合静态分析和动态调试,可以检测未安装的应用程序的恶意性,并将检测结果以分析报告的形式提交给用户,以减小用户安装应用程序时的安全隐患。
请参阅图3,为本申请提供的一种android系统恶意应用程序检测方法的第三实施例的流程图,在上述android系统恶意应用程序检测方法的第二实施例的基础上,所述方法还包括:
步骤301,获取已安装应用程序的待检测文件。
某些恶意开发者会将合法的应用程序进行恶意重打包,之后将其发布到第三方应用商店。用户下载并安装这些应用程序之后也会产生安全隐患。因此,除了对未安装应用程序的恶意性进行检测之外,对于用户智能终端上的已安装应用程序,也需要进行恶意性的检测。
步骤302,对所述待检测文件进行内容特征提取。
重打包应用程序与原应用程序实现的关键功能大都一致,对于重打包应用程序的检测,可通过提取应用程序的某些内容特征行相似度计算的方式来实现。
步骤303,根据所述内容特征提取的结果,对所述已安装应用程序进行重打包检测。重打包检测的具体方法可根据现有技术实现,此处不再赘述。
步骤304,判断所述已安装应用程序是否是恶意应用程序。
根据重打包检测的检测结果,判断已安装应用程序是原版的合法应用程序,还是将原应用程序进行恶意重打包后形成的恶意应用程序。
步骤305,如果所述已安装应用程序不是恶意应用程序,加载系统内核,调用模拟器对所述已安装应用程序的行为进行监控。
在本实施例中,所述行为包括但不限于:文件读写行为、网络连接行为、电话拨打行为以及短信发送行为。
步骤306,根据所述监控的结果生成监控日志。
步骤307,对所述监控日志中所述已安装应用程序的行为进行分析。
步骤308,根据所述分析的结果,生成分析报告。
步骤309,如果所述已安装应用程序是恶意应用程序,直接根据所述重打包检测的结果生成分析报告。监控日志中所述未安装应用程序的行为的分析结果,将以分析报告的形式提交给用户。
由以上技术方案可知,本申请提供的一种android系统恶意应用程序检测方法的第三实施例,在上述android系统恶意应用程序检测方法的第二实施例的基础上,基于权限相关性方法,结合静态分析和动态调试,除了可以检测未安装的应用程序的恶意性,还可以检测出已安装应用程序是否是重打包的恶意应用程序,并将检测结果以分析报告的形式提交给用户,以减小用户安装应用程序时的安全隐患。
请参阅图4,为本申请提供的一种android系统恶意应用程序检测装置的第一实施例的结构框图,所述装置包括:
获取单元401,用于获取对未安装应用程序的安装请求。
解析单元402,用于启动android系统安装器packageinstaller,对所述未安装应用程序进行解析,得到所述未安装应用程序的权限请求数据。
组合单元403,用于对所述权限请求数据进行组合,得到所述未安装应用程序所请求的权限组。
查询单元404,用于根据权限组权值数据库,查询所述未安装应用程序所请求的权限组中每个权限组的权值,其中,所述权限组权值数据库通过以下方式得到:以权限组的方式,对android系统中所有权限之间的相关性进行分析,并通过对市场上的应用程序样本进行测试,为每个权限组赋予权值以表示每个权限组的危险程度。
显示单元405,用于根据所述未安装应用程序所请求的权限组中每个权限组的权值,向用户界面显示对所述未安装应用程序的安装提示信息。
在本实施例中,所述安装提示信息包括:所述未安装应用程序申请的权限组详情信息、所述权限组的危险系数信息以及处理建议信息。
请参阅图5,为本申请提供的一种android系统恶意应用程序检测装置的第二实施例的结构框图,在上述android系统恶意应用程序检测装置的第一实施例的基础上,所述获取单元401,还用于获取用户对所述未安装应用程序的安装指令。
在本实施例中,所述装置还包括:
判断单元501,还用于判断用户是否选择安装所述未安装应用程序。
监控单元502,用于如果用户选择安装所述未安装应用程序,加载系统内核,调用模拟器对所述未安装应用程序的行为进行监控。
日志生成单元503,用于根据所述监控的结果生成监控日志。
分析单元504,用于对所述监控日志中所述未安装应用程序的行为进行分析。
报告生成单元505,用于根据所述分析的结果,生成分析报告。
所述报告生成单元505,还用于如果用户选择不安装所述未安装应用程序,直接根据所述安装提示信息生成分析报告。
在本实施例中,所述行为包括:文件读写行为、网络连接行为、电话拨打行为以及短信发送行为。
请参阅图6,为本申请提供的一种android系统恶意应用程序检测装置的第三实施例的结构框图,在上述android系统恶意应用程序检测装置的第二实施例的基础上,所述获取单元401,还用于获取已安装应用程序的待检测文件。
在本实施例中,所述装置还包括:
提取单元601,用于对所述待检测文件进行内容特征提取。
检测单元602,用于根据所述内容特征提取的结果,对所述已安装应用程序进行重打包检测。
所述判断单元501,还用于判断所述已安装应用程序是否是恶意应用程序。
所述监控单元502,还用于如果所述已安装应用程序不是恶意应用程序,加载系统内核,调用模拟器对所述已安装应用程序的行为进行监控。
所述日志生成单元503,还用于根据所述监控的结果生成监控日志。
所述分析单元504,还于对所述监控日志中所述已安装应用程序的行为进行分析。
所述报告生成单元505,还用于根据所述分析的结果,生成分析报告。以及,如果所述已安装应用程序是恶意应用程序,直接根据所述重打包检测的结果生成分析报告。
请参阅图7,为本申请提供的一种android系统恶意应用程序检测终端的示意图,所述终端包括:处理器701,以及用于存储处理器701可执行指令的存储器702。其中,所述处理器701被配置为:获取对未安装应用程序的安装请求,启动android系统安装器packageinstaller,对所述未安装应用程序进行解析,得到所述未安装应用程序的权限请求数据,对所述权限请求数据进行组合,得到所述未安装应用程序所请求的权限组,根据权限组权值数据库,查询所述未安装应用程序所请求的权限组中每个权限组的权值,其中,所述权限组权值数据库通过以下方式得到:以权限组的方式,对android系统中所有权限之间的相关性进行分析,并通过对市场上的应用程序样本进行测试,为每个权限组赋予权值以表示每个权限组的危险程度,根据所述未安装应用程序所请求的权限组中每个权限组的权值,向用户界面显示对所述未安装应用程序的安装提示信息。
具体实现中,本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的android系统恶意应用程序检测方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于android系统恶意应用程序检测装置以及终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。