Android安全研究经验谈

1、安全研究作什么git

攻击角度:对某个模块进行漏洞挖掘的方法,对某个漏洞进行利用的技术,经过逆向工程破解程序、解密数据,对系统或应用进行感染、劫持等破坏安全性的攻击技术等。shell

防护角度:查杀恶意应用的方法,检测和防范漏洞利用,为加强系统和第三方应用的安全性提供解决方案等。安全

一般,攻与防是相对模糊的,一种安全技术每每两端都适用,也许更值得留意的是一种技术背后的思路和意识。架构

 

2、须要具有的知识框架

安全涉及的知识范畴是无限的,但大多数时候能够遇到问题再去了解相关知识。工具

 

3、要掌握的理论知识学习

操做系统原理,很是重要,是认识某一个具体系统的前提。加密

微软开源的Windows Research Kernel(WRK)一样也很是棒的学习资料。操作系统

动手编译系统内核,用调试器一步步分析调试内核比单纯阅读源码和分析文章更有帮助。设计

尝试编写内核驱动模块或分析已有的内核Rootkit来深刻理解操做系统。

就移动平台而言,理解操做系统有助于进一步理解Android系统自己,而在理解Android系统以后,才能开始讨论Android系统的安全问题。

 

4、几门须要掌握的语言

不须要特别强的软件开发能力,须要关注某种语言的内部实现过程。

掌握C/C++,能理解该语言被编译器处理后汇编层面的实现原理。

了解Java,须要理解Dalvik/ART虚拟机内部的实现过程。

对x86/ARM汇编,能读懂便可,遇到不会的指令能够从指令集中查找。

掌握一门脚本语言,用来快速编写小工具或POC,推荐Python,由于开源社区中大部分Android安全分析类工具都是用Python编写的,例如,知名的Androguard和Drozer。

 

5、逆向工程

逆向工程绝对是一项必备技能。分析恶意软件行为仍是分析闭源软件,都要逆向工程。

 

6、理解Android系统

Android源码很是庞大,只看组件也要好几年,况且还有Linux内核、基带、bootloader、TrustZone等底层模块。

咱们只需了解支撑Android系统运转的核心服务,以及Android系统的安全机制设计便可,其他内容用到时再去分析。

1.组件

(1)Zygote:Android应用的孵化器,一切Android程序由此进程fork而来。

(2)Binder:Android的进程间的通讯机制,它是Android平台最核心的功能组件。

(3)Package Manager Service:应用安装包管理服务,不只负责包的安装和卸载,更重要的是负责Android应用信息的查询和控制,例如Android权限管理。

(4)Activity Manager Service:管理Android框架层的进程,也包含了Android应用四大组件的逻辑实现。

(5)Dalvik虚拟机:虽然即将被ART取代,但Dalvik依然是帮助咱们理解虚拟机和Android可执行程序文件格式的好教材。

2.安全机制

(1)沙箱隔离:沙箱是基于不一样应用之间User ID的不一样而实现的,其本质是Linux对于不一样用户间访问权限的隔离。

(2)应用权限控制:Android系统应用须要申请相应的权限才能访问系统的资源和信息,大多数权限由Android框架层的API进行控制,另外一部分权限映射到应用所在的Group ID上,由Linux内核作出控制。

(3)SELinux:Linux内核层的安全加强,是一套独立于传统Linux权限访问控制的强制性权限控制机制。Google已经将这套机制移植到Android内核,给内核漏洞利用带来了一些挑战。

 

7、Android安全研究的热点方向与现状

1.手机Root与内核漏洞挖掘利用

Android2.x时代,每每利用一些用户层程序的漏洞便可将手机root,如今则主要依赖内核漏洞。

Android为Linux内核引入了新的内核模块,以及不一样厂商的驱动方案。这就为系统内核引入了新的安全隐患,不管是高通、MTK仍是三星猎户座,或者华为海思的芯片,多少都出现过一些内核漏洞,这是Android平台内核的一个主要攻击点。随着Google将SELinux引入Android,攻击面有所减少,但不能彻底解决内核漏洞利用问题。

防护角度讲,一样面临挑战:一些APT攻击若是利用内核漏洞,将能拿到系统的彻底控制权。Android平台内核漏洞长期以来一直都在持续曝光,漏洞利用与防范依然是持续的热点。

从这个方向入手,首先须要了解Linux内核,而后不断对目前已经公开的CVE漏洞进行分析,理解漏洞的成因和各个类型。

在漏洞利用方面,由开源项目run_root_shell可做为参考,该项目包含了多个经典漏洞的利用实现,入门的好材料。

此外,还能够关注国外的POC程序或对一键root类产品作分析。

2.Android应用与系统框架才呢过漏洞挖掘

Android应用自己的问题主要集中在4大组件上,一般是一些逻辑处理问题致使信息泄露、身份认证绕过等。

得益于Android沙箱机制,应用自己的攻击面相对较小。

此外,围绕WebView或者SSL漏洞所引起的安全问题也比较常见。

框架层漏洞也是逻辑漏洞居多,但危害每每比应用更大。著名的高危漏洞有Master Key签名绕过、WebView远程代码执行等。

目前已有的一些开源漏洞挖掘工具,如Drozer和Intent Fuzzer。能够再此基础上进行改进。

3.恶意软件攻防

数量上看,隐私窃取和钓鱼软件是目前Android平台主要的恶意软件类型。

若用户对应用申请的权限绝不知情,一款应用便能轻松获取用户的短信、通信录、地理位置、录用等私密信息。

Android平台须要有主动防护程序控制应用获取隐私的行为,目前有2种方法实现:一种是集成到ROM代码中,另外一种是利用API Hook实现。不管使用哪一种方式,目前面临的问题都是如何更智能地为用户管理权限,以减小防护软件频繁弹窗打来的打扰。

市面上还充斥着大量的仿冒支付类应用,它们看起来可能与正版应用没有区别,由于这些仿冒软件是由正版应用篡改而来的。一般都会有用户名和密码窃取的恶意代码。安全软件须要经过签名、代码特征等方法对此进行识别。

从趋势上看,恶意软件不再局限在Android安装包(APK)的形式进行分发,而每每会带有Linux可执行文件(ELF),对系统进行深层次的攻击。目前市面上的安全产品对APK文件的查杀已比较成熟,但对于系统原生层的恶意软件查杀尚未特别完善的实现,对于一些APT级别的新型威胁防护也仍在探索阶段。

知名恶意软件Oldboot就是恶意程序使用底层技术对抗查杀的典型案例,完整的分析已经公开。

4.支付安全

手机支付通常经过短信验证码和独立支付密码解决支付者身份认证问题,但仍然存在短信遭人窃听或密码被窃取的风险,一些厂商模仿PC上的U盾方案,推出音频盾或蓝牙盾解决认证问题。而利用ARM架构下的TrustZone将支付认证过程独立于操做系统以外也是一个方向。

5.应用加固(加壳)与逆向工程

国内知名的加固方案有:梆梆加固、360加固保、爱加密等。

6.企业安全BYOD

仅就终端设备来讲,BYOD方案是将手机系统隔离出两个环境:一个公用,一个私用,二者互不影响。

 

8、实例:Android4.4.2系统vold漏洞

1.如何第一时间得知漏洞

不是全部的漏洞都会被CVE收录,不少事秘密修补的。一种方法是,看版本升级时Android源码中的Change Log,运气好的话,能够从AOSP的git commit信息中注意到下面的话:

Project:platform/system/vold

0de7c61:Validate asec names

点击相关连接,就能看到Google秘密修补了该漏洞的信息。、

2.如何掌握漏洞细节

3.如何利用这个漏洞获取root

 

by retme

相关文章
相关标签/搜索