【基于机器学习的安卓混合应用代码注入攻击检测探究7400字(论文)】_第1页
【基于机器学习的安卓混合应用代码注入攻击检测探究7400字(论文)】_第2页
【基于机器学习的安卓混合应用代码注入攻击检测探究7400字(论文)】_第3页
【基于机器学习的安卓混合应用代码注入攻击检测探究7400字(论文)】_第4页
【基于机器学习的安卓混合应用代码注入攻击检测探究7400字(论文)】_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于机器学习的安卓混合应用代码注入攻击检测研究目录TOC\o"1-2"\h\u17498基于机器学习的安卓混合应用代码注入攻击检测研究 122430关键词:机器学习;混合应用开发;代码注入攻击 1296591引言 183102安卓混合应用系统架构 2195522.1系统架构 2210882.2安全威胁模型 316203实验过程 6120483.1数据预处理 6255403.2特征提取 77334实验结果 9205214.1权限信息 94944.2分类结果 1049484.3对比分析 11204685总结 1222732参考文献 12摘要:代码注入攻击漏洞检测是近几年来移动安全领域中比较受重视的研究点。为了解决开发人员需要基于系统开发不同程序语言版本的应用程序这一难题,一种基于HTML5、CSS和JavaScript等标准Web技术的混合应用引起了开发者的关注。与原生的安卓应用相比,它具有良好的开发便捷性和跨平台移植性,但也带来其它的安全问题。WebView提供了addJavascriptInterface接口,这样就在JS代码和本地Java代码之间提供了一个桥梁。当这个应用程序具有访问权限,WebView中的JS就能够通过调用外部Java代码来访问相关资源,从而造成代码注入攻击。针对这些问题,提出了一种基于机器学习的Android混合应用代码注入攻击检测方法。通过反编译提取混合应用中的AndroidManifest、HTML和JavaScript文件,然后进行代码分片,提取出与混合应用开发框架常用插件相关联的敏感权限信息、插件函数特征和能够触发数据中恶意代码函数,生成特征向量,最后使用多种机器学习算法进行训练和分类预测。通过实验分析,验证了检测大量混合应用的高效性,并且最终达到的检测准确率为98.1%。关键词:机器学习;混合应用开发;代码注入攻击1引言截止到2021年,AndroidOS的市场份额占比68.6%,远高于占比12.8%的IOS。为了满足手机用户的日常生活、新闻资讯和游戏娱乐的需要,开发人员也在开发很多不同种类的应用,以GooglePlay为首的应用市场为人们提供了各种种类的应用,例如社交、购物、游戏、拍照和新闻等。但是智能手机带来的安全问题也越加严重,用户的隐私数据(地理位置、通信录、账号密码)也会暴露在手机中,成为了恶意用户的攻击目标。混合应用采用了HTML5、CSS和JavaScript等Web技术,使得业务和界面开发更加便捷,并且能够跨平台运行。但是所有操作系统本身是不支持JS和HTML的,为了能够展示HTML5用户界面和执行JavaScript代码,这个应用程序就需要嵌入Web浏览器组件。Android混合应用集成了PhoneGap、AppMobi、Mosync等混合应用框架。这样,这些应用程序能够调用本地Java代码并且能够访问系统资源(如照相机、SMS、通信录和文件系统等)。这种使用嵌入式的网页浏览器的技术打破了安卓操作系统针对Web浏览器的沙箱保护机制,在访问外来资源的同时可能会引起一定的安全问题,并且数据中被嵌入恶意代码时能够被JS引擎执行,容易受到代码注入攻击,导致用户隐私数据泄露等一系列安全隐患。针对已经存在的这些问题,本文首先剖析了基于HTML5的Andoid混合应用的总体架构,解析了混合应用中WebView组件的原理和常见的函数接口,并且分析了Android混合应用中主要的第三方插件框架,然后针对混合应用中与外界进行数据通信并将Web内容渲染在Web网页时可能存在的代码注入攻击造成的隐私数据泄露、账号密码盗取等安全问题;根据这些安全问题产生的原因分析混合应用的HTML、CSS和JavaScript代码,找到PhongGap等框架中与外部进行数据传输的函数和执行代码注入攻击时在渲染Web网页时调用的不安全API;最后使用多种机器学习方法对提取出来的这些特征进行训练和预测,保证混合应用中代码注入攻击漏洞的识别准确率。2安卓混合应用系统架构2.1系统架构Android混合应用从开发的层面实现了“一次开发,多次运行”,它的底层实现是JavaScript和本地代码相互调用,并且兼具原生应用良好的用户体验和使用标准Web技术跨平台开发低成本的优势,实现真正的跨平台开发。实现方面也有两个主要的部分:第一部分由HTML、CSS和JavaScript等标准Web技术组成的WebView组件,WebView在应用中的主要作用是使用WebKit引擎将数据和内容呈现在Web页面上,并且能够使用JavsScript引擎处理JS代码;第二部分是由本地代码实现的中间架构,这些API能够获取到设备的资源并且与应用进行交互。混合应用框架的产生满足了开发人员的开发需求,它能够让应用程序开发者使用HTML和JavaScript等标准Web技术完成软件的用户界面和业务逻辑功能,同时能够像本地APP一样,便携地调用设备资源和系统进行交互。目前已经存在很多成熟的框架,如PhongGap、ReactNative、MoSync、AppCan和RhoMobile等。下面主要介绍混合应用开发框架,它在所有的混合应用开发框架中使用范围也是最广的。混合应用集成了Web技术(HTML、CSS、JavaScript),能够自己通过插件API调用Android系统本地已经实现的设备资源功能。Android混合应用的软件架构如图1所示。图1Android混合应用软件架构2.2安全威胁模型在混合应用中,数据可以通过二维码、WiFi、文件、通信录等方式传输到应用中,这样发生代码注入攻击的方式就变得多种多样。与此同时,在Web应用遭到XSS攻击时,由于Web浏览器的沙箱保护机制,JavaScript代码不能够访问服务器本地资源,但是混合应用中,注入的代码可以通过框架提供的接口访问设备资源,在受到XSS攻击时将会受到更大程度的的危害。代码注入攻击如图2所示。图2Android混合应用代码注入移动应用中用于从外部获取数据的任何通道都可以被注入代码,下面是混合应用与外界进行交互的通道:(1)移动设备特有的数据通道:移动终端可以像PC设备从网络、WiFi和蓝牙获取数据,还可以从其他通道获取数据。例如我们可以使用照相机扫描二维码、接收SMS短信、使用NFC功能读取RFID。这些都是移动设备常用的功能,这样我们可以更方便地在生活、娱乐中与外界进行交互,所以那些恶意代码可以被嵌入到二维码、RFIDtags和SMS信息中。(2)元数据信息通道:我们通常可以使用移动设备浏览图片、听音频和看视频信息。我们可以通过下载、共享和自己拍摄获取这些媒体文件,这些媒体数据本身似乎并没有代码注入的通道,但是这些媒体文件还有元数据信息。就像MP3、MP4或者JEPG等文件,他们都具有标准格式的元数据,包括了文件的标题、作者、时间等信息。攻击者可以将恶意代码注入到这些元数据信息中,当这些数据被读取并且在浏览器中被执行时,就会发生代码注入攻击。(3)ID数据通道:当我们要进行WiFi连接或者与其他设备进行蓝牙绑定时,我们需要使用设备扫描附近的WiFI或者蓝牙设备信息是所以我们可以通过ID找到我们想要进行连接的设备。但是这些ID是由外界不受信任的实体发布的,如果攻击这在WiFi连接点的SSID嵌入恶意代码或者在另外的蓝牙设备中注入恶意代码在我们尝试进行WiFi扫描或者蓝牙绑定时也有可能会受到攻击。(4)设备内部通道:ContentProvider是Android应用中用于保存数据信息从而在各个应用中进行数据共享的组件。Andoid操作系统中已经具有下面的多种ContentProvider:通信录、日历、调用日志、浏览器、和用户配置数据等。还有文件系统,许多的应用程序可以直接访问设备的文件,包括SD卡里面的公共数据存储,其他的应用可以访问这些数据。还有Android混合应用可以通过Intent与其他应用进行交互,通过Intent,用户可以将一些数据共享给其他APP。所以当进行内部数据传输时,这些数据嵌入恶意代码时,在混合应用的WebView加载页面时就可能产生攻击。为了让注入的代码能够得到执行,这些数据就需要在Web页面中进行展示。在传统的跨站脚本攻击中,服务器没有识别出数据中包含的代码片段,当这些数据放入Web页面中进行展示时,JavaScript引擎就能够至别处这些代码并且进行执行。在混合应用中,通过外部或者内部通道传输到应用中的数据还没有加载到HTML页面中,所以此时攻击还没有产生。但是当应用程序要将这些数据放入HTML页面中进行展示时,就可能会触发代码的执行。JQuery是一个特别实用、便携的JS框架,它封装了JavaScript中常见的功能代码,让使用者能够方便地调用方法实现自己的事件处理、页面动画等功能。在进行页面处理时,通常使用文档对象模型(DocumentObjectModel),每个网页都可以使用DOM表示,可以通过构建的DOM树查找HTML中各个节点属性。当我们使用document.write()、html()、append()、innerHTML等方法或属性,就会触发数据中混合的脚本代码,因此我们需要找到能够触发执行恶意代码的这些不安全的方法或者属性。当混合应用中同时具有数据传输通道和使用不安全的JQuery、DOM的API时,就有可能会产生漏洞攻击。下面代码样例是当设备进行二维码扫描时,扫描成功时就会将数据信息在Web页面中进行展示,当数据中混有恶意代码时,就会对用户的设备产生攻击,从而造成危害。当应用启动时,在开发框架载入完成之后,DOM监听到deviceready事件后,就会调用onDeviceReady方法,然后使用barcodeScanner.scan()方法,当应用扫描二维码成功时获取到result数据,在WebView进行Web内容展示时使用html()方法,我们就可以找到产生代码注入漏洞的source-sink点,可能产生代码注入攻击。程序调用关系图如图3所示。图3函数调用关系3实验过程3.1数据预处理由于混合应用主要是由HTML、JavaScript等代码实现,所以首先使用apktool工具对混合应用进行反编译,得到应用的smali代码和资源文件,smali源码就是Android虚拟机中进行指令执行的代码,可以转换成dex文件。资源文件就是应用中的arsc格式解析得到的文件,里面包括了应用的图片、AndroidManifest、HTML、CSS和JavaScript文件。文件结构如图4所示。图4安卓混合应用文件结构应用程序中的的AndroidManifest文件是Android应用的入口文件,它声明了包文件中的Activity、ContentProviders、Services和Intent等组件,并且声明了应用程序申请的权限信息,首先从Manifest文件中提取具有<uses-permissions/>标签的权限数据,然后在源代码文件中分离出程序的HTML和JavaScript文件。因为混合应用是由自己的HTML页面和JavaScript代码实现自己的界面和业务逻辑,但是同时里面包含了属于PhoneGap框架的许多JavaScript库、JQuery库以及本地代码。可能存在的情况是混合应用虽然引用了这些库,但是没有使用其中的一些敏感API,所以要从代码文件中分离出来。JQuery库函数都会包含“jquery”,然后PhoneGap插件库也都会有对应的字符串,然后使用匹配将这些文件分离。最后为了设计了一个算法将代码进行分片,如图5所示。图5代码分片代码分片的目的是将具有函数调用的代码片整合到一块,首先输入的是一个HTML文件和其引用的相关JS文件,将这个HTML文件中的所有函数放到一个集合E里面,找到具有调用的函数名保存在集合C中,然后分别遍历C中的每一个函数,找到方法实现的主体赋值给fb,同时将这个方法写入到结果R中。然后找到每个函数调用的JS里面的函数,将这个方法主体放入到临时字符串中,然后继续找方法主体或参数里面有没有调用其它函数,将这些函数依次压入栈中,最后将有调用关系的所有函数进行整合输出。3.2特征提取根据前面的分析,当我们使用PhoneGap插件实现二维码扫描、蓝牙、短信等功能时,应用程序要在AndroidManifest文件声明这些对应的权限。与此同时,当我们在AndroidManifest文件中申请这些权限并且得到系统和用户的授权后,混合应用的WebView组件的所有HTML页面和JavaScript代码就具有这些权限,然后能够直接调用相关的设备资源,这种情况下攻击者就能够利用这个机制达到自己的恶意攻击行为。本文主要研究了二维码、NFC、网络连接、蓝牙、SMS、通信录、文件系统和媒体文件相关的功能插件。在这些插件中,使用了照相机(CAMERA、FLASHLIGHT)、网络(ACCESS_NETWORK、INTERNET、CHANGE_WIFI_STATE)、蓝牙(BLUETOOTH)、发送短信(SEND_SMS)、读写通信录(READ_CONTACT、WRITE_CONTACT、GET_ACCOUNTS)、写内存(WRITE_EXTERNAL_STORAGE)、录制音视频(RECORD_AUDIO、RECORD_VIDEO、MODIFY_AUDIO_SETTING)获取用户地理位置(ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION)等权限。我们根据从数据预处理模块得到的AndroidManifest文件中提取的权限信息,进行特征匹配,并且当应用申请了这些敏感权限时就将对应的值置为1,否则置为0。同时统计混合应用中申请的敏感权限的个数,并作为特征之一。通过对正常应用和有漏洞的应用申请权限的总数进行分析,发现正常应用所申请的权限一般都是申请它所要使用的,而有漏洞的应用往往会申请更多的敏感权限来获取系统资源的访问,并且对数据进行分析,发现两者之间的界限值约为8。所以本文使用的权限个数阈值为8,当使用的敏感权限个数大于等于8时我们就将这个特征值设置为1,否则置为0。根据前面对Android混合应用存在的安全威胁模型分析,代码注入攻击注入漏洞的原因之一就是WebView组件中的JavaScript代码能够通过调用本地Java访问设备资源,从而从内部通道(通信录、文件、日历)或者外部通道(蓝牙、SMS、WiFi、媒体文件)获取到嵌入恶意代码的数据。PhoneGap开发框架提供了这些功能插件,从而使得WebView能够通过这些函数调用执行Android系统实现的资源访问功能。本文通过PhoneGap框架开发文档,并且研究了这些官方插件,详细分析了NFC、Bluetooth、File、BarcodeScanner、Contacts、Wifi和Media等插件和具体实现的方法。在数据预处理模块中,我们已经得到混合应用的HTML和JavaScript函数分片代码,然后根据这些方法特征,在代码中找到该混合应用是否使用了这些方法。在蓝牙插件中,应用可以使用Bluetooth.getUuids获取到将要绑定的蓝牙名称,当这个蓝牙ID中嵌入了一些脚本代码,就可能会被JavaScript引擎识别执行;在NFC插件中,应用可以使用nfc.addNdeListener注册一个时间监听NDEFtag,当读取到时就会触发onSuccess;在BarcodeScanner插件中,可以使用barcodeScanner.scan()扫描二维码,在扫描成功时就可以解码二维码的数据并且进行读取;在Media插件中,应用可以使用MediaFile。getFormatData()读取媒体文件的元数据信息,根据前面的分析,这些媒体文件如果嵌入恶意脚本代码,就可能会在WebView显示HTML页面时触发这些恶意代码;在File插件中,应用可以使用FileEntry。file读取文件数据;在Contact插件中,应用可以使用Contacts.find()获取通信录的数据信息。所以在进行特征提取时,如果混合应用使用了这些方法,就将对应特征值置为1,否则置为0。前面已经提取了数据注入通道特征,就相当于找到了混合应用中进行代码注入攻击的source点,这些数据传输到WebView组件中还不会产生什么作用,但是当WebView进行Web内容展示时,使用不安全的API就可能触发这些恶意代码,将这些代码提交到JavaScript引擎中执行。4实验结果4.1权限信息本实验通过分析前面权限使用和插件之间的关联,综合静态分析得到了权限使用申请的统计结果,一共统计了600个正常混合应用和300个具有代码注入攻击漏洞的混合应用。下图6显示的是两类混合应用中使用敏感权限个数的对比图。根据图6的比较结果可知,具有代码注入攻击漏洞的混合应用申请敏感权限的个数明显高于正常应用的申请权限个数,说明了漏洞应用更加倾向于获取设备的所有资源。根据这个对比,在前面构建特征向量那块,使用权限个数就可以设定阈值为8,当使用敏感权限个数小于这个阈值,特征值置为0,否则置为1。下面是针对具有漏洞混合应用申请具体的权限的统计分析。图6使用敏感权限个数混合应用都使用了正常的网络访问权限INTERNET和ACCESS_NETWORK_STATE,其他权限的使用都可能存在由于代码注入攻击造成的隐私数据泄露、地理位置暴露、数据丢失等危害。如ACCESS_FINE_LOCATION和ACCESS_COARSE_LOCATION就会暴露出用户的地理位置,在攻击者嵌入恶意代码后就可能获取到用户的行动轨迹。而CAMERA和READ_CONTACTS权限的使用可能造成用户在扫描二维码时被攻击者获取到通信录数据。并且READ_PHONE_STATE和GET_ACCOUNTS的使用就可能泄露用户的设备IMEI唯一识别码和账户数据。所有敏感权限的混合应用个数如图7所示。图7混合应用申请权限统计4.2分类结果本文根据静态分析提取40维向量,使用了Weka提供的多种机器学习算法训练特征向量,构建分类预测模型。实验一共收集了600个正常的混合应用和300个具有代码注入攻击漏洞的混合应用,采用的是交叉验证法,划分的数据比例为10:1,并且采用十次求平均值保证取样的随机性。表1分类预测结果algorithmTPRFPRPrecisionAccSVM0.9730.0380.9730.972NaïveBayes0.9690.0410.9690.968SMO0.9760.0290.9760.976J480.9730.0350.9730.972RandomForest0.9880.0230.9810.981RandomTree0.9760.0280.9760.976表1使用贝叶斯算法、支持向量机、SMO、决策树、随机树和随机森林机器学习算法对提取的特征向量进行模型构建,再进行预测。最后得到的结果中随机森林算法的准确率最高,达到98.1%。决策树的分类准确率为97.2%,因为随机森林是由多棵决策树,所以采用的投票机制有效地改善了决策树的不足。贝叶斯算法的分类准确率最低,为96.8%。表示本实验中选取的特征还是具有一定的有效性,分类器能够从样本中有效的识别出positive的混合应用。但是实验分类中的假正例和假反例表示特征选取的还不够完善,也就是说还是有些正常的混合应用被分类成具有漏洞的,具有漏洞的混合应用被识别成正常的应用。4.3对比分析对比前面的分析方法,方法一是Jin等人提出的静态检测方法能够达到的精确率为97.7%,但是因为它使用的传统程序流程图分析技术,所以每个Android混合应用检测的平均时间为15.38秒,但是本文的方法在前面数据预处理和特征提取时间不超过两秒,训练和预测的时间约为0.54秒,所以检测一个应用是否存在代码注入攻击漏洞的时间平均为2.54秒,检测效率大大增强;方法二是Chen等人提出检测方法是在Jin的基础上做出的改进,增加了对程序控制流的分析和API调用图分析,精确率达到了99.21%,但是正因为增加了分析的难度,所以每个混合应用的平均检测时间约为38.4秒,对大规模的混合应用检测来说具有很大的限制;方法三是Xiao等人提出的使用机器学习检测方法中,在特征的提取过程中没有对元数据进行处理,而且提取的特征也不够完全,但是每个混合应用的平均检测时间不超过两秒,最后检测得到的精确率为95.3%;方法四是本文的实验结果,准确率达到98.1%,单个混合应用平均检测时间为2.54。对比结果如图8所示。图8各方法检测结果对比通过前面的对比分析,可以知道本文采用的检测方法兼顾了检测效果和检测效率,不仅在准确率上有所提高,在时间性能上也有很大的提升。目前所有的检测方法基本都是采用的静态代码分析技术,但是考虑到WebView中可能存在动态加载的情况,这种情况下就不能够检测到JS代码的攻击行为。正常应用可能也使用了比较多的敏感权限和插件函数,但是它的数据流或者函数调用中并不存在恶意攻击行为,所以被分类成具有漏洞的应用,造成误报的情况。所以综合前面的考虑,想要进一步一高分类的效果,可以适当多提取出代码的信息流等特征。5总结随着互联网技术的发展和移动终端的便携性,智能手机越来越受人们的欢迎。截止到2021年,AndroidOS的市场份额占比68.6%,远高于占比12.8%的IOS。但是也正因为它的开放性,Android平台的安全问题也愈加严峻。由于可移植性和便携性的优势,基于HTML5的移动应用程序越来越受欢迎。但是为了满足应用的需求,WebView提供了addJavascriptInterface()接口,这样就在JS代码和本地Java代码之间提供了一个桥梁。当这个应用程序具有访问权限,WebView中的JS就能够通过调用外部Java代码来访问相关资源。但是这种Web技术有一个很大的缺点,将数据和代码混合在一起,当字符串数据中含有JS代码时,这些代码能够被识别并且在JavaScri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论