信息安全综合设计

更新时间:2023-10-06 21:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

摘要 ............................................................................................................................................................ 3 第一章 作品概述 ............................................................................................................................ 5

1.1背景分析 ...................................................................................................................................... 5 1.2课题研究意义 .............................................................................................................................. 6

1.2.1安卓市场恶意软件现状 ................................................................................................... 6 1.2.2安卓恶意软件检测评估的必要性 ................................................................................... 7 1.3 相关工作 ..................................................................................................................................... 8

1.3.1安卓恶意软件检测的现状 ............................................................................................... 8

1.3.1.1 主流检测方案 ....................................................................................................... 8 1.3.1.2 相关安全公司检测情况 ....................................................................................... 9 1.3.2安卓恶意软件评估相关内容 ......................................................................................... 10

1.3.2.1 签名机制 ............................................................................................................. 10 1.3.2.2 应用程序权限控制机制 ..................................................................................... 11

1.4 特色描述 ................................................................................................................................... 11 1.5 应用前景分析 ........................................................................................................................... 11 第二章 作品设计与实现 .............................................................................................................. 13

2.1 系统方案 ................................................................................................................................... 13

2.1.1 方案一 ............................................................................................................................ 13 2.1.2 方案二 ............................................................................................................................ 13 2.1.3 方案三 ............................................................................................................................ 14 2.2 实现原理 ................................................................................................................................... 14

2.2.1检测原理 ......................................................................................................................... 14

2.2.1.1基于特征代码的检测 .......................................................................................... 14 2.2.1.2基于权限统计分析的检测 .................................................................................. 14 2.2.2 Android系统原理 ........................................................................................................... 15

2.2.2.1 Android系统结构 ................................................................................................ 15 2.2.2.2 APK文件及其结构 ............................................................................................. 17 2.2.2.3 Android病毒原理 ................................................................................................ 18 2.2.2.4 机器学习、SVM介绍和libsvm的使用 ......................................................... 20

2.3 软件流程 ................................................................................................................................... 28

1 / 46

2.3.1 方案一流程 .................................................................................................................... 28 2.3.2 方案二流程 .................................................................................................................... 30 2.4.3 方案三流程 .................................................................................................................... 31 2.4 功能 ........................................................................................................................................... 33 2.5 指标 ........................................................................................................................................... 33 第三章 作品测试与分析 .............................................................................................................. 34

3.1 测试环境搭建 ........................................................................................................................... 34

3.1.1 Windows 8.1 .................................................................................................................... 34 3.1.2 Python3.4.3 ...................................................................................................................... 34 3.1.3 Java SE 8u45 ................................................................................................................... 34 3.1.4 Matlab 2014a ................................................................................................................... 34 3.2 测试目的 ................................................................................................................................... 34 3.3 测试方案 ................................................................................................................................... 35

3.3.1系统方案一测试 ............................................................................................................. 35

3.3.1.1测试方案1 ........................................................................................................... 35 3.3.1.1测试方案2 ........................................................................................................... 35 3.3.2 系统方案二测试 ............................................................................................................ 35

3.3.2.1测试方案3 ........................................................................................................... 35 3.3.2.1 测试方案4 .......................................................................................................... 35 3.3.3系统方案三测试 ............................................................................................................. 35

3.3.3.1 测试方案5 .......................................................................................................... 35 3.3.4 实用性测试 .................................................................................................................... 36

3.3.4.1 测试方案6 .......................................................................................................... 36

3.4 测试过程及数据 ....................................................................................................................... 36

3.4.1测试方案1 ...................................................................................................................... 36 3.4.2测试方案2 ...................................................................................................................... 38 3.4.3测试方案3 ...................................................................................................................... 38 3.4.4测试方案4 ...................................................................................................................... 40 3.4.5测试方案5 ...................................................................................................................... 41 3.4.6测试方案6 ...................................................................................................................... 41 3.5 结果分析 ................................................................................................................................... 42

3.5.1测试方案1 ...................................................................................................................... 42 3.5.2测试方案2 ...................................................................................................................... 42 3.5.3测试方案3 ...................................................................................................................... 42 3.5.4测试方案4 ...................................................................................................................... 42 3.5.5测试方案5 ...................................................................................................................... 42 3.5.6测试方案6 ...................................................................................................................... 43

第四章 创新性说明 ...................................................................................................................... 44

4.1对Apk权限特征采取加权处理 ............................................................................................... 44 4.2对Apk权限特征进行基于统计的拓展 ................................................................................... 44 4.3轻量而加强的机器学习方案 .................................................................................................... 44 第五章 总结 .................................................................................................................................. 45

2 / 46

摘要

Android移动开发平台是Google与30多家全球移动通讯领域内的领军企业联合开发。Android是为移动终端打造的包括操作系统、中间件、开发组件及应用软件的真正开源平台并于2008年发布了第一款智能手机。如今移动平台逐渐成为人们上网的主要方式,并且基于Android平台的应用越来越普及, Android在人们日常生活中扮演着越来越重要的角色,导致其逐渐成为大量恶意攻击者的首选目标之一。

Android应用软件智能终端受到攻击主要原因是用户从Android第三方市场下载的软件可以不经检测就放到Android软件市场供用户下载,其代码中存在的安全漏洞是受到攻击的根源。安全漏洞可以使攻击者以非法手段获取用户重要信息及系统的控制权,并且Android智能终端存储着用户大量隐私信息,一旦这些信息泄露或破坏,对用户造成的损失难以想象。随着手机恶意软件愈演愈烈的增长之势,越来越多的手机恶意软件以获取用户的钱财为目的,其使用的手段也日趋复杂。所以,对Android平台上恶意软件的检测评估迫在眉睫。

本作品主要针对Android平台下的恶意软件,对未知软件(即APK文件)进行分析、检测与评估,大致判断出该软件是否为未知软件。例如,对某一软件,我们会对这个APK包里面的权限、签名等信息进行提取,再进行判断。

本作品的主要特性如下:

(1)与用户的交互能力强,方便操作。用户选择了需要检测的安卓软件之后,系统会自动调用我们预设的相关的模型对软件进行处理分析,最终给出一个参考的结果;

(2)符合时代需求。现如今智能手机应用广泛,Android系统更是用户群体庞大,对恶意软件的可靠检测迫在眉睫;

(3)预测结果可靠性强。该作品采用了多个因素作为评估检测的评估标准,包括签名、使用权限、特征码等,相对于一些单一的标准来说,综合性更强,从而可信度更高;

(4)实用性强。该作品的应用场景广泛,可以说是智能手机用户的日常所需。 目前,安卓手机上恶意软件引起的安全事件层出不穷,如监控手机的语音通话,

3 / 46

并将这些信息发送到指定主机,还有一些一键root软件实则会更改系统权限盗取信息等。本作品与用户的交互能力很强,预测结果可靠,且用户群体众多,可以应用到很多的领域,在软件应用市场、普通手机用户群体和手机软件开发测试人员群体中都有较大的应用时间。

4 / 46

作品概述

1.1背景分析

安卓应用软件随着移动互联网技术日新月异地高速发展,智能终端的的功能快速增多使之逐步取代传统桌面成为下一代的计算平台。Android作为最受欢迎的智能终端系统,已经从最初的智能手机领域进入教育、医疗、军事、汽车、家居等重要行业。由于Android允许用户自行安装各种丰富的应用程序,包括学习、办公、移动支付、手机购物、以及生活中的各种软件,使得Android的功能在不断的升级和扩充。另外Android智能终端用户可以通过移动通讯网络随时随地进行网上办公,收发邮件,浏览网页,网上信息注册,网上购物及网上银行转账等,Android终端进行着各种信息的构建。同时存储着SMS、联系人等重要信息,Android智能终端成为用户大量隐私办公等信息存储的设备。

在安卓软件中,恶意代码数量呈指数增长,并且出现了多种对抗分析、检测、查杀的技术;应用软件和数字内容的版权不断遭到侵害,软件破解、软件篡改、广告库修改和植入、恶意代码植入、应用内付费破解等普遍存在;应用软件本身的安全漏洞频繁出现在国内外互联网企业的产品中,数据泄露和账户被盗等潜在风险让人担忧;官方系统、第三方定制系统和预装软件的漏洞不断被发现,对系统安全与稳定产生极大的威胁;Android应用软件移动支付从概念逐步转为实践,而对通信技术的攻击、对算法和协议的攻击时常发生;移动设备正融入办公环境,但移动平台的攻击与APT攻击结合的趋势日益明显。更糟的是,随着地下产业链的不断成熟和扩大,以及攻击技术的不断发展和改进,这些威胁和相关攻击只会来势更凶。

安卓平台上恶意App泛滥已经不是什么大新闻,但关于安卓恶意App到底泛滥到何种程度,恐怕很多人还没有一个清晰的概念。现在,著名安全厂商赛门铁克发表了一份报告,称安卓App中有17%是恶意App——每不到6个安卓App中就存在一个恶意软件,安卓恶意App的泛滥程度可见一斑。 国内安全公司的数据也显示:流氓推广、恶意扣费、窃取用户数据等恶意软件增长迅速,危害日益严重。在黑色产业链中,骇客通过技术手段将非法SP提供的扣费号段植入到应用中,实现恶意吸费。手机骇

5 / 46

客的攻击目标正在瞄准用户的手机支付与消费行为。为了更好地防范恶意软件和骇客带来的威胁,最好的办法是了解他们的攻击方法和工具,建立技术壁垒。

Android应用软件依靠Google媒体资源和强大开发,成为最流行的智能终端平台,也是各智能终端厂商追逐对象,在带给用户丰富多彩的用户体验外,随之而来的安全问题给社会稳定、国家安全、用户隐私带来巨大的挑战,移动应用软件安全现在是一个重要的研究课题,安全漏洞挖掘是降低网络攻击以及保障用户系统及隐私安全的有效的的途径保证软件免受攻击的重要途径,解决Android软件恶意软件泛滥是今后安全信息领域重要的研究方向。

1.2课题研究意义

1.2.1安卓市场恶意软件现状

Android移动开发平台是Google与30多家全球移动通讯领域内的领军企业联合开发。Android是为移动终端打造的包括操作系统、中间件、开发组件及应用软件的真正开源平台并于2008年发布了第一款智能手机。Android应用软件具有丰富的硬件选择并且完全摆脱了运营商和开发商的限制。由于其开源性和与应用的完美结合,吸引了大量开发商和应用开发者转向Android。Android强大的功能和丰富的应用以及优良的性能使其发展迅猛,短短几年,Android已经成为全球第一大智能手机操作系统。

如今移动平台逐渐成为人们上网的主要方式,并且基于Android平台的应用越来越普及, Android在人们日常生活中扮演着越来越重要的角色,导致其逐渐成为大量恶意攻击者的首选目标之一。国外用户一般是从谷歌应用商店下载应用,由于谷歌自身安全检测机制的保障,其安全性不太可能出现大的问题。但是,中国用户可能无法直接访问谷歌应用商店,大都是通过国内第三方Android市场下载应用,而谷歌无法控制第三方的应用商店。因此,国内的Android应用安全问题更加突出,安全威胁更高。然而,即使在安卓官方商店Google Play,也有大量假冒App被发现,Play商店排名前50的免费App,大部分在Play商店中有对应的假冒产品存在。

在今年年初,俄罗斯杀毒公司Dr. Web发布了关于2014年手持设备恶意软件的回顾报告。就信息安全事件来讲,在2014年各种状况频出又丰富多彩。新型安卓恶

6 / 46

意应用程序不断涌现。具体来讲,银行木马无数的修改版本攻击了许多位于不同国家的设备且它的数量仍在不断增长。此外,互联网安全技术全球领导厂商赛门铁克在最新公布的《互联网安全威胁报告》中发出警告,所有Android应用中,有17%(约100万个)实际上是恶意软件伪装的。而在2013年报告中,这种内含病毒的应用约为70万个。三分之一Android应用被赛门铁克称为“灰色软件”(Greyware或Grayware),这些移动软件主要是利用大量广告“轰炸”你。赛门铁克还发现首款移动加密勒索恶意软件,这种软件可加密你的数据,以其为“人质”向你勒索赎金。 1.2.2安卓恶意软件检测评估的必要性

Android应用软件智能终端受到攻击主要原因是用户从Android第三方市场下载的软件可以不经检测就放到Android软件市场供用户下载,其代码中存在的安全漏洞是受到攻击的根源。安全漏洞可以使攻击者以非法手段获取用户重要信息及系统的控制权,并且Android智能终端存储着用户大量隐私信息,一旦这些信息泄露或破坏,对用户造成的损失难以想象。

随着手机恶意软件愈演愈烈的增长之势,越来越多的手机恶意软件以获取用户的钱财为目的,其使用的手段也日趋复杂。为了实现钓鱼攻击、窃取银行卡信息和银行账户钱财,手机恶意软件变种数量增长了近20倍。在众多手机恶意软件类型之中,银行木马对用户造成的危害最为巨大。在检测到的银行木马中,某些银行木马甚至能够直接从银行账号实施钱财窃取。这种恶意软件已经从以往直接扣除受害者手机账户话费的老套骗术中得到“升级”。因此,其所造成的潜在损失也在显著增加。而网络罪犯似乎也认准了这种获利手段。

相较之猛增的“量”变,更让人感到忧心的是,手机恶意程序同时也出现了“质”的飞跃。网络罪犯开始越来越多地使用代码混淆技术,即故意制造复杂的代码,这为恶意软件的分析工作增加了很大的难度。恶意软件使用的代码混淆越复杂,反病毒解决方案检测和清除其所花费的时间也越长,从而让网络罪犯有时间窃取到更多的钱财。网络罪犯会使用安卓漏洞增强恶意程序的权限,大幅增加恶意程序的功能,并且使清除恶意程序变得更为困难。

7 / 46

1.3 相关工作

1.3.1安卓恶意软件检测的现状

1.3.1.1 主流检测方案

当前主流恶意软件检测方案主要包括, 以特征代码(signature-based)为基准的检测方案和以行为(behavior-based)为基准的检测方案。 以特征代码(signature-based)为基准的检测方案在不同的文献中的定义不同,特征方案分为字节码特征(byte-code signature)还是行为特征(behavioral signature), 但本质上都是通过分析待检测文件是否包含已知恶意软件的特征代码( 通常是从一段病毒代码中提取的代码和字符常量)来判断其是否具备恶意行为。而基于行为的检测方案则依靠监视程序的行为(如, 修改内存控制块和总量、 盗用截流系统中断、病毒程序与宿主程序切换、 对可执行文件做写入操作、搜索 API 函数地址) 来作为判断的基准,由此判断文件是否是恶意文件。

(1)以特征码为基准的恶意软件检测方案

本论文中以特征代码为基准的检测(signature-based) 采用基于字节码特征的检测(byte-code-based)方案。并对其定义如下:从恶意软件的恶意代码中提取出连续不含空格的字符串作为该恶意软件的特征, 保存在病毒库中, 并依靠由此构建的病毒库来检测恶意软件。因此,病毒库须频繁升级以应对病毒的反检测和新变种。同时,基于特征代码的检测方案具有滞后性,无法识别未知的恶意软件。

(2)以行为为基准的恶意软件检测方案

以行为(behavior-based)为基准的检测方法又可以实现方式分为白名单模型和黑名单模型,黑名单模型对恶意行为进行建模,但和基于特征代码的检测(signature-based)一样,无法检测未知恶意程序。基于白名单的的模型和黑名单模型相反,主要对合法行为进行建模,可以有效的检测未知恶意软件,但在实际应用中,由于合法行为占据了较大比例,要对其进行充分的抽象具有极大的挑战,从而引起误报。

8 / 46

1.3.1.2 相关安全公司检测情况 (1)所选取的安全软件

供应商 AVG Symantec Lookout ESET Dr.Web Kaspersky Trend micro ESTSoft Zoner Webroot 产品 小红伞 诺顿手机安全软件 手机保护 ESET移动安全 大蜘蛛反病毒软件 卡巴斯基手机安全软件 移动安全个人版。 ALYac Android Zoner安全防护 Webroot 安全和防病毒 包名 com.antivirus com.symantec.mobilesecurity com.lookout com.eset.ems com.drweb com.kms com.trendmicro.tmmspersonal com.estsoft.alyac com.zoner.Android.antivirus com.webroot.security 版本 3.1 3.3.0.892 8.7.1-EDC6DFS 1.1.995.1221 7.00.3 9.36.28 2.6.2 1.3.5.2 1.7.2 3.1.0.4547

(2)恶意软件采取技术

代码 P 一 RP EE RI RF ED CR CI JN 技术 改装 分解及组装 包重命名 加密本地利用或有效载荷 重命名标识符 重命名文件 编码字符串和数组数据 代码重排序 间接调用 插入垃圾代码

AVG Symantec Lookout ESET Dr. Web Kaspersk 9 / 46

Trend M ESTSoft Zoner Webroot y P 一 RP EE RI ED CR CI JN RI + EE EE + ED EE + RF EE + CI RP + RI + EE + ED + RF + CI X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X (3)部分检测结果

注:上表中的“X”表示未检测出

1.3.2安卓恶意软件评估相关内容

1.3.2.1 签名机制

与其他一些智能手机平台一样, Android 也设计了自己的签名机制。不过和其他平台又有所不同的是, Android 应用程序签名标明了 APK 的发布者,同时可以对程序的完整性和可靠性作为保证。只要黑客试图对 APK 的内部进行了变动, 就必须对 APK 文件进行重新签名。而签名信息,除非原作者的私钥泄露, 被黑客获取, 一般情况下不可能和原签名信息一致。同时, 签名机制在 Android 应用程序更新时也能起到保护作用。如果用户在更新应用程序时,两者的签名信息不一致, 系统将会禁止此次更新。如果一个应用程序需要使用System权限,应用程序的签名更需要和Framework的签名保持一致。由此可见,在Android 的应用程序和应用程序框架层中,

10 / 46

(1)应用程序层

Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用程序都是用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。

(2)应用程序框架层

该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、 电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框 架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本 身的各种应用程序组件。

16 / 46

(3)系统库和Android运行库

系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。 Android运行库包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如 Android.os、Android.net、Android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。

(4)Linux内核

Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。 2.2.2.2 APK文件及其结构

apk文件,即Android application package文件。每个要安装到OPhone平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。

apk文件实际是一个zip压缩包,可以通过解压缩工具解开。以下是我们用zip解开helloworld.apk文件后看到的内容。可以看到其结构跟新建立的工程结构有些类似。

17 / 46

(1)AndroidManifest.xml

AndroidManifest.xml是Android应用程序中最重要的文件之一。它是Android程序的全局配置文件,是每个Android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件(activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。

因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所必须拥有的信息。

在本系统中,主要通过对AndroidManifest.xml文件的信息提取和分析实现了恶意软件的检测。

(2)META-INF

META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个api包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。而在安装apk包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk 包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。

(3)res目录

存放的大部分是一些图片资源和界面的布局文件。drawable和drawable-**目录存放的是各种不同分辨率的图片资源。layout、menu、xml目录存放的是软件界面的布局文件,包括菜单、窗口、主界面和设置界面等。

(4)classes.dex

classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。

(5)resources.arsc

二进制格式的文件,aapt对资源进行编译时,会为每一个资源分配唯一的id值,程序在执行时会根据这些id值读取特定的资源,而resouces.arsc文件正式包含了所有的id值的数据集合。在该文件中,如果某个id对应的是string,那么该文件会直接包含该值,如果id对应的资源是某个layout或者drawable资源,那么该文件会存入对应资源的路径。

2.2.2.3 Android病毒原理

18 / 46

Android平台的恶意软件主要由如下几种攻击方式:

(1)恶意扣费:这类病毒在用户不知情的情况下,向SP订购付费业务,扣除用户的话费,

(2)窃取隐私:这类恶意软件主要是窃听用户通话,窃取用户位置信息、通讯录等资料,并在后台上传到服务器,从中获取有利信息或者转卖出去,进而获利、)

(3)消耗资费:这类病毒主要在后台自动联网,不断下载广告主推广的应用或其他恶意软件,从而获取非法利益,这样直接导致用户的网络流量和设备电量消耗过大。

通过分析病毒源代码,可以发现病毒主要是利用短信、电话、网络等功能加上一些其他的辅助功能达到非法目的。

1)盗发短信

在后台偷偷向SP发送订购付费业务短信,这是病毒最常用的手段,病毒获得发送短信的权限后,利用SmsManageY类,在用户不知道的情况下,向SP发送订购付费业务短信:

SmsManager.getDefault()sendTextMessage (tel,null,message,null, null);

其中tel为短信发送地址,message为短信订购内容、通常在向SP发送订购业务后,SP会回复一个确认短信给用户,让用户再次确认是否订购该业务。这时,病毒屏蔽SF发来的确认短信,不让用户看到,再次偷偷发送确认短信给SP,然后删除相关短信。这样,就成功订购了业务,扣除了用户的话费,而这一过程,用户毫不知情。

病毒屏蔽短信是利用了Android的四大组件之一BroadcastReceiver, Android收到短信时,会发出一个有序广播,病毒获得接收短信的权限后,声明一个BroadcastReceiveY并把优先级设的很高,病毒优先收到SP发来的短信后,判断是否是特定SP的号码,如果是,首先终止广播的传播,其他程序就不会收到短信了。然后再次偷偷向SP发送确认短信,最后删除SP发来的消息和发件箱中偷偷发出的短信。

2)盗打电话

对于Android手机,通过拨打电话扣费的病毒较少,因为拨号无法做到像偷发短信一样那么好的隐蔽性,不过最近也出现了一些病毒,入侵用户的手机后,自动拨打指定的号码,这种号码通常会收取很高的SP费用。病毒获得拨打电话的权限后,只需要调用一次Intent,即可实现拨打指定电话的功能。

19 / 46

3)网络传输

病毒一般从两个方面利用网络:第一,在后台联网,上传用户的隐私信息;第二,在后台下载其他应用程序或者病毒程序。这两者都将消耗用户大量的网络流量,同时也消耗了很多电量。

无论是上传还是下载,都是使用HTTP,借助于JAVA的输入输出流实现上传代码类似于:

UploadFile(File file,String up_url);

其中file是上传的文件,up_url是上传服务器地址、 下载代码类似于:

DownFile ( String url,String path,int thread_ num);

其中,url为所下载文件的源地址,path是文件下载后的保存路径,thread num是下载的线程数。

2.2.2.4 机器学习、SVM介绍和libsvm的使用

基于数据的机器学习是现代智能技术中的重要方面,研究从观测数据(样本)出发寻找规律,利用这些规律对未来数据或无法观测的数据进行预测。机器学习方法有很多,例如决策树、神经网络、隐马尔可夫模型(HMM)、支持向量机等,现有机器学习方法共同的重要理论基础之一是统计学。在传统统计学的理论上发展出来的支持向量机(SVM)理论表现出其独特的性能。本节包括机器学习、支持向量机(SVM)和libsvm的使用。

(1) 机器学习 1)机器学习模型与定义

机器学习[35]的目的是根据给定的训练样本求得系统输入、输出之间的关系的,使系统能够对其他行为作出最可能正确的预测。其基本模型如图3-10所示。

输入x系统输出y学习机y’

图 3-10 机器学习模型图

其中系统是我们所要进行研究的对象,学习机是我们所要得到的模型。系统在一定的输入x下能够得到一定的输出y值,而学习机输出的为y’。

假设输出y与输入x之间存在一定的未知联系,机器学习的问题就是根据若干个

20 / 46

其中0??i?Ci?1,2,...,n。其对应的分类超平面函数为:

f(x)???i?1niyik(xi,x)?b(3-41)

目前用到的最多的SVM工具是台湾大学林智仁博士的Libsvm错误!未找到引用源。,Libsvm中实现的核函数有:线性核函数、多项式核函数、径向基核函数(RBF核)与Sigmoid核函数。

1)多项式核函数

k(x,y)?(xy)d (3-42)

T2)RBF核函数

k(x,y)?exp(?x?y2s22

)

T(3-43)

3)Sigmod函数

k(x,y)(3)libsvm工具包 1)libsvm工具包的简单介绍

Libsvm是台湾大学林智仁博士开发的一个简单易用的SVM软件工具。该工具完全开源,提供了C++、Java、Matlab、Python等语言的函数接口,以供不同的环境下使用。当然,这样也方便了后人根据自己的需求进行改进程序。

Libsvm工具包包含了分类问题、回归问题和分布估计的解决方法,并提供了线性、多项式、RBF和Sigmod四种常用的核函数。在训练时,SVM的参数选择并没有一个很好的模式进行选择,通常是采用实验搜索的方法进行查找最优的参数。在Libsvm中,参数的选择是在训练样本时进行交叉检验时进行查找最优的。

2)libsvm的使用

该工具包提供了源代码以及在win32平台下的可执行文件,主要包括一下文件:对数据集进行缩放的svm-scale.exe,对训练样本进行训练的svm-train.exe,以及使用训练得到的模型对测试数据集进行预测的预测程序svm-predict.exe。

下面具体介绍下该工具包的使用。 Libsvm的输入数据集如下所示:

26 / 46

?tanh(x??) (3-44)

[label] [index1]:[value1] [index2]:[value2] ... [label] [index1]:[value1] [index2]:[value2] ... ...

其中,顾名思义,支持向量机的输入格式是采用向量的形式,如上所示,label表示该向量的标签,即分类的类别,用整数表示;index表示向量数据的顺序索引,即向量的维数,范围从1开始,直至最大维数;value即向量每一维的数值,从样本中提取出的特征值。

2)数据集的缩放处理

我们使用工具包提供的svm-scale.exe对数据集进行预处理,把向量组中的数值缩放到一定的范围内,通常是缩放到[0,1]或者[-1,1]之间。

这一步在训练样本时并不严格要求一定要缩放,但是我们一般都在训练前缩放下,原因具体有二:一是为了加快计算速度,因为在训练中,样本数据集通常很大,而且未经缩放的数据集的差距范围很大,这将影响训练的处理能力。二是为了提高计算精度,因为我们在接下来利用快速脚本对训练参数进行选择时,参数会在某一个范围内进行选择,而此范围很小,所以我们只有把所有的特征值缩放在一个范围之内时才可以更好的从该范围中寻优。

3)样本数据集的训练

训练使用工具包中提供的svm-train.exe,通常使用经过缩放的样本数据集进行训练。

Libsvm工具包中在训练程序中提供了多种核函数以供选择,其中包括线性核、多项式核、RBF核与Sigmod核四类核函数。可以在使用时通过设置对应的参数来进行调用对应的核函数。在该程序参数中,惩罚系数c和gamma参数比较重要,其默认值分别为1和1/k,在使用时我们通常利用该工具包中附带的easy.py脚本程序调用该训练程序,并通过交叉验证的方法在一定范围内穷举对上述两个参数进行测试寻优,easy.py脚本的使用方法将在下面进行介绍。该程序的其他详细的参数可以查看提示文档。

4)对测试数据集进行预测

对测试数据集的预测使用工具包中提供的svm-predict.exe程序,通过在预测前对待测试数据集也进行缩放的预处理。值得注意的是,训练样本集和测试数据集的缩

27 / 46

放要同时进行,或者使用在对训练样本集scale时利用-s参数得到的range范围文件作为参数对测试数据集进行scale,以保证一致性,不然预测的效果可能不是很好。

顺便提到一点,在默认情况下,预测是不带概率的,要想得到一个样本分类到每一类的概率,那么需要在预测时加上-b参数,而且要求预测的model文件也具有概率的功能,即在训练时也需要使用-b参数使得到的model具有概率的功能。

5)快捷脚本的使用

Libsvm在提供工具包的同时,也提供了多个简单的python脚本,以方便我们快捷的使用该工具包,我们只需要对该脚本文件做简单的配置即可便捷的使用。下面对脚本文件做简单介绍,包括checkdata.py脚本、grid.py脚本和easy.py脚本。

首先我们需要安装python程序包[20]和gnuplot绘图软件[19],python程序包安装之后,在使用时,由于Libsvm中提供的接口文件svmc.pyd可能是针对特定的python版本进行编译的,那么我们在安装python之后,最好针对本机再重新编译出该接口文件,不然会导致调用出错,具体的编译方法参见Libsvm程序包中的帮助文档,本文不再详细介绍。而gnuplot是个绿色软件,放到一个固定路径即可。

脚本checkdata.py是用来检验数据集文件的格式是否符合Libsvm的输入格式,用法很简单,本文也不做详细介绍,下面具体介绍下grid.py和easy.py脚本。

在使用前,我们需要把easy.py和grid.py中的参数路径进行配置,即设定好Libsvm中的各个程序的路径以及gnuplot的路径,然后才能正确使用。在使用时,easy.py把svm的流程都一体化的放在脚本里,运行该脚本时,脚本会依次调用缩放程序、训练程序以及预测程序。在训练时,easy.py调用grid.py来对训练参数c和gamma进行寻优,grid.py封装了寻优的过程,其采用交叉验证(Cross Validation)的方法,对c和gamma在一定范围内进行穷举寻优。

2.3 软件流程 2.3.1 方案一流程

首先使用google的APK工具包Apktool,在Java环境下对软件APK进行反编译。

反编译结束后将得到软件同名文件夹,在文件夹中找到AndroidManifest.xml文件。Matrix.py是编写的用于提取并输出AndroidManifest.xml中权限信息的程序。运行后将

28 / 46

得到对应的permatrix.txt文件,该文件中的每一行为一个APK文件的权限特征,其中第一列为缩写后的文件名,第二列开始为95个特征的顺序0、1序列。其中0代表该APK不含此权限;1代表该APK含有此权限。此处95个特征的顺序由permission.txt文件给出。

对已知的一定数目的样本,进行上述提取权限后,使用Matlab对permatrix.txt进

行读取。设置libsvm的样本集、样本集的标签以及测试集和测试集的标签。设置完成后即可运算得出相应的Model及其准确率。根据准确率调整libsvm的相关参数,以达到一个较高的准确率。

对参数调整完毕后,对未知是否恶意软件的APK文件提取权限信息,即可使用该

Model进行预测。

29 / 46

2.3.2 方案二流程

不使用Apktools反编译APK包,直接利用AXMLPrinter工具从解压后的APK包中

对xml文件进行反编译,减少计算成本。使用相同的Matrix.py提取并输出AndroidManifest.xml中的权限信息。对于生成的permission.txt中的权限列表,根据方案一的测试情况,进行一定的筛选,剔除极少采用的权限或者对Model影响较小的权限。

在使用Matlab进行权限分析时,同样根据方案一的测试情况,对样本集、测试集

的权限特征进行相应的加权处理。选择对Model影响明显的、判断对恶意软件有重要作用的权限,设定一定的权值,并且在测试中通过设定权值参数变量,在一定的值域内进行大量枚举运算,最终选择出最优的加权参数,达到一个优化的加权特征模型。

30 / 46

本文来源:https://www.bwwdw.com/article/lb7d.html

Top