《毕业设计(论文)信息安全综合设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)信息安全综合设计.doc(44页珍藏版)》请在三一办公上搜索。
1、 目 录摘要3第一章作品概述51.1背景分析51.2课题研究意义61.2.1安卓市场恶意软件现状61.2.2安卓恶意软件检测评估的必要性71.3 相关工作81.3.1安卓恶意软件检测的现状81.3.1.1 主流检测方案81.3.1.2 相关安全公司检测情况91.3.2安卓恶意软件评估相关内容101.3.2.1 签名机制101.3.2.2 应用程序权限控制机制111.4 特色描述111.5 应用前景分析11第二章作品设计与实现122.1 系统方案122.1.1 方案一122.1.2 方案二122.1.3 方案三132.2 实现原理132.2.1检测原理132.2.1.1基于特征代码的检测132.
2、2.1.2基于权限统计分析的检测132.2.2 Android系统原理142.2.2.1 Android系统结构142.2.2.2 APK文件及其结构162.2.2.3 Android病毒原理172.2.2.4 机器学习、SVM介绍和libsvm的使用182.3 软件流程272.3.1 方案一流程272.3.2 方案二流程282.4.3 方案三流程292.4 功能312.5 指标31第三章作品测试与分析323.1 测试环境搭建323.1.1 Windows 8.1323.1.2 Python3.4.3323.1.3 Java SE 8u45323.1.4 Matlab 2014a323.2 测
3、试目的323.3 测试方案333.3.1系统方案一测试333.3.1.1测试方案1333.3.1.1测试方案2333.3.2 系统方案二测试333.3.2.1测试方案3333.3.2.1 测试方案4333.3.3系统方案三测试333.3.3.1 测试方案5333.3.4 实用性测试343.3.4.1 测试方案6343.4 测试过程及数据343.4.1测试方案1343.4.2测试方案2353.4.3测试方案3363.4.4测试方案4373.4.5测试方案5383.4.6测试方案6393.5 结果分析393.5.1测试方案1393.5.2测试方案2393.5.3测试方案3393.5.4测试方案43
4、93.5.5测试方案5403.5.6测试方案640第四章创新性说明414.1对Apk权限特征采取加权处理414.2对Apk权限特征进行基于统计的拓展414.3轻量而加强的机器学习方案41第五章总结42摘要Android移动开发平台是Google与30多家全球移动通讯领域内的领军企业联合开发。Android是为移动终端打造的包括操作系统、中间件、开发组件及应用软件的真正开源平台并于2008年发布了第一款智能手机。如今移动平台逐渐成为人们上网的主要方式,并且基于Android平台的应用越来越普及, Android在人们日常生活中扮演着越来越重要的角色,导致其逐渐成为大量恶意攻击者的首选目标之一。A
5、ndroid应用软件智能终端受到攻击主要原因是用户从Android第三方市场下载的软件可以不经检测就放到Android软件市场供用户下载,其代码中存在的安全漏洞是受到攻击的根源。安全漏洞可以使攻击者以非法手段获取用户重要信息及系统的控制权,并且Android智能终端存储着用户大量隐私信息,一旦这些信息泄露或破坏,对用户造成的损失难以想象。随着手机恶意软件愈演愈烈的增长之势,越来越多的手机恶意软件以获取用户的钱财为目的,其使用的手段也日趋复杂。所以,对Android平台上恶意软件的检测评估迫在眉睫。本作品主要针对Android平台下的恶意软件,对未知软件(即APK文件)进行分析、检测与评估,大致
6、判断出该软件是否为未知软件。例如,对某一软件,我们会对这个APK包里面的权限、签名等信息进行提取,再进行判断。本作品的主要特性如下:(1)与用户的交互能力强,方便操作。用户选择了需要检测的安卓软件之后,系统会自动调用我们预设的相关的模型对软件进行处理分析,最终给出一个参考的结果;(2)符合时代需求。现如今智能手机应用广泛,Android系统更是用户群体庞大,对恶意软件的可靠检测迫在眉睫;(3)预测结果可靠性强。该作品采用了多个因素作为评估检测的评估标准,包括签名、使用权限、特征码等,相对于一些单一的标准来说,综合性更强,从而可信度更高;(4)实用性强。该作品的应用场景广泛,可以说是智能手机用户
7、的日常所需。目前,安卓手机上恶意软件引起的安全事件层出不穷,如监控手机的语音通话,并将这些信息发送到指定主机,还有一些一键root软件实则会更改系统权限盗取信息等。本作品与用户的交互能力很强,预测结果可靠,且用户群体众多,可以应用到很多的领域,在软件应用市场、普通手机用户群体和手机软件开发测试人员群体中都有较大的应用时间。作品概述 1.1背景分析安卓应用软件随着移动互联网技术日新月异地高速发展,智能终端的的功能快速增多使之逐步取代传统桌面成为下一代的计算平台。Android作为最受欢迎的智能终端系统,已经从最初的智能手机领域进入教育、医疗、军事、汽车、家居等重要行业。由于Android允许用户
8、自行安装各种丰富的应用程序,包括学习、办公、移动支付、手机购物、以及生活中的各种软件,使得Android的功能在不断的升级和扩充。另外Android智能终端用户可以通过移动通讯网络随时随地进行网上办公,收发邮件,浏览网页,网上信息注册,网上购物及网上银行转账等,Android终端进行着各种信息的构建。同时存储着SMS、联系人等重要信息,Android智能终端成为用户大量隐私办公等信息存储的设备。在安卓软件中,恶意代码数量呈指数增长,并且出现了多种对抗分析、检测、查杀的技术;应用软件和数字内容的版权不断遭到侵害,软件破解、软件篡改、广告库修改和植入、恶意代码植入、应用内付费破解等普遍存在;应用软
9、件本身的安全漏洞频繁出现在国内外互联网企业的产品中,数据泄露和账户被盗等潜在风险让人担忧;官方系统、第三方定制系统和预装软件的漏洞不断被发现,对系统安全与稳定产生极大的威胁;Android应用软件移动支付从概念逐步转为实践,而对通信技术的攻击、对算法和协议的攻击时常发生;移动设备正融入办公环境,但移动平台的攻击与APT攻击结合的趋势日益明显。更糟的是,随着地下产业链的不断成熟和扩大,以及攻击技术的不断发展和改进,这些威胁和相关攻击只会来势更凶。安卓平台上恶意App泛滥已经不是什么大新闻,但关于安卓恶意App到底泛滥到何种程度,恐怕很多人还没有一个清晰的概念。现在,著名安全厂商赛门铁克发表了一份
10、报告,称安卓App中有17%是恶意App每不到6个安卓App中就存在一个恶意软件,安卓恶意App的泛滥程度可见一斑。 国内安全公司的数据也显示:流氓推广、恶意扣费、窃取用户数据等恶意软件增长迅速,危害日益严重。在黑色产业链中,骇客通过技术手段将非法SP提供的扣费号段植入到应用中,实现恶意吸费。手机骇客的攻击目标正在瞄准用户的手机支付与消费行为。为了更好地防范恶意软件和骇客带来的威胁,最好的办法是了解他们的攻击方法和工具,建立技术壁垒。Android应用软件依靠Google媒体资源和强大开发,成为最流行的智能终端平台,也是各智能终端厂商追逐对象,在带给用户丰富多彩的用户体验外,随之而来的安全问题
11、给社会稳定、国家安全、用户隐私带来巨大的挑战,移动应用软件安全现在是一个重要的研究课题,安全漏洞挖掘是降低网络攻击以及保障用户系统及隐私安全的有效的的途径保证软件免受攻击的重要途径,解决Android软件恶意软件泛滥是今后安全信息领域重要的研究方向。1.2课题研究意义 1.2.1安卓市场恶意软件现状Android移动开发平台是Google与30多家全球移动通讯领域内的领军企业联合开发。Android是为移动终端打造的包括操作系统、中间件、开发组件及应用软件的真正开源平台并于2008年发布了第一款智能手机。Android应用软件具有丰富的硬件选择并且完全摆脱了运营商和开发商的限制。由于其开源性和
12、与应用的完美结合,吸引了大量开发商和应用开发者转向Android。Android强大的功能和丰富的应用以及优良的性能使其发展迅猛,短短几年,Android已经成为全球第一大智能手机操作系统。如今移动平台逐渐成为人们上网的主要方式,并且基于Android平台的应用越来越普及, Android在人们日常生活中扮演着越来越重要的角色,导致其逐渐成为大量恶意攻击者的首选目标之一。国外用户一般是从谷歌应用商店下载应用,由于谷歌自身安全检测机制的保障,其安全性不太可能出现大的问题。但是,中国用户可能无法直接访问谷歌应用商店,大都是通过国内第三方Android市场下载应用,而谷歌无法控制第三方的应用商店。因
13、此,国内的Android应用安全问题更加突出,安全威胁更高。然而,即使在安卓官方商店Google Play,也有大量假冒App被发现,Play商店排名前50的免费App,大部分在Play商店中有对应的假冒产品存在。在今年年初,俄罗斯杀毒公司Dr. Web发布了关于2014年手持设备恶意软件的回顾报告。就信息安全事件来讲,在2014年各种状况频出又丰富多彩。新型安卓恶意应用程序不断涌现。具体来讲,银行木马无数的修改版本攻击了许多位于不同国家的设备且它的数量仍在不断增长。此外,互联网安全技术全球领导厂商赛门铁克在最新公布的互联网安全威胁报告中发出警告,所有Android应用中,有17%(约100万
14、个)实际上是恶意软件伪装的。而在2013年报告中,这种内含病毒的应用约为70万个。三分之一Android应用被赛门铁克称为“灰色软件”(Greyware或Grayware),这些移动软件主要是利用大量广告“轰炸”你。赛门铁克还发现首款移动加密勒索恶意软件,这种软件可加密你的数据,以其为“人质”向你勒索赎金。1.2.2安卓恶意软件检测评估的必要性Android应用软件智能终端受到攻击主要原因是用户从Android第三方市场下载的软件可以不经检测就放到Android软件市场供用户下载,其代码中存在的安全漏洞是受到攻击的根源。安全漏洞可以使攻击者以非法手段获取用户重要信息及系统的控制权,并且Andr
15、oid智能终端存储着用户大量隐私信息,一旦这些信息泄露或破坏,对用户造成的损失难以想象。随着手机恶意软件愈演愈烈的增长之势,越来越多的手机恶意软件以获取用户的钱财为目的,其使用的手段也日趋复杂。为了实现钓鱼攻击、窃取银行卡信息和银行账户钱财,手机恶意软件变种数量增长了近20倍。在众多手机恶意软件类型之中,银行木马对用户造成的危害最为巨大。在检测到的银行木马中,某些银行木马甚至能够直接从银行账号实施钱财窃取。这种恶意软件已经从以往直接扣除受害者手机账户话费的老套骗术中得到“升级”。因此,其所造成的潜在损失也在显著增加。而网络罪犯似乎也认准了这种获利手段。相较之猛增的“量”变,更让人感到忧心的是,
16、手机恶意程序同时也出现了“质”的飞跃。网络罪犯开始越来越多地使用代码混淆技术,即故意制造复杂的代码,这为恶意软件的分析工作增加了很大的难度。恶意软件使用的代码混淆越复杂,反病毒解决方案检测和清除其所花费的时间也越长,从而让网络罪犯有时间窃取到更多的钱财。网络罪犯会使用安卓漏洞增强恶意程序的权限,大幅增加恶意程序的功能,并且使清除恶意程序变得更为困难。1.3 相关工作1.3.1安卓恶意软件检测的现状1.3.1.1 主流检测方案当前主流恶意软件检测方案主要包括, 以特征代码(signature-based)为基准的检测方案和以行为(behavior-based)为基准的检测方案。 以特征代码(si
17、gnature-based)为基准的检测方案在不同的文献中的定义不同,特征方案分为字节码特征(byte-code signature)还是行为特征(behavioral signature), 但本质上都是通过分析待检测文件是否包含已知恶意软件的特征代码( 通常是从一段病毒代码中提取的代码和字符常量)来判断其是否具备恶意行为。而基于行为的检测方案则依靠监视程序的行为(如, 修改内存控制块和总量、 盗用截流系统中断、病毒程序与宿主程序切换、 对可执行文件做写入操作、搜索 API 函数地址) 来作为判断的基准,由此判断文件是否是恶意文件。(1)以特征码为基准的恶意软件检测方案本论文中以特征代码为基
18、准的检测(signature-based) 采用基于字节码特征的检测(byte-code-based)方案。并对其定义如下:从恶意软件的恶意代码中提取出连续不含空格的字符串作为该恶意软件的特征, 保存在病毒库中, 并依靠由此构建的病毒库来检测恶意软件。因此,病毒库须频繁升级以应对病毒的反检测和新变种。同时,基于特征代码的检测方案具有滞后性,无法识别未知的恶意软件。(2)以行为为基准的恶意软件检测方案以行为(behavior-based)为基准的检测方法又可以实现方式分为白名单模型和黑名单模型,黑名单模型对恶意行为进行建模,但和基于特征代码的检测(signature-based)一样,无法检测未
19、知恶意程序。基于白名单的的模型和黑名单模型相反,主要对合法行为进行建模,可以有效的检测未知恶意软件,但在实际应用中,由于合法行为占据了较大比例,要对其进行充分的抽象具有极大的挑战,从而引起误报。1.3.1.2 相关安全公司检测情况(1)所选取的安全软件供应商产品包名版本AVG小红伞com.antivirus3.1Symantec诺顿手机安全软件com.symantec.mobilesecurity3.3.0.892Lookout手机保护com.lookout8.7.1-EDC6DFSESETESET移动安全com.eset.ems1.1.995.1221Dr.Web大蜘蛛反病毒软件com.dr
20、web7.00.3Kaspersky卡巴斯基手机安全软件com.kms9.36.28Trend micro移动安全个人版。com.trendmicro.tmmspersonal2.6.2ESTSoftALYac Androidcom.estsoft.alyac1.3.5.2ZonerZoner安全防护com.zoner.Android.antivirus1.7.2WebrootWebroot 安全和防病毒com.webroot.security3.1.0.4547(2)恶意软件采取技术代码技术P改装一分解及组装RP包重命名EE加密本地利用或有效载荷RI重命名标识符RF重命名文件ED编码字符串和
21、数组数据CR代码重排序CI间接调用JN插入垃圾代码AVGSymantecLookoutESETDr. WebKasperskyTrend MESTSoftZonerWebrootP一XRPXXXEEXXRIXXXEDXCRXCIXJNXRI + EEXXXXXEE + EDXXXEE + RFXXXEE + CIXXXRP + RI + EE + ED + RF + CIXXXXXXXXXX(3)部分检测结果注:上表中的“”表示未检测出1.3.2安卓恶意软件评估相关内容1.3.2.1 签名机制与其他一些智能手机平台一样, Android 也设计了自己的签名机制。不过和其他平台又有所不同的是,
22、Android 应用程序签名标明了 APK 的发布者,同时可以对程序的完整性和可靠性作为保证。只要黑客试图对 APK 的内部进行了变动, 就必须对 APK 文件进行重新签名。而签名信息,除非原作者的私钥泄露, 被黑客获取, 一般情况下不可能和原签名信息一致。同时, 签名机制在 Android 应用程序更新时也能起到保护作用。如果用户在更新应用程序时,两者的签名信息不一致, 系统将会禁止此次更新。如果一个应用程序需要使用System权限,应用程序的签名更需要和Framework的签名保持一致。由此可见,在Android 的应用程序和应用程序框架层中,签名机制起到了十分重要作用,进一步保护了系统的
23、安全。签名机制主要是在 Android 安装或更新应用程序时生效, 是一种检测 APK 包完整性和发布机构唯一性的机制。 它基于每个 APK 包中签名文件具有的唯一性,使得单纯的对 APK 文件解压后替换文件的篡改行为无法奏效,因此一定程度上实现对保护了系统的安全。1.3.2.2 应用程序权限控制机制权限控制机制是Android 系统在应用程序框架层最核心的机制。它用于限制应用程序的访问系统的API 和资源。应用程序必须在权限以内运行,而不能访问权限外的任何资源。Android的Package Manager在程序安装时经用户同意给应用程序安装包赋予权限,而在执行时由应用程序框架层验证权限,如
24、果应用程序未经申请使用了受限的资源,应用程序会自动关闭。 Android 定义了上百种系统权限,所涉及的功能包括:拍照,访问网络,地理位置定位等。这些权限可以被分为普通级、危险级、签名级和系统级。1.4 特色描述本作品着眼于安卓恶意软件的检测。对软件的检测,它不局限于单一标准,而是综合评估与计算。另外,本作品利用机器学习和权限加权,大大提高了检测结果的准确度。同时利用svm工具,根据机器学习来构造检测系统。1.5 应用前景分析目前,安卓手机上恶意软件引起的安全事件层出不穷,如监控手机的语音通话,并将这些信息发送到指定主机,还有一些一键root软件实则会更改系统权限盗取信息等。本作品应用市场有:
25、(1)软件应用市场:可以通过本产品对于市场上要上架的软件进行检测,作为审核上架的一道工序,以便更好地为用户提供一个下载安全好用的软件的地方。同时在用户下载的时候,也可以根据本作品的检测结果向用户提供一些建议。(2)普通安卓手机用户:对于不可信来源下载来的APK利用本软件进行检测,参考一下是否可以放心使用该软件。(3)软件测试及开发人员:利用本作品对于自身的开发测试工作进行参考。作品设计与实现 2.1 系统方案在本系统中,对于Android恶意软件检测与评估的方案并不是一蹴而就的。为此,我们一开始采用了较为直观简洁的检测方案,随后不断尝试对方案进行改进、丰富、提效。在系统设计的过程中,改变方案的
26、方向不一定是正确的,因此,在制定不同方案的同时,将不同阶段的方案随时进行效果对比,分析不同方案的优劣,以寻找出一个或者几个相对最优的方案。下面介绍了本系统设计中Android恶意软件检测与评估的不同方案。2.1.1 方案一对软件的Android所有95个不同权限的使用情况进行机器学习分析,得到基于大量权限特征的Model进行预测。使用Google提供的apktool对Android软件权限进行提取,分析Manifest.xml中的所有权限信息(“users-permissions”),对大量样本的所有权限使用情况进行机器学习运算,利用libsvm工具箱得出预测model,进而用model对An
27、droid软件是否为恶意软件进行检测。2.1.2 方案二在Android所有95个不同权限中进行基于安全相关性的筛选与加权,试图提高SVM model的准确率。由于apktool的反编译过程较慢,方案二采用了更为高效的AXMLPrinter作为XML分析手段。为了进一步提高系统的分析效率,并不将所有的Android权限标签作为SVM测试集的特征项,而是从中选择了一部分,并且根据人为判断的重要性给予一定的权值。而为了提高预测准确率,加入了特征码检测过程,该过程可以以很高的准确率识别出恶意软件。方案二实现的过程中,我们不断对Android权限的筛选和加权情况进行优化和修改,直到使Model的准确率
28、达到难以继续提高的数值。2.1.3 方案三结合方案一和方案二。在对权限进行筛选、加权的同时,依然对所有权限进行分类统计、分级统计的操作,统计出各类、各级权限的个数,并且根据设定的阈值将逻辑判断结果作为测试集特征的一部分。方案二采用更少的特征和具有高准确性的特征码检测,而方案一的大量特征则为SVM提供了更大的样本空间。方案三在执行类似方案二的过程同时,对95个权限标签进行统计上的分类和分级。其中对权限的分类基于权限的不同功能,而权限的分级则是根据影响手机系统安全、用户利益的威胁大小进行。对于不同级别、组别的软件,将根据其特征设定合适的权限个数阈值,判断此项是否超过阈值的逻辑结果作为特征附加到测试
29、集的特征中。2.2 实现原理2.2.1检测原理本系统对Android恶意软件的检测主要分为基于特征代码的检测和基于权限统计分析的检测。2.2.1.1基于特征代码的检测特征代码检测是一种使用特征库的检测方法,本系统中的特征代码检测定义如下:从恶意软件张提取出若干段具有唯一性、固定性的字节码(如,一段特殊代码或字符串作为该恶意软件的特征,由上述方法构建特征库,通过对未知是否恶意的软件进行字节码的特征库匹配,检测其是否为恶意软件。基于特征代码的检测方案是现代病毒检测的核心技术之一。但其存在以下缺点:1)具有滞后性,无法识别未知的恶意软件2)字节码特征容易通过加密和混淆的方式被改变,导致特征库需要频繁
30、更新。由于基于特征代码检测的上述特性,本系统辅以基于权限统计分析的检测方案。2.2.1.2基于权限统计分析的检测权限控制机制是Android 系统在应用程序框架层最核心的机制。它用于限制应用程序的访问系统的API 和资源。应用程序必须在权限以内运行,而不能访问权限外的任何资源。Android的Package Manager在程序安装时经用户同意给应用程序安装包赋予权限,而在执行时由应用程序框架层验证权限,如果应用程序未经申请使用了受限的资源,应用程序会自动关闭。 Android 定义了上百种系统权限,所涉及的功能包括:拍照,访问网络,地理位置定位等。这些权限可以被分为普通级、危险级、签名级和系
31、统级。由与Android软件所申请的权限与其软件的功能有着极大的相关性,使得对权限进行分析判断Android软件是否恶意软件成为可能。而Android软件数以百万、千万级的庞大数量,则为使用机器学习算法对进行权限分析、建立模型提供了有利的条件。通过对权限特征的量化,即可以使用SVM(支持向量机)分类器对大量的Android恶意软件、非恶意软件的样本的权限信息进行统计和建模,生成一个用于预测Android软件是否为恶意软件的Model。2.2.2 Android系统原理2.2.2.1 Android系统结构Android系统架构为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库
32、层以及Linux内核层。下图为Android系统架构图:(1)应用程序层Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用程序都是用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。(2)应用程序框架层该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、 电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务
33、十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框 架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本 身的各种应用程序组件。(3)系统库和Android运行库系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。 Android运行库包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如 Android.os、A、
34、Android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。(4)Linux内核Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。2.2.2.2 APK文件及其结构apk文件,即Android application package文件。每个要安装到O
35、Phone平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。apk文件实际是一个zip压缩包,可以通过解压缩工具解开。以下是我们用zip解开helloworld.apk文件后看到的内容。可以看到其结构跟新建立的工程结构有些类似。(1)AndroidManifest.xmlAndroidManifest.xml是Android应用程序中最重要的文件之一。它是Android程序的全局配置文件,是每个Android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件(activi
36、ties, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所必须拥有的信息。在本系统中,主要通过对AndroidManifest.xml文件的信息提取和分析实现了恶意软件的检测。(2)META-INFMETA-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个api包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。而在安装apk包时,应用管理器会按照同样的算法对包里的
37、文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk 包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。(3)res目录存放的大部分是一些图片资源和界面的布局文件。drawable和drawable-*目录存放的是各种不同分辨率的图片资源。layout、menu、xml目录存放的是软件界面的布局文件,包括菜单、窗口、主界面和设置界面等。(4)classes.dexclasses.de
38、x是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。(5)resources.arsc二进制格式的文件,aapt对资源进行编译时,会为每一个资源分配唯一的id值,程序在执行时会根据这些id值读取特定的资源,而resouces.arsc文件正式包含了所有的id值的数据集合。在该文件中,如果某个id对应的是string,那么该文件会直接包含该值,如果id对应的资源是某个layout或者drawable资源
39、,那么该文件会存入对应资源的路径。2.2.2.3 Android病毒原理Android平台的恶意软件主要由如下几种攻击方式:(1)恶意扣费:这类病毒在用户不知情的情况下,向SP订购付费业务,扣除用户的话费,(2)窃取隐私:这类恶意软件主要是窃听用户通话,窃取用户位置信息、通讯录等资料,并在后台上传到服务器,从中获取有利信息或者转卖出去,进而获利、)(3)消耗资费:这类病毒主要在后台自动联网,不断下载广告主推广的应用或其他恶意软件,从而获取非法利益,这样直接导致用户的网络流量和设备电量消耗过大。通过分析病毒源代码,可以发现病毒主要是利用短信、电话、网络等功能加上一些其他的辅助功能达到非法目的。1
40、)盗发短信在后台偷偷向SP发送订购付费业务短信,这是病毒最常用的手段,病毒获得发送短信的权限后,利用SmsManageY类,在用户不知道的情况下,向SP发送订购付费业务短信:SmsManager.getDefault()sendTextMessage (tel,null,message,null, null);其中tel为短信发送地址,message为短信订购内容、通常在向SP发送订购业务后,SP会回复一个确认短信给用户,让用户再次确认是否订购该业务。这时,病毒屏蔽SF发来的确认短信,不让用户看到,再次偷偷发送确认短信给SP,然后删除相关短信。这样,就成功订购了业务,扣除了用户的话费,而这一过
41、程,用户毫不知情。病毒屏蔽短信是利用了Android的四大组件之一BroadcastReceiver, Android收到短信时,会发出一个有序广播,病毒获得接收短信的权限后,声明一个BroadcastReceiveY并把优先级设的很高,病毒优先收到SP发来的短信后,判断是否是特定SP的号码,如果是,首先终止广播的传播,其他程序就不会收到短信了。然后再次偷偷向SP发送确认短信,最后删除SP发来的消息和发件箱中偷偷发出的短信。2)盗打电话对于Android手机,通过拨打电话扣费的病毒较少,因为拨号无法做到像偷发短信一样那么好的隐蔽性,不过最近也出现了一些病毒,入侵用户的手机后,自动拨打指定的号码
42、,这种号码通常会收取很高的SP费用。病毒获得拨打电话的权限后,只需要调用一次Intent,即可实现拨打指定电话的功能。3)网络传输病毒一般从两个方面利用网络:第一,在后台联网,上传用户的隐私信息;第二,在后台下载其他应用程序或者病毒程序。这两者都将消耗用户大量的网络流量,同时也消耗了很多电量。无论是上传还是下载,都是使用HTTP,借助于JAVA的输入输出流实现上传代码类似于: UploadFile(File file,String up_url); 其中file是上传的文件,up_url是上传服务器地址、 下载代码类似于: DownFile ( String url,String path,i
43、nt thread_ num);其中,url为所下载文件的源地址,path是文件下载后的保存路径,thread num是下载的线程数。2.2.2.4 机器学习、SVM介绍和libsvm的使用 基于数据的机器学习是现代智能技术中的重要方面,研究从观测数据(样本)出发寻找规律,利用这些规律对未来数据或无法观测的数据进行预测。机器学习方法有很多,例如决策树、神经网络、隐马尔可夫模型(HMM)、支持向量机等,现有机器学习方法共同的重要理论基础之一是统计学。在传统统计学的理论上发展出来的支持向量机(SVM)理论表现出其独特的性能。本节包括机器学习、支持向量机(SVM)和libsvm的使用。(1) 机器学
44、习1)机器学习模型与定义机器学习35的目的是根据给定的训练样本求得系统输入、输出之间的关系的,使系统能够对其他行为作出最可能正确的预测。其基本模型如图3-10所示。图 3-10 机器学习模型图其中系统是我们所要进行研究的对象,学习机是我们所要得到的模型。系统在一定的输入x下能够得到一定的输出y值,而学习机输出的为y。假设输出y与输入x之间存在一定的未知联系,机器学习的问题就是根据若干个独立同分布的训练样本(x1,y1), (x2,y2), (xn,yn)(假设样本个数为n)在一组函数中,选择一个最优的函数对x,y之间的关系进行评估,而就是一个学习机。若给定的输入x与定量的参数时,其输出值y=是
45、相等的,则称此学习机是确定性的学习机,若对相同的x与,输出值y=有出现不相等的情况,则称此学习机是不确定性的。2)损失函数对于一个学习机,可以定义一个损失函数,用来表示预测函数对y进行预测时造成的损失。对于模式识别、回归模型和概率密度估计问题这三个机器学习的基本问题,有着不同形式的损失函数。下面作简单的介绍。模式识别问题模式识别,简单来说,即是对数据进行模式分类的过程,通过训练学习机“学习”知识,然后对待预测数据进行预测类别。其输出值y是类别号,一个号码对应唯一一个类别。在两元分类的情况下,y值可以定义为y=0,1,是二值函数。一般定义模式识别问题的损失函数为: (3-33)回归问题回归问题中的输出值y是个连续变量,其损失函数一般采用最小平方的误差,即定义为: (3-34)概率密度估计问题在概率密度估计问题中,学习的目击是根据训练样本确定输入值x的概率密度。假设其密度函数为,则损失函数一般定义为: (3-35)3)经验风险最小化在机器学习中,对以一个既定的学习机,其损失函数可以定义一个期望,成为期望风险,定义如下: (3-36)而经验误差是指训练样本的平均误差,这是每个系统都有的误差,我们只有最大可能的去缩减误差,而不能完全的避免之,经验误差定义为: (3-37)在实际问