Android手机软件进程代码注入攻击与防御研究
2018-09-18周凡
周凡
摘 要 在Android手机广泛普及的今天,其被恶意程序攻击、病毒感染、信息复制等事件频频发生。Android应用安全问题自然也引起人们的更多关注。结合Android体系架构的特点,本文主要是通过ptrace注入的方式对Android手机软件进程代码注入攻击与防御进行研究,从而提高Android应用的安全性。
关键词 Android系统 ptrace注入
现在Android手机应用已有案例遭到代码注入攻击:由于应用是通常运行在Dalvik虚拟机上的,其底层依然是C和C++环境。攻击者进程通常伪装成gdb调试器对指定进程进行调试,然后远程调用dlopen使指定进程加载预先写好的恶意SO代码,从而窃取相关关键信息。
1 ptrace原理
程序員的任务就是写程序,写完程序就是调程序,估计没人敢说自己写程序不用调试的,尤其是程序规模庞大了之后更是如此,第一个实现调试器的是一个伟大的人,个人见解:ptrace就是为gdb而生的,ptrace应该算是gdb的核心了。
2 Android下的ptrace注入
ptrace让调试变得方便,也让程序变得不安全。
对于每一个Android应用,都对应一个Dalvik虚拟机,其上层是JAVA实现,下层又有支持C、C++的JNI环境 ,按照上述ptrace原理,可以在JNI环境下使用ptrace通过注入的方式使一个Android应用执行我们自己写的JAR包。由于是执行在指定Android应用的进程空间中,我们的JAR包可以很方便的修改、获取该应用中的数据。
2.1时序图原理
时序图的基本流程如下:
(1)通过Shell指令执行Inject,Aseck在执行时必须拥有root权限。
(2)可执行文件Inject的流程非常通用,arm平台上无需更改。
(3)加载的libJavaLoader.so文件流程也是通用的,无需更改。
(4)加载的Jar包中必须保证有一个无参构造函数和一个execInject函数,至于execInject函数的逻辑可以按需随意更改。……