西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网

Android安全之旅系列博客导读

时间:2016-01-17 18:43来源:未知 作者:好模板 点击:
这段时间我一直在研究Android安全,我打算接下来的三个礼拜把近期研究的成果分享出来。现在简单的梳理一下,方便后续写博客。 以下每个标题都会独立写成博客。所有博客都会给出

这段时间我一直在研究Android安全,我打算接下来的三个礼拜把近期研究的成果分享出来。现在简单的梳理一下,方便后续写博客。

以下每个标题都会独立写成博客。所有博客都会给出源代码。

Android逆向分析

0x00

研究了Android加固的原理,网上大多只给多了源码,参考 Android中的Apk的加固(加壳)原理解析和实现 ,但没有说明为什么,我从系统的源码的角度来分析目前常用加壳脱壳的原理,使用Android2.3源码。

0x01

我们在分析阿里壳子的时候,发现脱壳根本不涉及java层的代码,可见核心脱壳的程序写在了native层。这篇博客中我会把所有的脱壳程序通过JNI移到native层,并在Android2.3的模拟机上运行成功,并会公开源代码。

0x02

讲解DexClassLoader、PathClassLoader原理,adb install和开机自动时加载dex,都是通过PathClassLoader。而动态加壳脱壳则使用的是DexClassLoader。

讲解上面的整个流程,包括优化dex。简单的脱壳都是在 dvmDexFileOpenPartial下断点,结合下面一篇文章你就能明白为什么要在这个函数下断点。

0x03

讲解dex文件优化,dex文件解析为DexFile,运行时加载数据为ClassObject到最后运行的流程。基于Android2.3源码进行讲解。

0x04

讲解Davlik虚拟机运行时篡改字节码,参考 apk自我保护的一种实现方式——运行时自篡改dalvik指令 。

0x05

阿里的壳子会用一种技巧导致反编译dex,看到的方法都被替换为throw exception(),这是怎么做到的,运行时又是怎么样动态修复的呢?在这篇文章中,我会抛砖引玉,把其中一个方法修改为throw exception(),并且在运行时动态修复。当然所有的代码都会放在github上。

0x06

讲解一个开源的脱壳机,DexHunter,参考 从Android运行时出发,打造我们的脱壳神器 。进一步理解Dalvik虚拟机执行流程。其实就是一张图:

0x07

使用ida静态和动态调试so,网上有很多这样的文章,为了在init_array下断点,每个人都不一样,其中最有效率的一个是 安卓动态调试七种武器之孔雀翎-ida-pro ,除了分析动态调试so,还要分析so调用函数的堆栈,方便看懂so的arm汇编语言。

0x08

讲解常用的native反调试的方法,并且讲解如何通过修改so来过掉这些反调试。

0x09

使用ida动态调试dex的smali源码,有两种方式,一种是 反编译apk + eclipse中调试smali ,一种是直接使用ida调用dex。

0x0a

讲解常用的防反编译的方式,比如通过验证签名,验证是否运行在虚拟机中等方式。这部分代码可能在java层,也可能在native层。

0x0b

讲解通过smali注入log或者注入方法的调用栈,来动态分析程序的运行。

0x0c

讲解so加壳,一是对section加壳,一个是对函数加壳。参考 Android逆向之旅---基于对so中的section加密技术实现so加固 , Android逆向之旅---基于对so中的函数加密技术实现so加固 。

0x0d

讲解so注入和c/c++利用GOT表进行hook。参考 Android中的so注入(inject)和挂钩(hook) - For both x86 and arm 。

0x0e

讲解dex注入,参考 dex注入实现详解 。

0x0f

讲解java拦截技术,最简单的拦截就是替换,在加壳脱壳程序中我们已经看到了。还有一种方式是通过Dalvik虚拟机的方式,如果我们能把一个Java函数修改为Native函数,并且将nativeFunc指针设置为自定义的函数,那么就可以实现拦截了,参考 注入安卓进程,并hook java世界的方法 。

0x10

讲解从system.loadlibrary到执行init_array的流程。

Android APP漏洞挖掘

组件公开安全漏洞

Content Provider文件目录遍历漏洞

AndroidManifest.xml配置安全检测

Intent劫持风险安全检测

数据存储安全检测

WebView高危接口安全检测: webview高危接口漏洞,有漏洞利用代码和详细的讲解。

拒绝服务攻击安全检测

WebView明文存储密码漏洞

随机数生成函数使用错误

WebView不检验证书漏洞

中间人攻击漏洞: 有漏洞代码和详细的讲解。

从sdcard加载dex漏洞

Activity被劫持风险

file跨域访问:webview跨域访问访问文件,有漏洞利用代码和详细的讲解。

端口开发:主要分析Baidu地图和高德地图,并有漏洞利用代码,展示实际的效果。并且通过 反编译smali分析了为什么漏洞利用代码要这么写 。

明文存储,明文传输

 

Android系统漏洞

0x00

讲解了Linux下ROP,参考 一步一步学ROP之linux_x86篇 。

0x01

讲解了android下ROP,DEP,ASLR,Information Leak,参考 一步一步学rop之android-arm-32位篇 。

0x02

讲解了cve-2014-7911,讲解了Dalvik-Heap Spray,C++反编译后代码的利用,参考 Cve-2014-7911安卓提权漏洞分析 , 再论CVE-2014-7911安卓序列化漏洞 。

0x03

    讲解部分 Android Libcutils库中整数溢出导致的堆破坏漏洞的发现与利用 ,漏洞利用代码比较复杂,只讲解其中一部分。

 
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容