论文部分内容阅读
近年来,随着移动智能终端地迅速发展以及3G网络地普及,手机在人们日常生活中的作用越发重要。其中,Android操作系统在以其开源性和高性价比占据了手机操作系统市场上的最大份额的同时也成为了手机恶意代码攻击的主要目标。而手机又不同于其他设备,其数据的私密性更高,所以针对手机的攻击给用户带来的影响更大。因此研究基于Android操作系统的恶意代码并分析其实现原理对于提出防御手机恶意代码攻击有着重要作用。本文通过研究Android操作系统现有的安全机制,得到了目前Android操作系统的安全漏洞,并从Android系统内核、Android权限提升、Java反射机制和Android逆向工程等四个理论方面分别介绍了四种实现Android恶意代码的方案。并结合各方案的优势设计并实现了一个基于逆向工程的Android恶意代码注入器。通过注入的应用程序一旦被安装就会主动使用网络尝试与服务器连接并执行服务端下达的伪造短信、发送恶意邮件等恶意指令。为了验证以上方案的正确性和可行性,本文设计了相关的实现和测试。测试选用Google Play上最热门的多款不同类别的应用程序。通过测试发现以上方案的危害在于:通过自动化注入可以在短时间内大量生产恶意应用程序,扩大了恶意应用程序传播范围,提高了恶意程序的可移植性,将是以后恶意代码发展的主要方向。同时,通过对以上恶意代码注入原理的研究,本文设计了以下两类预防方案:第一、基于签名对比的被动防御方案。任何方式的注入都会改变应用程序的签名,这是基于逆向工程的Android恶意程序的最大缺陷。本文首先在Java层实现了一个基于在线签名对比的检测程序。然后从其隐蔽性出发提出了代码混淆,动态加载以及JNI调用三种防止签名判断程序被恶意修改的方法。第二、基于权限动态分配的主动防御方案。Android系统之所以会出现大量的恶意代码攻击,究其原因是Android权限的静态分配方式。本文基于对Android权限进行动态再分配的思想提出了三种防御方案:第一、API修改。通过对API的修改和标记,可以对应用程序的恶意操作进行记录和判断。第二、API代理组件。在手机上安装一个代理组件来统一管理各类敏感API,所有程序对API的请求都经过该组件来记录和判断。第三、API拦截。这是对上一方案地改进,通过对Android的敏感API服务进程地注入判断和记录代码,在应用程序调用敏感API时记录操作并通知用户。然而,想要免受越发复杂的恶意代码攻击,仅依靠防御手段是不够的,提高用户自身的安全意识也十分重要。只有将这两点结合起来才能不给恶意代码有机可乘。