本文内容:

  • 因Android反序列化漏洞导致的Android本地提权
  • Android平台上的ROP:绕过DEP
  • 绕过Android平台的ASLR
  • Android Binder
  • Java序列化与反序列化
  • Heap Spary

CVE-2014-7911

摘自NVD

luni/src/main/java/java/io/ObjectInputStream.java in the java.io.ObjectInputStream implementation in Android before 5.0.0 does not verify that deserialization will result in an object that met the requirements for serialization, which allows attackers to execute arbitrary code via a crafted finalize method for a serialized object in an ArrayMap Parcel within an intent sent to system_service, as demonstrated by the finalize method of android.os.BinderProxy, aka Bug 15874291.

Source: MITRE
Description Last Modified: 12/15/2014

POC: https://github.com/CytQ/CVE-2014-7911_poc

Continue reading

Java函数签名

表现形式:

(参数类型参数类型参数类型参数类型)函数类型

例如:

1
public int encrypt(int res, String test, long key)

函数方法体为:

(ILjava/lang/String;J)I

  • I 代表int
  • Ljava/lang/String; 代表String。因为它不属于基本数据类型,是一个类,所以需要指定完整的路径
  • J代表long

参数与参数之间无间隔,用括号包裹,紧接着跟函数的数据类型。

Continue reading

So注入

so注入的主要思路是:

  1. 找到目标进程
  2. 使用ptrace跟踪目标进程,保存目标进程的状态
  3. 获得mmap、dlopen、dlsym等库函数在目标进程中的偏移地址
  4. 调用mmap在目标进程内部申请一段内存空间
  5. 将我们的ShellCode写入到刚才申请的内存空间中
  6. dlopen打开Shellcode,dlsym调用Shellcode库的函数
  7. 恢复原so状态,detach
Continue reading

Xposed

Xposed的表现形式:

可以拦截任意应用的任意方法实现,将它替换为自设的功能代码。

主要逻辑:

  • 通过包名匹配查看是否有需要hook的模块。如果有,修改它的java方法为本地方法(通过修改accessFlag实现)
  • 当目标方法被调用时,由xposed方法的本地方法调度逻辑分发,回调java层的方法,一般就是各个hook模块,从而实现使用自行实现的方法替换原方法。
Continue reading

本文仅为个人观点,不完全符合模块化的标准定义及其拓展。思路类似,仅此而已。不可当做模块化的标准理解

如果各位对于本博客中提到的任何思路或者架构有任何看法,欢迎讨论。以下仅是这3天的个人考虑,基于个人能力及视野的限制,很有可能不完善,欢迎批评指正,共同进步

转载请注明出处:http://blog.csdn.net/jonstank2013?viewmode=contents

Continue reading
Author's picture

CytQ

Security Engineer
Android、移动安全、逆向、漏洞挖掘、渗透


17本,任职百度、滴滴


Beijing