著录项信息
专利名称 | 智能手机应用程序的静态分析方法及系统 |
申请号 | CN201510142550.1 | 申请日期 | 2015-03-27 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-06-17 | 公开/公告号 | CN104715196A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/56 | IPC分类号 | G;0;6;F;2;1;/;5;6查看分类表>
|
申请人 | 北京奇虎科技有限公司;奇智软件(北京)有限公司 | 申请人地址 | 北京市西城区新街口外大街28号D座112室(德胜园区)
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京奇虎科技有限公司,奇智软件(北京)有限公司 | 当前权利人 | 北京奇虎科技有限公司,奇智软件(北京)有限公司 |
发明人 | 卞松山 |
代理机构 | 北京市立方律师事务所 | 代理人 | 王增鑫 |
摘要
本发明提供一种智能手机应用程序的静态分析方法,包括接收上传的应用程序样本;扫描应用程序样本安装包,并提取指定的特征信息;将所述指定特征信息与云端服务器的特征码数据库进行匹配;若匹配成功,则判定应用程序的安全等级;如果匹配不成功,则扫描应用程序的API,判定应用程序的安全等级。此外,还提供一种智能手机应用程序的静态分析系统。本发明可以实现自动化检测Android系统和IOS系统的应用程序的安全等级,且检测效率高、准确率较高。
1.一种智能手机应用程序的静态分析方法,其特征在于,包括以下步骤:
获取应用程序样本;
扫描应用程序样本安装包,并提取指定的特征信息;
将所述指定特征信息按照与预设的特征码数据库相一致的规则进行组合,并与云端服务器的特征码数据库进行匹配;
若匹配成功,则判定应用程序的安全等级;
若匹配不成功,则扫描应用程序的API并与相应的预设静态API策略库中的信息进行匹配,以判定应用程序的安全等级。
2.根据权利要求1所述的智能手机应用程序的静态分析方法,其特征在于,所述应用程序样本安装包指定特征信息包括以下一种或多种的组合:
软件名称、包名、版本编号、版本号、签名证书名称、签名证书MD5、签名证书有效期、应用程序安装包MD5、应用程序安装包SHA1。
3.根据权利要求1所述的智能手机应用程序的静态分析方法,其特征在于,所述特征码数据库记录特征码信息与该特征码信息所对应的安全等级之间的映射关系。
4.根据权利要求3所述的智能手机应用程序的静态分析方法,其特征在于,所述特征码数据库中的特征码信息记录具体指单个特征信息或多个特征信息的组合。
5.根据权利要求4所述的智能手机应用程序的静态分析方法,其特征在于,所述特征码数据库具体包括Android系统的特征码数据库和IOS系统的特征码数据库。
6.根据权利要求3至5中任一所述的智能手机应用程序的静态分析方法,其特征在于,所述特征码数据库由云端服务器推送,并由云端服务器定期更新。
7.根据权利要求1所述的智能手机应用程序的静态分析方法,其特征 在于,所述方法还包括两个静态API策略库,具体为Android系统的静态API策略库和IOS系统的静态API策略库。
8.根据权利要求7所述的智能手机应用程序的静态分析方法,其特征在于,所述两个静态API策略库,其中,
Android系统的静态API策略库用于记录Android系统的静态API与其应用程序安全等级之间的映射关系,
IOS系统的静态API策略库用于记录IOS系统的静态API与其应用程序安全等级之间的映射关系。
9.根据权利要求8所述的智能手机应用程序的静态分析方法,其特征在于,所述两个静态API策略库存储在本地服务器。
10.一种智能手机应用程序的静态分析系统,其特征在于,包括:
获取模块:用于获取应用程序样本;
特征提取模块:用于扫描应用程序样本安装包,并提取指定的特征信息;
特征匹配模块:用于将所述指定特征信息按照与预设的特征码数据库相一致的规则进行组合,并与云端服务器的特征码数据库进行匹配;
第一判定模块:用于匹配成功时判定应用程序的安全等级;
第二判定模块:用于匹配不成功时扫描应用程序的API,并与相应的预设静态API策略库中的信息进行匹配,以判定应用程序的安全等级。
11.根据权利要求10所述的智能手机应用程序的静态分析系统,其特征在于,所述应用程序样本安装包指定特征信息包括以下一种或多种的组合:
软件名称、包名、版本编号、版本号、签名证书名称、签名证书MD5、签名证书有效期、应用程序安装包MD5、应用程序安装包SHA1。
12.根据权利要求10所述的智能手机应用程序的静态分析系统,其特征在于,所述特征码数据库记录特征码信息与该特征码信息所对应的安全等级之间的映射关系。
13.根据权利要求12所述的智能手机应用程序的静态分析系统,其特征在于,所述特征码数据库中的特征码信息记录具体指单个特征信息或多 个特征信息的组合。
14.根据权利要求13所述的智能手机应用程序的静态分析系统,其特征在于,所述特征码数据库具体包括Android系统的特征码数据库和IOS系统的特征码数据库。
15.根据权利要求12至14的任一所述的智能手机应用程序的静态分析系统,其特征在于,所述特征码数据库由云端服务器推送,并由云端服务器定期更新。
16.根据权利要求10所述的智能手机应用程序的静态分析系统,其特征在于,所述API扫描模块还包括两个静态API策略库,具体为Android系统的静态API策略库和IOS系统的静态API策略库。
17.根据权利要求16所述的智能手机应用程序的静态分析系统,其特征在于,所述两个静态API策略库,其中,
Android系统的静态API策略库用于记录Android系统的静态API与其应用程序安全等级之间的映射关系,
IOS系统的静态API策略库用于记录IOS系统的静态API与其应用程序安全等级之间的映射关系。
18.根据权利要求17所述的智能手机应用程序的静态分析系统,其特征在于,所述两个静态API策略库存储在本地服务器。
智能手机应用程序的静态分析方法及系统\n技术领域\n[0001] 本发明涉及智能手机安全领域,具体而言,本发明提供一种智能手机应用程序的静态分析方法及相关系统。\n背景技术\n[0002] 随着现代通信手段的进步,我国智能手机的用户越来越多,而随着手机终端的不断普及、网民规模高速增长以及移动互联快发展,各类手机应用如雨后春笋般出现,包括电子商务、手机支付、LBS、联系人云备份、手机预订票和酒店等在内的商务应用也不断成熟,极大地满足了用户的多方需求。\n[0003] 但随着智能手机市场的进一步扩展,水货、山寨手机及其应用的泛滥使得手机的安全风险日益扩大,感染手机病毒的用户量急剧增长。包括病毒、恶意扣费、骚扰电话、手机系统垃圾、私自联网消耗流量、手机支付安全隐患、隐私泄露在内的各类问题困扰着用户。\n与此同时,病毒投放渠道、攻击技术利益联盟等黑色产业链也逐步完善,更多的手机用户因此开始受到病毒的大规模侵袭。\n[0004] 目前越来越多的案件和电子数据勘查取证涉及到手机程序功能的分析,分析的难度和工作量也越来越大,包括对各类恶意扣费软件、窃取用户个人隐私信息等手机程序的取证分析和检验鉴定。因此,对主流的智能手机的应用程序的功能分析和取证必须有相应的技术、工具和系统予以支撑,以解决上述问题。\n[0005] 目前对智能手机应用程序的静态分析过程复杂,消耗很大的人力和时间成本,通常对程序采用人工反编译,肉眼查看的方式进行静态分析,效率很低。\n发明内容\n[0006] 本发明的目的旨在解决上述至少一个问题,提供一种智能手机应用程序的静态分析方法,包括以下步骤:\n[0007] 接收上传的应用程序样本;\n[0008] 扫描应用程序样本安装包,并提取指定的特征信息;\n[0009] 将所述指定特征信息与云端服务器的特征码数据库进行匹配;\n[0010] 若匹配成功,则判定应用程序的安全等级;\n[0011] 若匹配不成功,则扫描应用程序的API,判定应用程序的安全等级。\n[0012] 优选的,所述应用程序安装包指定特征信息包括以下一种或多种的组合:\n[0013] 软件名称、包名、版本编号、版本号、签名证书名称、签名证书MD5、签名证书有效期、应用程序安装包MD5、应用程序安装包SHA1。\n[0014] 优选的,所述特征码数据库记录特征码信息与该特征码信息所对应的安全等级之间的映射关系。\n[0015] 优选的,所述特征码数据库中的特征码信息记录具体指单个特征信息或多个特征信息的组合。\n[0016] 具体的,所述特征码数据库具体包括Android系统的特征码数据库和IOS系统的特征码数据库。\n[0017] 一种智能手机应用程序的静态分析系统,包括:\n[0018] 接收模块:用于接收上传的应用程序样本;\n[0019] 特征提取模块:用于扫描应用程序样本安装包,并提取指定的特征信息;\n[0020] 特征匹配模块:用于将所述指定特征信息与云端服务器的特征码数据库进行匹配;\n[0021] 判定模块:用于判定应用程序的安全等级;\n[0022] API扫描模块:用于扫描应用程序的API,并判定应用程序的安全等级。\n[0023] 优选的,所述应用程序安装包指定特征信息包括以下一种或多种的组合:\n[0024] 软件名称、包名、版本编号、版本号、签名证书名称、签名证书MD5、签名证书有效期、应用程序安装包MD5、应用程序安装包SHA1。\n[0025] 优选的,所述特征码数据库记录特征码信息与该特征码信息所对应的安全等级之间的映射关系。\n[0026] 优选的,所述特征码数据库中的特征码信息记录具体指单个特征信息或多个特征信息的组合。\n[0027] 具体的,所述特征码数据库具体包括Android系统的特征码数据库和IOS系统的特征码数据库。\n[0028] 相比现有技术,本发明的方案具有以下优点:\n[0029] 1、本发明通过提取应用程序安装包中的指定特征信息作为匹配特征,与服务器中的已知特征码进行匹配,以确定该应用程序的安全等级,且扫描速度快、检测准确率较高。\n[0030] 2、本发明对应用程序调用的特定的系统API进行扫描,确定与用户相关的恶意行为,防止恶意程序获取用户信息,提高静态分析的检测率。\n[0031] 3、本发明接收上传的应用程序样本,自动针对应用程序进行扫描检测,确定其安全等级,解决了现有技术通过人工阅读反编译文件带来的巨大工作量,提高了检测恶意程序的效率。\n[0032] 4、本发明提供的智能手机应用程序的静态分析方法即可以检测Android系统的恶意程序,也可以检测IOS系统的恶意程序,实现同时对现今流行的两大操作系统的智能手机的应用程序进行安全等级确定。\n[0033] 本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。\n附图说明\n[0034] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:\n[0035] 图1为智能手机应用程序的静态分析方法示意框图;\n[0036] 图2为智能手机应用程序的静态分析系统原理框图\n具体实施方式\n[0037] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。\n[0038] 本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。\n[0039] 本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。\n[0040] 本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。\n[0041] 本技术领域技术人员可以理解,这里所使用的远端网络设备,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云。在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。本发明的实施例中,远端网络设备、终端设备与WNS服务器之间可通过任何通信方式实现通信,包括但不限于,基于\n3GPP、LTE、WIMAX的移动通信、基于TCP/IP、UDP协议的计算机网络通信以及基于蓝牙、红外传输标准的近距无线传输方式。\n[0042] 静态分析技术是指在不运行代码的情况下,采用词法分析、语法分析等各种技术手段对扫描安装包文件,并对其指定特征进行分析的一种技术。本发明支持Android、IOS智能手机操作系统,现以Android系统的智能手机作为一种具体实施例,说明本发明提供的一种智能手机应用程序的静态分析方法,包括以下步骤:\n[0043] S11、接收上传的应用程序样本\n[0044] 用户可以使用客户端,访问服务端的网页或其它形式的内容,借助网页提供的上传工具或其它上传工具向服务端上传应用程序的文件,服务端接收客户端上传的应用程序样本。\n[0045] 诚然,也可以由相应的抓取模块从互联网中自动抓取并接收相关应用程序样本,或者从预设的网络位置中定时获取新的应用程序样本等。本领域技术人员应当知晓获取应用程序样本的多种方式。\n[0046] S12、扫描应用程序样本安装包,并提取指定的特征信息\n[0047] Android系统中,每一个应用程序安装包都为APK文件,即Android Application Package File的缩写,其实质是zip格式的文件,对其进行解压缩可以得到以下文件结构:\n[0048]\n[0049] 表1APK文件结构\n[0050] 由于Android手机中的恶意程序或广告插件都需要运行在Android系统中,所以也应该为apk文件。故Android系统手机中的恶意程序或广告插件的特征信息,可以通过本步骤实现的特征码提取模块扫描其对应的apk文件,并提取相应特征信息,可以提取以下示例特征信息作为指定特征信息:\n[0051] 1、包名\n[0052] Android系统的每一个应用程序都有唯一的包名,通过所述包名识别应用程序,当有相同包名的apk安装时系统会提示该安装包与已安装的同名应用程序的包名重复,并拒绝安装。所以包名可以作为一个特征信息用于识别恶意程序。\n[0053] 2、版本号\n[0054] Android系统的每一个apk文件都有对应的版本编号和版本号,如果应用程序的版本号或版本编号与原版本号或版本编号不一致,则判段该应用程序已被篡改,可以作为识别恶意程序的一个特征信息。\n[0055] 3、签名证书名称\n[0056] 安装包的签名目的是保证安装包的完整性和安全性,当apk安装时系统会检查安装包的签名证书名称是否与官方签名一致。没有签名或签名不一致的安装包都会被系统拒绝安装,所以签名证书名称也可以作为一个特征信息用于识别恶意程序。\n[0057] 3、AndroidManifest.xml文件中的各模块入口信息\n[0058] AndroidManifest.xml文件作为apk文件中所必需的全局描述文件,记录了应用程序安装包的每个模块的入口信息,并且只有记录在AndroidManifest.xml文件中的模块才能被系统调用。恶意程序可以通过寄生感染正常的应用程序,当应用程序被启动时,恶意程序在合适的情况下被激活,从而使手机被感染。通过查找AndroidManifest.xml文件中的各模块入口信息可以找到寄生在应用程序中的恶意程序,因此AndroidManifest.xml文件中的各模块入口信息可以作为特征信息确定应用程序安全等级的重要特征。\n[0059] 4、AndroidManifest.xml文件中的系统组件信息\n[0060] 由表1所示的文件结构可知,每个apk文件中都包含有一个AndroidManifest.xml文件,它记录着安装包的全局配置信息。除了包名package name、版本编号versionCode、版本号versionName等信息,还包括应用程序注册的activity、service、receiver等系统组件,所述组件由应用程序向系统注册,可以作为特征信息。所以,除了可以提取Androidmanifest.xml文件中的包名、版本号、版本编号等特征信息,还可以提取Androidmanifest.xml文件中的activity、service、receiver等系统组件信息作为指定特征信息。\n[0061] 5、classes.dex文件\n[0062] 除了上述信息可以作为应用程序的特征信息,Android系统虚拟机的可执行文件中的指令或字符串也可以作为特征信息。在Android5.0以下的版本中,classes.dex文件用于存储Dalvik虚拟机的可执行指令,通过对classes.dex文件反编译生成.smali文件,扫描该文件中的代码指令或字符串,提取相应的代码指令或字符串作为应用程序的特征信息。\n[0063] 6、OAT文件\n[0064] OAT文件为Android5.0以上版本的ART虚拟机执行的文件,存储Android应用程序安装包中经过编译后可以由ART执行的机器码。同理,该文件中指令或字符串也可以作为特征信息,对应用程序的OAT文件进行反编译,由扫描器提取反编译后文件的相应指令或字符串作为应用程序的特征码信息。\n[0065] 除以上列举的apk文件相关信息及其指令或字符串以外,软件名称、版本编号、签名证书MD5、签名证书有效期、应用程序安装包MD5、应用程序安装包SHA1等信息均可以作为指定的特征信息,由本步骤实现的特征提取模块从相应的文件进行扫描提取,以便用于后续步骤的执行。\n[0066] S13、将所述指定特征信息与云端服务器的特征码数据库进行匹配\n[0067] 特征码匹配是恶意程序诊断方法的一种,是反恶意程序的常规武器,通过扫描应用程序apk文件中的内容,找到其指定特征信息,并与特征码库中存储的特征码进行一一匹配,其中,\n[0068] 特征码是指具有一定特点或特征的字符串,是用来判断一个文件是否有恶意代码的依据,主要分为单一特征码和复合特征码。其中,单一特征码是指从样本程序中提取一段连续的字节作为特征码;复合特征码是指提取多段不连续的特征码以及它们的偏移值作为特征码。\n[0069] 如果所述提取到的指定特征信息存在与特征码库中的字符串相匹配的特征信息,则判定应用程序的安全等级。将上述提取的特征信息与Android系统的特征码数据库中的特征码依次进行扫描匹配,其中,所述Android系统的特征码数据库记录特征码信息与该特征码信息所对应的安全等级之间的映射关系,且记录的特征码可以包含单个特征信息或是多个特征信息的组合。所述Android系统的特征码数据库存储于云端服务器,由云端服务器推送并进行实时更新,其定期更新可以由云端服务器通过蜜罐技术或者网络获取实现,还可以通过人为上传。\n[0070] 提取的特征信息与Android系统的特征码数据库中的特征码进行匹配的具体过程为:\n[0071] S101组合提取的应用程序样本的指定特征信息;\n[0072] 具体指将提取的指定特征信息进行组合,获取至少包含两个特征的各项特征组合。由于所述Android系统的特征码数据库为预设的数据库,其特征码按照一定的方式描述,故而对于提取的应用程序样本的指定特征信息的组合方式必须按照与预设的所述特征码数据库相一致的规则进行组合,如将所述应用程序样本的包名、版本号、签名等明文信息进行组合,将AndroidManifest.xml文件中的各模块入口信息进行组合,将\nAndroidManifest.xml文件中的组件信息进行组合、将classes.dex文件中的代码指令或字符串进行组合、将OAT文件中的代码指令或字符串特征信息进行组合。\n[0073] S102与所述Android系统的特征码数据库中的特征码进行一一匹配;\n[0074] 将上述组合得到的各项特征组合与特征码数据库中的特征码进行一一匹配。具体匹配方式可以简单的将特征码数据库中的特征码按顺序与组合特征一一比对,也可以按照一定的规则,比如根据已知的特征码数据库中的特征码信息,按照其特征信息内容进行排序,如按照包含包名、版本号等明文信息的特征信息,各模块入口特征信息,组件信息,代码指令或字符串信息的顺序进行排序。从特征组合个数最多的组合特征开始,与排序后的特征码数据库中的特征码进行一一对比。\n[0075] S103如果匹配成功,则判定所述应用程序样本的安全等级;\n[0076] 一旦所述特征组合与特征码数据库中的某项特征码匹配成功,则根据该成功匹配的特征码与其对应的安全等级之间的映射关系确定所述应用程序样本的安全等级。其中,所述安全等级利用公知技术提前人为或自动设定,可以划分为极高危险、高危险、中危险和低危险四级,也可以根据其他情况灵活划分。\n[0077] S104如果匹配不成功,则减少组合的指定特征个数,继续与Android系统的特征码数据库中的特征码进行一一匹配;\n[0078] 如果特征码数据库中不存在与特征组合相匹配的项,则逐个减少该特征组合的特征信息,并重新与特征码数据库中的特征码进行一一比对。\n[0079] S105如果匹配不成功,则反复上一步骤,直至将单个指定特征依次与Android系统的特征码数据库中的特征码进行一一匹配。\n[0080] 当特征组合中的特征个数减少至单个时,则针对该单个特征信息按照步骤S102所述方法进行匹配,直至匹配完所有特征。\n[0081] 此外,由于对手机应用程序的静态分析只是针对特征码数据库中已存在的恶意程序,通过提取指定的特征信息,并查找指定特征信息或其组合是否存在于特征码数据库中,从而判断其安全等级。故而,对文件进行特征码扫描只是针对已经出现的恶意程序,不能检测未知的恶意程序,面对不断出现的新病毒或病毒变种,需要不断更新特征码数据库。\n[0082] S14、若匹配成功,则判定应用程序的安全等级\n[0083] 通过上述匹配过程,确定扫描到的应用程序的指定特征信息是否存在于特征码数据库中,并且若上述匹配过程成功,根据特征码数据库记录特征码信息与该信息所对应的安全等级之间的映射关系,确定所检测应用程序的安全等级。其中,所述安全等级利用公知技术提前人为或自动设定,可以划分为极高危险、高危险、中危险和低危险四级,也可以根据其他情况灵活划分。\n[0084] S15、若匹配不成功,则扫描应用程序的API,并判定应用程序的安全等级[0085] 特征码是恶意程序所具有的独一无二的特征字符,总得来说可以分为两种:文件特征码和内存特征码。文件特征码存在于一些未执行的文件里,内存特征码仅存在于已运行的应用程序中。而针对应用程序的静态分析一般只扫描文件特征码。\n[0086] 除了上述列举的文件特征码信息,应用程序自身的API也是确定应用程序安全等级的重要依据。通常情况下,恶意程序会具有一些执行非正常敏感操作的恶意API,诸如执行读取联系人、读取通话记录、发送和写入短信/彩信、开机自启动、读取硬件型号、修改联系人、删除通话记录、读取系统日志等,因此有必要扫描检测应用程序的API。以下就几种常见的恶意API进行示例性说明:\n[0087] (1)联系人相关行为API\n[0088] 系统应用程序一般会通过Query()函数查询联系人、Insert()函数增加联系人,如果检测到某非系统应用程序调用此类敏感函数,则判定其为恶意程序,并记录该应用程序调用的Query()或Insert()。\n[0089] (2)开机自启动API\n[0090] 通常情况下 ,Android系统中的应用程序自 启动行为是通过在\nAndroidManifest.xml文件中注册广播组件,一旦手机开机系统发送广播,则注册广播组件的应用程序就会接收到该广播实现自启动行为。而恶意应用程序可以通过与具有自启动功能的应用程序互相写入友盟SDK进行互调,从而实现自启动,因此检测是否存在此类触发自启动的互调SDK,找出它们之间的自启动唤起路径,则可以找到恶意程序。\n[0091] (3)发送短信API\n[0092] 应用程序执行发送短信的操作,通常为执行SendTextMessage()之类的函数,当存在非系统的应用程序调用相关函数时,则判定其为恶意程序,记录其调用的相应函数。\n[0093] 以上列举的恶意API仅为摘录之用,不能理解为对本发明检测API的限制。\n[0094] 具体而言,如果上述步骤匹配不成功,则进一步对应用程序中调用的系统API进行扫描,判定是否存在恶意行为。\n[0095] 具体方法为:对应用程序的apk文件进行反编译,本领域技术人员常用的用于解析安装包的工具是Apktool,利用该工具可以实现对Apk文件做反向工程。因此,本方法可以通过调用Apktool指令,解压并反编译相应Apk文件,反编译后,将在临时目录中产生.smali文件和Androidmanifest.xml文件以及其它资源文件等。\n[0096] 在反编译出的AndroidManifest.xml中找到主Activity函数,获取其所在类的OnCreate()方法的反汇编代码,对于大多数应用软件来说,这里就是程序的代码入口处,所有的功能都从这里开始得到执行,沿此处一直向下查找,同时对反编译得到的.smali文件进行词法和语法的分析,由API扫描引擎追踪软件的执行流程,找出应用程序调用的与用户手机隐私相关联的行为API。\n[0097] 将根据上述检测步骤检测到的API分别与Android系统的静态API策略库中记录的信息进行一一对比,其中,所述Android系统的静态API策略库存储于本地服务器,用于记录Android系统的静态API与应用程序安全等级之间的映射关系,根据匹配结果确定所检测应用程序的安全等级。其中,所述安全等级可以划分为极高危险、高危险、中危险和低危险四级,也可以根据其他情况灵活划分。\n[0098] 以IOS操作系统的智能手机作为另一个实施例,进一步说明本发明所述的一种智能手机应用程序的静态分析方法,包括以下步骤:\n[0099] S11、接收上传的应用程序样本\n[0100] 用户可以使用客户端,访问服务端的网页或其它形式的内容,借助网页提供的上传工具或其它上传工具向服务端上传应用程序的文件,服务端接收客户端上传的应用程序样本。\n[0101] 诚然,也可以由相应的抓取模块从互联网中自动抓取并接收相关应用程序样本,或者从预设的网络位置中定时获取新的应用程序样本等。本领域技术人员应当知晓获取应用程序样本的多种方式。\n[0102] S12、扫描应用程序样本安装包,并提取指定的特征信息\n[0103] IOS系统的应用程序安装包为.ipa(iphoneApplication)格式,其实质是一个zip压缩包,包含3个组件:payload目录下的.app目录,即软件的主程序;iTunesArtwork,实质是一个无后缀名的png图片,用来在iTunes中显示图标;iTunesMetadata.plist记录购买者信息、售价等数据。\n[0104] IOS系统的应用程序的包名和版本号信息都记录在mainBundle的一个字典中,用下面代码可以取出来。\n[0105]\n[0106] 由于IOS系统的手机中的恶意程序或广告插件都需要运行在IOS系统中,所以也应该为ipa文件。故IOS系统手机中的恶意程序或广告插件的特征信息,可以通过本步骤实现的特征码提取模块扫描其对应的ipa文件,并提取相应特征信息。\n[0107] 针对IOS系统的手机应用程序的ipa文件,,可以提取以下示例特征信息作为指定特征信息:\n[0108] 1、包名\n[0109] IOS系统的每一个应用程序都有唯一的包名,通过所述包名识别应用程序,当有相同包名的ipa安装时系统会提示该安装包与已安装的同名应用程序的包名重复,并拒绝安装。所以包名可以作为一个特征信息用于识别恶意程序。\n[0110] 2、版本号\n[0111] IOS系统的每一个ipa文件都有对应的版本编号和版本号,如果应用程序的版本号或版本编号与原版本号或版本编号不一致,则判段该应用程序已被篡改,可以作为识别恶意程序的一个特征信息。\n[0112] 3、签名证书名称\n[0113] 安装包的签名目的是保证安装包的完整性和安全性,当ipa安装时系统会检查安装包的签名证书名称是否与官方签名一致。没有签名或签名不一致的安装包都会被系统拒绝安装,所以签名证书名称也可以作为一个特征信息用于识别恶意程序。\n[0114] 除以上列举的apk文件相关信息及其指令或字符串以外,软件名称、版本编号、签名证书MD5、签名证书有效期、应用程序安装包MD5、应用程序安装包SHA1等信息均可以作为指定的特征信息,由本步骤实现的特征提取模块从相应的文件进行扫描提取,以便用于后续步骤的执行。\n[0115] S13、将所述指定特征信息与云端服务器的特征码数据库进行匹配\n[0116] 扫描ipa中的如步骤S12中所述的指定文件,将将上述提取的特征信息与IOS系统的特征码数据库中的特征码依次进行匹配,其中,所述IOS系统的特征码数据库记录特征码信息与该特征码信息所对应的安全等级之间的映射关系,且记录的特征码可以包含单个特征信息或是多个特征信息的组合。所述IOS系统的特征码数据库存储于云端服务器,由云端服务器推送并进行实时更新,其定期更新可以由云端服务器通过蜜罐技术或者网络获取实现,还可以通过人为上传。\n[0117] 提取的特征信息与IOS系统的特征码数据库中的特征码进行匹配的具体过程为:\n[0118] S101组合提取的应用程序样本的指定特征信息;\n[0119] S102与所述IOS系统的特征码数据库中的特征码进行一一匹配;\n[0120] S103如果匹配成功,则判定所述应用程序样本的安全等级;\n[0121] S104如果匹配不成功,则减少组合的指定特征个数,继续与IOS系统的特征码数据库中的特征码进行一一匹配;\n[0122] S105如果匹配不成功,则反复上一步骤,直至将单个指定特征依次与IOS系统的特征码数据库中的特征码进行一一匹配。\n[0123] 上述匹配过程与Android系统中的应用程序的特征匹配原理相同,故不再赘述。此外,对文件进行特征匹配只能针对已经出现的恶意程序,不能检测未知的恶意程序,面对不断出现的新病毒或病毒变种,需要不断更新特征码数据库。\n[0124] S14、若匹配成功,则判定应用程序的安全等级\n[0125] 若上述匹配过程成功,则根据特征码数据库记录特征码信息与该信息所对应的安全等级之间的映射关系,确定所检测应用程序的安全等级。其中,所述安全等级利用公知技术提前人为或自动设定,可以划分为极高危险、高危险、中危险和低危险四级,也可以根据其他情况灵活划分。\n[0126] S15、若匹配不成功,则扫描应用程序的API,判定应用程序的安全等级[0127] 如果上述步骤匹配不成功,则进一步对应用程序中调用的系统API进行扫描,确定是否存在恶意API,并判断其安全等级,具体方法为:\n[0128] 首先采用gdb调试工具对IOS系统的应用程序的可执行文件进文件解密,得到解密的二进制文件;然后采用API扫描引擎扫描所述解密二进制文件,并分析找出所述应用程序调用的与用户手机隐私相关联的行为API。\n[0129] 所述与用户手机隐私相关联的行为API包括,诸如读取联系人、读取通话记录、发送和写入短信/彩信、开机自启动、读取硬件型号、修改联系人、删除通话记录、读取系统日志等,将上述行为API分别与IOS系统的静态API策略库中记录的信息进行一一对比,其中,所述IOS系统的静态API策略库存储于本地服务器,用于记录IOS系统的静态API与应用程序安全等级之间的映射关系,根据匹配结果确定所检测应用程序的安全等级。其中,所述安全等级利用公知技术提前人为或自动设定,可以划分为极高危险、高危险、中危险和低危险四级,也可以根据其他情况灵活划分。\n[0130] 本发明还提供一种智能手机应用程序的静态分析系统,包括接收模块11、特征提取模块12、特征匹配模块13、判定模块14、API扫描模块15。其中,\n[0131] 接收模块11用于接收上传的应用程序样本。用户可以使用客户端,访问服务端的网页或其它形式的内容,借助网页提供的上传工具或其它上传工具向服务端上传应用程序的文件,服务端接收客户端上传的应用程序样本。\n[0132] 诚然,也可以由相应的抓取模块从互联网中自动抓取并接收相关应用程序样本,或者从预设的网络位置中定时获取新的应用程序样本等。本领域技术人员应当知晓获取应用程序样本的多种方式。\n[0133] 特征提取模块12用于扫描应用程序样本安装包,并提取指定的特征信息。扫描Android系统的apk或IOS系统的ipa中的指定文件,提取指定的特征信息。所述指定特征信息包括软件名称、包名、版本编号、版本号、签名证书名称、签名证书MD5、签名证书有效期、应用程序安装包MD5、应用程序安装包SHA1中的一种或多种的组合。此外所述指定特征信息还可以为Android系统的apk或IOS系统的ipa中的指定文件的反编译文件中的代码指令或字符串。\n[0134] 特征匹配模块13用于将所述指定特征信息与云端服务器的特征码数据库进行匹配。将提取的Android系统或IOS系统应用程序的特征码数据库中的特征码与提取的Android系统或IOS系统应用程序的特征码依次进行扫描匹配,其中,所述Android系统或IOS系统的特征码数据库记录特征码信息与该信息所对应的安全等级之间的映射关系,所述Android系统或IOS系统的特征码数据库存储于云端服务器,由云端服务器推送并进行实时更新,其定期更新可以由云端服务器通过蜜罐技术或者网络获取实现,还可以通过人工上传。\n[0135] 具体扫描匹配过程为:\n[0136] S101组合提取的应用程序样本的指定特征信息;\n[0137] 具体指将提取的指定特征信息进行组合,获取至少包含两个特征的各项特征组合。由于所述Android系统或IOS系统的特征码数据库为预设的数据库,其特征码按照一定的方式描述,故而对于提取的应用程序样本的指定特征信息的组合方式必须按照与预设的所述特征码数据库相一致的规则进行组合,如将所述应用程序样本的包名、版本号、签名等明文信息进行组合,将apk或ipa文件中指定文件的反编译文件中的代码指令或字符串特征信息进行组合。\n[0138] S102与所述Android系统或IOS系统的特征码数据库中的特征码进行一一匹配;\n[0139] 将上述组合得到的各项特征组合与所述Android系统或IOS系统的特征码数据库中的特征码进行一一匹配。具体匹配方式可以简单的将特征码数据库中的特征码按顺序与组合特征一一比对,也可以按照一定的规则,比如根据已知的特征码数据库中的特征码信息,按照其特征信息内容进行排序,如按照包含包名、版本号等明文信息的特征信息、代码指令或字符串信息的顺序进行排序。从特征组合个数最多的组合特征开始,与排序后的特征码数据库中的特征码进行一一对比。\n[0140] S103如果匹配成功,则判定所述应用程序样本的安全等级;\n[0141] 一旦所述特征组合与所述Android系统或IOS系统的特征码数据库中的某项特征码匹配成功,则根据该成功匹配的特征码与其对应的安全等级之间的映射关系确定所述应用程序样本的安全等级。其中,所述安全等级利用公知技术提前人为或自动设定,可以划分为极高危险、高危险、中危险和低危险四级,也可以根据其他情况灵活划分。\n[0142] S104如果匹配不成功,则减少组合的指定特征个数,继续与Android系统或IOS系统的特征码数据库中的特征码进行一一匹配;\n[0143] 如果Android系统或IOS系统的特征码数据库中不存在与特征组合相匹配的项,则逐个减少该特征组合的特征信息,并重新与特征码数据库中的特征码进行一一比对。\n[0144] S105如果匹配不成功,则反复上一步骤,直至将单个指定特征依次与Android系统或IOS系统的特征码数据库中的特征码进行一一匹配。\n[0145] 当特征组合中的特征个数减少至单个时,则针对该单个特征信息按照步骤S102所述方法进行匹配,直至匹配完所有特征。\n[0146] 判定模块14用于判定应用程序的安全等级。通过执行特征匹配模块13,确定扫描到的应用程序的指定特征信息是否存在于所述Android系统或IOS系统的特征码数据库中,并且若所述特征匹配模块13的匹配过程成功,则根据所述Android系统或IOS系统的特征码数据库记录特征码信息与该信息所对应的安全等级之间的映射关系,确定所检测的Android系统或IOS系统应用程序的安全等级。其中,所述安全等级利用公知技术提前人为或自动设定,可以划分为极高危险、高危险、中危险和低危险四级,也可以根据其他情况灵活划分。\n[0147] API扫描模块15用于扫描应用程序的API,并判定应用程序的安全等级。当由特征提取模块12提取的应用程序的指定特征不存在于所述Android系统的特征码数据库或IOS系统的特征码数据库时,则扫描应用程序的API,检测是否存在执行敏感操作的API。\n[0148] 对于Android系统的应用程序具体操作过程为:\n[0149] 对应用程序的apk文件进行反编译,本领域技术人员常用的用于解析安装包的工具是Apktool,利用该工具可以实现对Apk文件做反向工程。因此,本方法可以通过调用Apktool指令,解压并反编译相应Apk文件,反编译后,将在临时目录中产生.smali文件和Androidmanifest.xml文件以及其它资源文件等。\n[0150] 在反编译出的AndroidManifest.xml中找到主Activity函数,获取其所在类的OnCreate()方法的反汇编代码,对于大多数应用软件来说,这里就是程序的代码入口处,所有的功能都从这里开始得到执行,沿此处一直向下查找,同时对反编译得到的.smali文件进行词法和语法的分析,由API扫描引擎追踪软件的执行流程,找出应用程序调用的与用户手机隐私相关联的行为API。\n[0151] 针对IOS系统的应用程序具体操作过程为:\n[0152] 首先采用gdb调试工具对IOS系统的应用程序的可执行文件进文件解密,得到解密的二进制文件;然后采用API扫描引擎扫描所述解密二进制文件,并分析找出所述应用程序调用的与用户手机隐私相关联的行为API。\n[0153] 所述与用户手机隐私相关联的行为API包括,诸如读取联系人、读取通话记录、发送和写入短信/彩信、开机自启动、读取硬件型号、修改联系人、删除通话记录、读取系统日志等。将上述行为API分别与所述Android系统或IOS系统的静态API策略库中记录的信息进行一一对比,其中,所述Android系统或IOS系统的静态API策略库存储于本地服务器,用于记录Android系统或IOS系统的静态API与应用程序安全等级之间的映射关系,根据匹配结果确定所检测应用程序的安全等级。其中,所述安全等级利用公知技术提前人为或自动设定,可以划分为极高危险、高危险、中危险和低危险四级,也可以根据其他情况灵活划分。\n[0154] 以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
法律信息
- 2022-07-29
专利权的转移
登记生效日: 2022.07.18
专利权人由北京奇虎科技有限公司变更为北京奇虎科技有限公司
地址由100088 北京市西城区新街口外大街28号D座112室(德胜园区)变更为100015 北京市朝阳区酒仙桥路6号院2号楼1至19层104号内8层801
专利权人由奇智软件(北京)有限公司 变更为空
- 2017-05-31
- 2015-07-15
实质审查的生效
IPC(主分类): G06F 21/56
专利申请号: 201510142550.1
申请日: 2015.03.27
- 2015-06-17
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |