/AndroidSecNotes

some learning notes about Android Security

MIT LicenseMIT

AndroidSecNotes

此系列文章是本人关于学习 Android 安全时记录的一些笔记,部分原创,部分是对网上文章的理解整理。如果可以找到原始参考链接时则会在文末贴出(如 乌云很多链接已失效,或者记不起当时存档时的链接 ),或者在文章开头写上 by xx,如有侵权请联系我(dameng34 at 163.com)删除或加上reference,感谢在网上共享知识的师傅们。

捐赠链接

如果觉得以下内容对您有一定帮助,不妨小额赞助我,以鼓励我更好地完善内容列表。
                                                          

文章目录

移动app自动化审计

内核漏洞挖掘

作者:Flanker Edward
链接:https://www.zhihu.com/question/45548548/answer/105379921
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

Andriod平台漏洞也有很多种,分为不同的方向,比如内核漏洞挖掘/利用,用户态高权限进程漏洞挖掘/利用,浏览器漏洞挖掘/沙箱逃逸和针对Andriod自身结构的漏洞(权限泄漏、敏感信息泄漏等)。

Android是一个基于Linux的复杂系统,想要熟练挖掘Android漏洞必须要了解Linux系统本身(内核,驱动),以及Android在Linux架构上添加的各式各样的组件和功能(binder,media/graphics subsystem,zygote, chromium/skia和最上层的四大金刚等)。从问题中的角度来讲,对于不熟悉Windows平台的初学者,不建议将大量时间投入到Windows平台上的漏洞利用学习上,因为两个平台的漏洞虽然核心**相通,但具体到利用的细节不太相同。这些精力时间投入到Linux平台和Android自身的研究学习上对于Android漏洞挖掘这个目的意义更大。并且从实际的角度出发,业界目前需要更多的也是Mobile系统方向上的人才。

基础的漏洞类型例如栈溢出、堆溢出、未初始化、OOB、UAF、条件竞争/TOCTOU漏洞等必须要熟练理解掌握,这些在各种CTF平台上在Linux平台下都可以练习到。但是需要注意的一点是CTF还是和实际有些区别。例如CTF上的堆溢出题目绝大部分都基于dlmalloc,而Android早在5.0就切换到了jemalloc。现代软件中最常见的条件竞争漏洞因为比赛平台的限制也很少在CTF中看到(利用比较耗费资源,很难支撑比赛中的大规模并发需求)。

在了解了基础知识之后,可以进一步学习Andriod自身的体系结构。

当然,只要掌握了计算机体系结构,熟悉了程序的运作方式,到达一定境界之后那么各种漏洞、各种系统之间的界限也就渐渐模糊了。我所知道的业界人士中有不少从Windows大牛跨界为Android大牛,例如Fireeye的王宇王老师,pjf大牛。毕竟触类旁通,运用之妙,存乎一心,与君共勉。