声明:原创文章,转载请备注来源: https://shuwoom.com/?p=893

以前花了将近一年多的时间学习移动安全,期间也遇到了各种坑,特别是学习Android加固的知识,由于Android加固技术门槛比较高,在网上想要找到系统的资料还是很困难的,一些相关的入门资料也比较少。在这里,我也把自己以前学习的经历和遇到的坑做一些总结,希望能给一些刚入门移动安全行业的同学一些参考,避免入坑。

首先,在刚刚学习一门技术之前,需要对这门技术有一个整体的认识,也就是知道它涉及到哪些知识、有哪些分类。如果一开始就钻研某个技术细节,很容易陷入牛角尖,越学越苦逼。下面是我以前整理的移动安全领域的一个详细知识分类,想入门移动安全领域的同学,可以实现对每一个大分类下的技术事先都大概了解下,至少知道每一个方向的技术是做什么的。

对移动安全有了一个大致的了解以后,接下来的这一步就很关键,要怎么入门?有什么好的入门资料或书籍可以开始学习?遵循一个怎样的学习顺序?

下面我整理一些我在学习过程中使用的好资料以及不错的书籍。首先要说明的是,我研究的移动安全方向是漏洞扫描和Android加固这两个方向。而我接下来推荐的资料也会比较倾向于这两个方向。

最近的一本书当然是《android软件安全与逆向分析》,这个也是我入门学Android安全的第一本书籍,很不错,可以让初学者对Android安全有一个快速的了解。

当学习完这本书以后,就对Android移动安全有一个初步的认识。接下来,就可以开始去一个个收集学习Android已经曝光过得各种漏洞,可以从以下几个方面来整理常规漏洞方面的知识。

  • 漏洞描述
  • 风险等级
  • 影响范围
  • 检测方法
  • 漏洞利用
  • 修复方案
  • 案例参考
  • 参考资料

而以后想要做漏洞扫描的同学,就需要收集整理每个漏洞关于上述方面的各个信息。我本人也花了很多时间去收集这些漏洞信息,详细的可以参考我分享的github项目:移动安全检测清单。我在收集这些常规漏洞信息的同时,也同步开发Android漏洞扫描工具,最终做了两次迭代开发,终于有一个成品:01hackcode.com,检测的效果完全不比商业版本的差。

还有一些不错的网站、博客整理的Android安全方面的资料也值得经常去看:

https://mobilesecuritywiki.com/

https://bbs.pediy.com/forum-161.htm

http://www.droidsec.cn/

https://github.com/ashishb/android-security-awesome

https://www.52pojie.cn/

https://www.owasp.org/index.php/Main_Page

https://jaq.alibaba.com/community/index.htm?spm=a313e.7916642.1000000.6.1506e4113Kzvc1

单纯看网上的资料,可能会觉得比较零散不系统,这里也推荐一本书,里面有很多实践动手环节,更注重实战:《Android安全攻防实战》

在收集完这些Android检测清单后,由于发现,还想要进一步深入研究Android安全,很有必要对Android的底层技术有一个深入的了解。这也是我为什么开始学习Android加固和Android安全机制方面的底层知识,而且这个对Android操作系统底层源码和虚拟机的原理机制要有深入的了解,对喜欢刨根问底的同学还是很有必要学习的。

《Android安全攻防权威指南》可以说是这方面的权威书籍,但是一开始马上就看这本书,会比较吃力,里面涉及到很多比较深的知识。并不建议马上开始就看这本书,最好是对Android的安全机制和底层知识有一定了解以后再阅读这本书会比较容易些,当然希望挑战的同学也可以直接拿这本书去啃。这本书比较适合想要专门从事漏洞挖掘的同学,特别是底层的系统漏洞挖掘,这本书可以说是必读书籍。

如果想要学习加固方面的知识,这方面的资料会比较少,因为很多都是商业产品,这种核心技术一般是不会轻易公开的,这也是我学习Android加固比较困难的。但我看现在,这方面的资料比起我2年前可以说是丰富了很多。而要学习Android加固,下面这些书籍和资料很不错。特别是《Android Dalvik虚拟机结构及机制剖析》第1、2卷,非常不错,对Dalvik虚拟机剖析得非常透彻,这两本书我是来回啃了好几遍,书都快被我翻烂了。大家可能会想,现在不都是ART虚拟机了吗,有必要去学习Dalvik这种落后的技术吗?但要知道技术是相通的,学习了一门技术,对另一门技术入门还是很快的。

    

在学习Android加固的知识,有两个很重要的知识点要掌握好,分别是:dex文件结构和so文件结构,这两个可以说非常基础非常重要,最好的话,可以直接写一个简单的dex文件和so文件解析,这对后面深入学习Android加固也是有帮助的。我本人也是通过自己动手实现了dex文件和so文件解析工具,对这两方面的知识有一个很深入的了解。下面这两个工具就是我写的dex文件和so文件解析工具。

https://github.com/guanchao/dexParser

https://github.com/guanchao/sodump

除了上面两本书,还有3分资料也很不错,也值得反复去钻研

elf 文件格式分析—滕启明

Android so加载深入分析:从载入到链接

ELF for the ARM Architecture

想要彻底弄懂Android加固原理,需要对linker的原理机制要彻底弄懂,刚开始学习,建议从程序员的自我修养这本书开始学起,比较通俗易懂,虽然不是讲Android的so加载过程。但是原理还是一样的。其次就是我在上面介绍的Android Dalvik虚拟机结构及机制剖析》这两本书。还有一本古董级别的书是专门讲解linker和loader这方面的知识—《链接器和加载器》

   

基本上漏洞挖掘和Android加固方面比较好的资料,我觉得上面是差不多够了,能够把上面这些资料和书籍啃透,就已经很厉害了。其余的就是在学习过程中一遍看一边查资料,同时也可以关注一些大牛的动态。想要成为大牛,就去关注Android安全方面大牛的是怎样学习的,都研究些什么。

最后,介绍一些移动安全常用的工具:

https://down.52pojie.cn/Tools/

打赏

发表评论

电子邮件地址不会被公开。