基于逆向解析机制的Android安全增强系统的制作方法

文档序号:11951592阅读:240来源:国知局
基于逆向解析机制的Android安全增强系统的制作方法与工艺

本发明涉及信息安全技术,尤其涉及一种基于逆向解析机制的Android安全增强系统。



背景技术:

随着移动互联网业务的快速发展,Android系统已成为恶意软件攻击的重要目标之一。国际知名计算机及网络安全提供商F-Secure公司发布的2013年下半年安全威胁报告指出,针对Andriod平台滋生的恶意软件占所有手机恶意软件的97%;F-Secure在2014年发布的Android检测报告显示[2]:在已发现的149个恶意应用家族中,Android恶意应用家族数量为136,占总数的91.3%。360手机安全中心发布了《2014年一季度手机安全状况报告》数据显示,2014年一季度共监测到Android用户感染恶意程序3791万人次,同比增长48.8%;此外,360根据中国反网络病毒联盟ANVA的分类标准,对2014年第一季度监测的Android平台恶意程序进行分类统计,其中资费消耗类恶意程序感染量最高,占感染人次总数的62%;另外,在第一季度感染量最高的十大恶意程序中,有八款为吸费类恶意程序,它们主要通过私发短信、私自下载、后台定制扣费业务等恶意行为消耗手机用户的流量和资费。

因此,恶意应用对Android系统产生的安全威胁不容小觑,特别是涉及用户切身利益的隐私信息和流量资费等安全问题已成为业界关注的热点之一。当前,Google公司已加强安全措施,在安装应用时提供Google Play的服务验证机制;其次,国内各高校和科研院所近年来也围绕Android恶意应用的检测和防范,展开了深入系统的研究。

本作品针对Android用户隐私信息保护和防止恶意扣费这一涉及“民生”的安全问题,研究Android恶意应用的检测与防范技术,提供切实有效的Android安全和隐私保护机制,对风险应用进行安全增强与加固保护,提供用户动态权限管理的技术与方法,对促进Android应用市场的健康发展具有重要意义。



技术实现要素:

本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种基于逆向解析机制的Android安全增强系统。

本发明解决其技术问题所采用的技术方案是:一种基于逆向解析机制的Android安全增强系统,其特征在于,包括:

静态检测模块、逆向解析模块、权限管理模块、请求中转模块、网络保镖模块、数据库服务模块、通知模块以及日志记录模块;

静态检测模块,用于检测已安装应用中是否存在潜在恶意应用;

具体如下:通过恶意应用MD5特征库的匹配、基于恶意应用家族组合权限的匹配、基于危险权限的匹配和基于危险意图的匹配相结合的静态检测技术,进行多层过滤,获取已安装Android应用的潜在风险;

静态检测的具体步骤如下:

第一层:建立已知恶意应用的黑名单库,存储恶意应用的MD5值。检测过程中需要从待检测的APK包中提取MD5值,并与黑名单进行快速匹配和判定。从中过滤出已知的恶意应用。对于恶意应用的MD5样本,我们利用收集到的4006个恶意样本的MD5值,设计并构建了恶意应用的黑名单。黑名单主要包括两个部分:即MD5值和相应的恶意应用类别。

实现方法:

提取APK包的MD5值,与恶意应用的MD5黑名单进行比对,排除已知的恶意应用。其中,提取APK包的MD5值,利用了java.security.MessageDigest包提供的MessageDigest.getInstance("MD5")函数进行提取,得到APK的MD5字符串。

匹配的过程中,需要查询数据库中的恶意应用的MD5黑名单库。建立与数据库的连接,连接成功后,对恶意应用的MD5黑名单表进行查询。即通过建立SQL查询语句,查询表中是否有匹配项。

第二层:基于恶意应用家族组合权限的匹配策略。Zhou等人[3]提出了十个恶意软件家族的组合权限特征,通过获取APK申请的权限,与恶意应用家族的组合权限进行匹配,如果某个应用同时匹配了该恶意软件家族的全部权限,则可以认定该应用申请的权限符合该恶意软件家族的危险权限特征,被判定为疑似的恶意应用。

检测方法:提取应用申请的权限,将这些应用申请的权限与恶意应用家族的组合权限进行匹配,如果该应用申请的权限与某个恶意应用家族的组合权限匹配,则将该应用判定为疑似恶意应用。

第三层:基于危险权限列表的匹配策略。对AndroidManifest.xml文件中的权限与危险权限进行匹配,列出应用申请的危险权限,形成检测报告对用户进行提醒。

检测方法:将提取出的权限与危险权限列表进行比对,找出应用申请的危险权限,并写入检测报告。

第四层:基于危险意图的匹配策略。大多数基于规则的静态检测方法中对恶意应用的Manifest.xml文件的分析仅局限于<user-permisssion>,本系统对应用的AndroidManifest.xml文件进行更全面解析,对危险Intent filter action进行了统计和分析,通过对危险的Intent filter action的定义和对4006个恶意应用样本的分析,我们总结出了15种危险的Intent filter action,并对它们进行了分类,主要类别包括恶意扣费类,恶意添加类,恶意植入类、窃取隐私信息类,恶意篡改类、拦截类、自启动耗电类。对Manifest.xml文件进行深度分析,取得Intent filter结点下的action子结点,将提取出的action与危险意图的action列表进行匹配,并将匹配的结果写入检测报告。

逆向解析模块,用于向风险应用中植入包括用户态沙箱代码的安全策略,得到加固应用,并实时监控加固应用在安装后的行为;

所述用户态沙箱代码用于保证应用在一个监控程序的监控环境中运行,从而完成对应用某些权限的禁止和允许;

“用户态沙箱”是根据Android应用沙箱机制的一个比喻,是指应用在一个监控程序的监控环境中运行,从而完成对应用某些权限的禁止和允许,就像Android的沙箱机制,为各个应用的运行提供一个较独立的安全运行环境。本系统通过监控程序为应用提供沙箱模式,通过对需加固应用的代码进行修改,使应用的父类指针指向为应用定制的监控程序运行地址,对应用的执行进行重定向,使得应用后续所有行为都在监控端的监控下进行。

监控程序,即监控端,实现的主要机制是基于Native C层的拦截技术,即API HOOK。根据恶意应用的恶意行为,恶意应用调用危险API的主要类别有:连接互联网、获取位置信息、读取通信录、获取短信内容等,需要对相应的Native C层的函数connect()、getaddrinfo()和ioctl()进行拦截。使得应用窃取用户隐私和恶意扣费等行为受到监控或禁止,并对应用的行为进行严格的审计。

所述安全策略包括目标apk的解包、加入用户态沙箱代码和加固apk的重建;

在对需要加固apk进行解包,使用apktool工具,将目标apk解包成一个文件目录,从中可以快速地定位到AndroidManifest文件,从而进行后续用户态沙箱代码的引入。

对目标apk进行解包后,需要在其中加入用户态的沙箱代码。在加入控制策略之前,需要编写一个控制程序,并用apktool进行解包,找到主类对应的smali文件,并把这个smali文件复制到目标apk smali文件夹的相应位置,这个smali文件就包含了控制策略的内容。接下来,需要解析目标apk的AndroidMainfest.xml文件,查找出目标apk的主入口类,进而递归查找直接继承自Application的类,并修改其父类为监控端主类。然后,DetourApplication.smali文件拷贝到相应的路径,成功地将用户态沙箱代码植入应用。加入用户态沙箱代码后,再次调用apktool,完成对加固apk的重建。

权限管理模块,用于对逆向解析后的应用进行权限管理与行为审计;

所述权限管理为根据用户需求设置的权限禁止或许可;

所述行为审计为将用户的行为信息记录到数据库中;

请求中转模块,用于对加固应用的不同权限请求进行中转和响应,将应用对Android系统资源的请求转发至监控端的监控程序监控,根据监控端的返回值进行响应;

请求中转模块是工作在“用户态沙箱”的一个底层模块,负责对用户态沙箱代码根据加固应用的不同权限请求进行转发和响应。加固应用运行在用户态沙箱环境中,应用对Android系统资源的请求都会被监控端的监控程序监控。中转模块的作用就是将应用的请求提交给监控端模块,根据监控端的返回值进行响应。

所述网络保镖模块包含广告插件检测子模块和流量监控子模块;

其中,广告插件检测子模块,用于根据数据库中恶意广告黑名单检测出含有广告插件的应用,并提供对含广告应用的卸载功能;

流量监控子模块,用于对应用的流量监控;

数据库服务模块,用于存储和维护以下数据:加固应用的权限设置信息、静态检测结果、应用行为信息、广告黑名单、恶意应用黑名单、证书库;

所述通知模块,用于将静态检测的危险结果、监控程序拦截到的应用的危险行为、含广告插件应用名称和插件数量信息通知给用户,并引导用户正确配置应用的权限,对应用进行安全加固;

所述日志记录模块,用于协同系统静态检测模块、权限管理模块、广告检测模块,将静态检测结果、权限设置信息、广告拦截的信息记录下来,形成日志记录。

按上述方案,所述静态检测模块通过恶意应用MD5特征库的匹配、恶意应用家族组合权限的匹配、危险权限的匹配和危险意图的匹配相结合的静态检测技术,进行四层过滤,检测Android应用的潜在风险。

按上述方案,所述逆向解析模块的工作流程如下:

1)目标apk的解包:使用apktool工具,将目标应用的apk安装包解包;

2)加入用户态沙箱代码;所述用户态沙箱代码用于保证应用在一个监控程序的监控环境中运行,从而完成对应用某些权限的禁止和允许;

3)加固apk的重建:加入用户态沙箱代码后,再次调用apktool,完成对加固apk的重建;

4)加固apk签名及优化:加固apk重建后,对其进行签名,然后对签名后的apk进行优化,完成对目标apk的逆向解析工作。

本发明产生的有益效果是:为用户提供一个Android应用的显式风险控制的软件系统,使用户对Android应用真正做到“可视、可管、可控”。本系统以静态检测和逆向解析机制为核心,结合流量监控、权限管理等安全机制来保障Android系统的安全性,侧重解决Android系统中普遍存在的因恶意应用引起的用户隐私泄露和恶意扣费等安全问题。

附图说明

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

图1是本发明的静态检测流程示意图。

图2是本发明的逆向解析模块工作流程示意图。

图3是本发明中安全策略引入的具体步骤示意图。

图4是本发明中用户态沙箱工作模式示意图。

图5是本发明中目标API出发预处理示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

一种基于逆向解析机制的Android安全增强系统,包括:

静态检测模块、逆向解析模块、权限管理模块、请求中转模块、网络保镖模块、数据库服务模块、通知模块以及日志记录模块;

静态检测模块,用于检测已安装应用中是否存在潜在恶意应用;

具体如下:通过恶意应用MD5特征库的匹配、基于恶意应用家族组合权限的匹配、基于危险权限的匹配和基于危险意图的匹配相结合的静态检测技术,进行多层过滤,获取已安装Android应用的潜在风险;

静态检测的具体步骤如下:

第一层:建立已知恶意应用的黑名单库,存储恶意应用的MD5值。检测过程中需要从待检测的APK包中提取MD5值,并与黑名单进行快速匹配和判定。从中过滤出已知的恶意应用。对于恶意应用的MD5样本,我们利用收集到的4006个恶意样本的MD5值,设计并构建了恶意应用的黑名单。黑名单主要包括两个部分:即MD5值和相应的恶意应用类别。

实现方法:

提取APK包的MD5值,与恶意应用的MD5黑名单进行比对,排除已知的恶意应用。其中,提取APK包的MD5值,利用了java.security.MessageDigest包提供的MessageDigest.getInstance("MD5")函数进行提取,得到APK的MD5字符串。

匹配的过程中,需要查询数据库中的恶意应用的MD5黑名单库。建立与数据库的连接,连接成功后,对恶意应用的MD5黑名单表进行查询。即通过建立SQL查询语句,查询表中是否有匹配项。

第二层:基于恶意应用家族组合权限的匹配策略。Zhou等人[3]提出了十个恶意软件家族的组合权限特征,通过获取APK申请的权限,与恶意应用家族的组合权限进行匹配,如果某个应用同时匹配了该恶意软件家族的全部权限,则可以认定该应用申请的权限符合该恶意软件家族的危险权限特征,被判定为疑似的恶意应用。

检测方法:提取应用申请的权限,将这些应用申请的权限与恶意应用家族的组合权限进行匹配,如果该应用申请的权限与某个恶意应用家族的组合权限匹配,则将该应用判定为疑似恶意应用。

第三层:基于危险权限列表的匹配策略。对AndroidManifest.xml文件中的权限与危险权限进行匹配,列出应用申请的危险权限,形成检测报告对用户进行提醒。

检测方法:将提取出的权限与危险权限列表进行比对,找出应用申请的危险权限,并写入检测报告。

第四层:基于危险意图的匹配策略。大多数基于规则的静态检测方法中对恶意应用的Manifest.xml文件的分析仅局限于<user-permisssion>,本系统对应用的AndroidManifest.xml文件进行更全面解析,对危险Intent filter action进行了统计和分析,通过对危险的Intent filter action的定义和对4006个恶意应用样本的分析,我们总结出了15种危险的Intent filter action,并对它们进行了分类,主要类别包括恶意扣费类,恶意添加类,恶意植入类、窃取隐私信息类,恶意篡改类、拦截类、自启动耗电类。对Manifest.xml文件进行深度分析,取得Intent filter结点下的action子结点,将提取出的action与危险意图的action列表进行匹配,并将匹配的结果写入检测报告。

逆向解析模块,用于向风险应用中植入包括用户态沙箱代码的安全策略,得到加固应用,并实时监控加固应用在安装后的行为;

所述用户态沙箱代码用于保证应用在一个监控程序的监控环境中运行,从而完成对应用某些权限的禁止和允许;

“用户态沙箱”是根据Android应用沙箱机制的一个比喻,是指应用在一个监控程序的监控环境中运行,从而完成对应用某些权限的禁止和允许,就像Android的沙箱机制,为各个应用的运行提供一个较独立的安全运行环境。本系统通过监控程序为应用提供沙箱模式,通过对需加固应用的代码进行修改,使应用的父类指针指向为应用定制的监控程序运行地址,对应用的执行进行重定向,使得应用后续所有行为都在监控端的监控下进行。

监控程序,即监控端,实现的主要机制是基于Native C层的拦截技术,即API HOOK。根据恶意应用的恶意行为,恶意应用调用危险API的主要类别有:连接互联网、获取位置信息、读取通信录、获取短信内容等,需要对相应的Native C层的函数connect()、getaddrinfo()和ioctl()进行拦截。使得应用窃取用户隐私和恶意扣费等行为受到监控或禁止,并对应用的行为进行严格的审计。

所述安全策略包括目标apk的解包、加入用户态沙箱代码和加固apk的重建;

在对需要加固apk进行解包,使用apktool工具,将目标apk解包成一个文件目录,从中可以快速地定位到AndroidManifest文件,从而进行后续用户态沙箱代码的引入。

对目标apk进行解包后,需要在其中加入用户态的沙箱代码。在加入控制策略之前,需要编写一个控制程序,并用apktool进行解包,找到主类对应的smali文件,并把这个smali文件复制到目标apk smali文件夹的相应位置,这个smali文件就包含了控制策略的内容。接下来,需要解析目标apk的AndroidMainfest.xml文件,查找出目标apk的主入口类,进而递归查找直接继承自Application的类,并修改其父类为监控端主类。然后,DetourApplication.smali文件拷贝到相应的路径,成功地将用户态沙箱代码植入应用。加入用户态沙箱代码后,再次调用apktool,完成对加固apk的重建。

权限管理模块,用于对逆向解析后的应用进行权限管理与行为审计;

所述权限管理为根据用户需求设置的权限禁止或许可;

所述行为审计为将用户的行为信息记录到数据库中;

行为审计就是一个审计功能,算是一个附带功能,就是记录用户的行为。

请求中转模块,用于对加固应用的不同权限请求进行中转和响应,将应用对Android系统资源的请求转发至监控端的监控程序监控,根据监控端的返回值进行响应;

请求中转模块是工作在“用户态沙箱”的一个底层模块,负责对用户态沙箱代码根据加固应用的不同权限请求进行转发和响应。加固应用运行在用户态沙箱环境中,应用对Android系统资源的请求都会被监控端的监控程序监控。中转模块的作用就是将应用的请求提交给监控端模块,根据监控端的返回值进行响应。

所述网络保镖模块包含广告插件检测子模块和流量监控子模块;

其中,广告插件检测子模块,用于根据数据库中恶意广告黑名单检测出含有广告插件的应用,并提供对含广告应用的卸载功能;

流量监控子模块,用于对应用的流量监控;

数据库服务模块,用于存储和维护以下数据:加固应用的权限设置信息、静态检测结果、应用行为信息、广告黑名单、恶意应用黑名单、证书库;

所述通知模块,用于将静态检测的危险结果、监控程序拦截到的应用的危险行为、含广告插件应用名称和插件数量信息通知给用户,并引导用户正确配置应用的权限,对应用进行安全加固;

所述日志记录模块,用于协同系统静态检测模块、权限管理模块、广告检测模块,将静态检测结果、权限设置信息、广告拦截的信息记录下来,形成日志记录。

图1给出了静态检测模块的工作流程图。建立已知恶意应用的黑名单库,存储恶意应用的MD5值。检测过程中需要从待检测的APK包中提取MD5值,并与黑名单进行快速匹配和判定。从中过滤出已知的恶意应用。对于恶意应用的MD5样本,利用收集到的恶意样本的MD5值,设计并构建了恶意应用的黑名单。

提取APK包的MD5值,与恶意应用的MD5黑名单进行比对,排除已知的恶意应用。其中,提取APK包的MD5值,利用了java.security.MessageDigest包提供的MessageDigest.getInstance("MD5")函数进行提取,得到APK的MD5字符串。

匹配的过程中,需要查询数据库中的恶意应用的MD5黑名单库。建立与数据库的连接,连接成功后,对恶意应用的MD5黑名单表进行查询。即通过建立SQL查询语句,查询表中是否有匹配项。

图2是本发明的逆向解析模块流程示意图。此模块是逆向解析过程的第一步:当一个被确定为疑似恶意应用的apk(目标apk)要进行逆向解析时,首先需要对其进行基本信息的提取。将目标apk的包名、版本号、版本名、大小等信息存入数据库,记录目标apk的基本信息。然后提取出目标apk的证书,以证书中存放的公钥hash值为关键字进行检索,查询证书数据库。若存在,则表明之前已经对此开发者的其他apk进行过逆向解析,并已经为其创建了alias(证书条目别名)和passwd(条目密码)。可以将其取出,用于在加固apk签名及优化模块为加固后的apk进行签名;若不存在,需要为此证书创建一个新的条目(包括alias和passwd),将其加入到证书数据库中,同时将此条目用于对加固apk的签名。

图3是本发明中安全策略引入的具体步骤示意图。主要分为三个步骤:目标apk的解包、加入用户态沙箱代码、加固apk的重建,具体步骤如下:

在对目标apk进行解包时,需要使用apktool工具,将目标apk解包成一个文件目录,从中可以快速地定位到AndroidManifest文件,从而进行后续用户态沙箱代码的引入。

对目标apk进行解包后,需要在其中加入用户态的沙箱代码。在加入用户预定义的控制策略之前,需要编写一个控制程序,并用apktool进行解包,找到主类对应的smali文件,并把这个smali文件复制到目标apk smali文件夹的相应位置,这个smali文件就包含了控制策略的内容。接下来,需要解析目标apk的AndroidMainfest.xml文件,查找出目标apk的主入口类,进而递归查找直接继承自Application的类,并修改其父类为监控端主类。然后,DetourApplication.smali文件拷贝到相应的路径,成功地将用户态沙箱代码植入应用。加入用户态沙箱代码后,再次调用apktool,完成对加固apk的重建。

加固apk签名及优化,加固apk重建后,还需要对其进行签名,才可以安装到手机端正常使用。需要调用jarsigner工具为加固后的apk进行签名,得到签名后的apk(*_signed.apk)。最后,调用zipalign对签名后的apk进行优化。完成对目标apk的逆向解析工作。

图4是本发明中用户态沙箱工作模式示意图。“用户态沙箱”是根据Android应用沙箱机制的一个比喻,是指应用在一个监控程序的监控环境中运行,从而完成对应用某些权限的禁止和允许,就像Android的沙箱机制,为各个应用的运行提供一个较独立的安全运行环境。本系统通过监控程序为应用提供沙箱模式,通过对需加固应用的代码进行修改,使应用的父类指针指向为应用定制的监控程序运行地址,对应用的执行进行重定向,使得应用后续所有行为都在监控端的监控下进行。

监控端实现的主要机制是基于Native C层的拦截技术,即API HOOK。根据恶意应用的恶意行为,恶意应用调用危险API的主要类别有:连接互联网、获取位置信息、读取通信录、获取短信内容等,需要对相应的Native C层的函数connect()、getaddrinfo()和ioctl()进行拦截。使得应用窃取用户隐私和恶意扣费等行为受到监控或禁止,并对应用的行为进行严格的审计。

图5是本发明中目标API出发预处理示意图。通过API HOOK完成目标函数的拦截之后,用户态沙箱代码需要在加固函数内部对目标函数的参数进行解析,这是确定权限请求的关键步骤。在参数解析完毕后,请求中转模块会根据不同的请求转发给不同的监控端服务。监控端服务根据用户制定的权限设置策略进行相应的响应,再返回给用户态沙箱代码。为了降低代码量,我们将请求中转模块在Java层完成,这使得运行在Native C层的用户态沙箱代码需要与Java层的请求中转模块进行交互,这需要利用JNI技术。

从图5可以看出,当加固应用触发危险API时,程序会跳转到加固API中,在加固API中会进行参数检测来区分应用的不同请求。根据请求,通过JNI技术调用Java层函数进行权限查询,根据返回结果判断是否放行当前危险行为。

本发明具有的理论意义和实际应用价值:针对目前恶意应用对Android系统的安全问题造成的威胁,本发明采用多重规则相结合的静态检测机制对用户手机中的恶意应用进行过滤,进而对潜在风险的应用进行识别,从多个层次分析风险应用的安全隐患,形成检测报告。本发明采用基于逆向解析技术的安全加固机制对用户手机中潜在风险的应用进行逆向解析,加入具有安全控制策略的用户态沙箱代码,从而使运行在用户手机终端的监控程序能够实时监控、阻止和拦截应用窃取用户隐私数据、获取位置隐私信息、访问恶意IP地址等危险行为。本系统提供了动态管理权限的功能,用户可以在未获得Root权限的情况下,对应用申请的权限进行动态的管理和设置,使得监控程序能够根据用户制定的权限设置对应用的行为进行有针对性地监控和拦截。

本发明引入并改进静态检测和逆向解析技术,既提高了检测的精准度,也优化了Android应用安全加固的效率,不需要Root权限,不依赖于Android系统版本,有更高的普适性,可以为用户提供Android应用的显式风险控制,使用户对安装的Android应用真正做到“可视、可管、可控”;也可作为Android开发者和开发商进行应用风险检测和风险管控的一个工具和手段,为净化Android空间提供了一个可行的途径。因此,本系统优化高效的性能蕴含着巨大的市场与应用前景。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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