Android安全新书推荐——《Android安全攻防实战》

基本信息

编辑推荐

》寓教于练,可供安全技术研究人员,软件开发人员,电子取证人员学习使用,对于各类高等院校中网络安全相关专业师生也有较高的参考价值。

 

内容简介

Android是目前最为主流的移动设备操作系统,占据了全球近84%的市场份额。因此,Android系统中的安全问题也就变得十分重要。
本书通过大量极富针对性的实验,通过对常见的安全场景中解决方案的讲解,帮助读者全面掌握各种攻-防实用技能。因而,本书的实用性也很强,即使是一时不能完全理解其中的技术原理的新手,根据作者给出的方法,也能解决实践中遇到的大部分问题;而高手也能从中借鉴到一些好的做法。
全书共分九章,涵盖了基本的Android开发环境和工具;app组件之间及它们与系统的交互方式;Android安全评估框架”drozer”;app及Android原生代码的逆向技巧;各类漏洞的利用及防护方式;使用SSL在网络通信中进行更有效的验证;利用第三方代码库或Android中新增的特性,通过加密和在开发时使用设备管理策略,加固app等内容。
《Android安全攻防实战》寓教于练,可供安全技术研究人员,软件开发人员,电子取证人员学习使用,对于各类高等院校中网络安全相关专业的师生也有较高的参考价值。

作译者

Keith Makan
以前他是计算机科学和物理学专业的学生,现在是狂热的业余爱好者和安全研究员。他把绝大多数业余时间都用在了阅读源码、逆向工程、fuzz测试和编写Web应用技术中的相关漏洞的利用代码上。
Keith工作起来就像是一个IT安全评估专家一样专业。他的个人研究已经使他多次入选”谷歌应用安全名人堂”(Google Application Security Hall of Fame)。他还编写了谷歌Chrome的WebKitXSSAuditor,火狐浏览器的NoScript插件中漏洞的利用代码。此外,他还数次报告了WordPress插件中的漏洞,并写出了相应的利用工具。
我要感谢我的妈妈、爸爸以及其他支持我疯狂的想法,并总是给我极大鼓励的家人们。
Scott Alexander-Bown
他是一名在金融服务,软件开发和移动app客户端开发方面有着丰富经验的研发高手。他一直沉湎于Android之中,热爱移动app安全。
Scott目前是一位高级开发人员,专长于移动app的开发、逆向工程以及app加固。他也热衷于发表与app安全相关的演讲,活跃在多个国际移动app开发者大会上。
最重要的,我要感谢我的妻子Ruth,没有你的爱和鼓励,我将一事无成。我爱我们的儿子Jake,他的笑声和可爱的笑脸是我前行的动力。
此外,我还要感谢以下诸公:
Keith, Barbara,Kirk Bown,Mhairi和Robert Alexander ,感谢你们给予我的爱和支持。
Andrew Hoog和viaForensics小组的成员,感谢你们在移动安全领域的支持、洞察力和经验。
Mark Murphy, NikolayElenkov, Daniel Abraham, Eric Lafortune, RobertoTyley, YanickFratantonio, Moxie Marlinspike, the Guardian Project和the Android 安全团队,你们博客中的文章、论文、演示和/或示例代码对于学习Android安全是很有趣且非常有用的。
感谢Keith Makan的热心和指导,在你的带领下,我才能完成本书的编写。
感谢本书的各位技术审校对细节的关注和极具价值的反馈意见。最后,感谢您–亲爱的读者–我希望,您能从本书中获益,并由此写出更安全的app。
审稿人简介
Miguel Catalan Ba·uls是一名年轻的工程师,他唯一的梦想是希望自己的努力能为世界的改变做出贡献。他是一名软件开发人员,也是一名团队的带头人。
他拥有工业工程学士学位,是Geeky Theory的合伙人。他还是Miguel Hernandez大学(西班牙分校)的IEEE学生分会的副会长。
我想感谢我的妻子与父母,感谢他们对于我工作的理解与宽容。
Seyton Bradford是一名在移动设备安全和取证上有着超过10年经验的软件开发人员和工程师。
目前,他在viaForensics任高级软件工程师,主攻app和移动设备的安全性。

目录

第1章 Android开发工具 1
1.1 简介 1
1.2 安装Android开发工具(ADT) 2
1.3 安装Java开发包(JDK) 5
1.4 更新API资源 9
1.5 另一种安装ADT的方法 11
1.6 安装原生开发包(Native Development Kit,NDK) 15
1.7 虚拟Android设备 16
1.8 使用命令行创建Android虚拟设备(AVD) 19
1.9 使用Android调试桥(ADB)与AVD交互 21
1.10 从AVD上复制出/复制入文件 22
1.11 通过ADB在AVD中安装app 23
第2章实践app安全 24
2.1 简介 24
2.2 检查app的证书和签名 24
2.3 对Android app签名 33
2.4 验证app的签名 37
2.5 探索AndroidManifest.xml文件 37
2.6 通过ADB与activity管理器交互 47
2.7 通过ADB提取app里的资源 50

第3章 Android安全评估工具 56
3.1 简介 56
3.2 制作Santoku启动盘和安装Santoku 58
3.3 安装drozer 62
3.4 运行一个drozer会话 71
3.5 枚举已安装的包(package) 72
3.6 枚举activity 78
3.7 枚举content provider 80
3.8 枚举service 83
3.9 枚举broadcast receiver 85
3.10 确定app的受攻击面(attack surface) 87
3.11 运行activity 89
3.12 编写drozer模块–一个驱动枚举模块 91
3.13 编写一个app证书枚举器 94
第4章利用app中的漏洞 98
4.1 简介 98
4.2 收集logcat泄露的信息 101
4.3 检查网络流量 106
4.4 通过activity manager被动嗅探intent 111
4.5 攻击service 117
4.6 攻击broadcast receiver 121
4.7 枚举有漏洞的content provider 123
4.8 从有漏洞的content provider中提取数据 126
4.9 向content provider插入数据 129
4.10 枚举有SQL-注入漏洞的content provider 131
4.11 利用可调试的app 134
4.12 对app做中间人攻击 139
第5章保护app 146
5.1 简介 146
5.2 保护app的组件 147
5.3 通过定制权限保护组件 149
5.4 保护content provider的路径(path) 152
5.5 防御SQL注入攻击 155
5.6 验证app的签名(防篡改) 157
5.7 通过检测安装程序、模拟器、调试标志位反逆向工程 161
5.8 用ProGuad删除所有日志消息 164
5.9 用GexGuard进行高级代码混淆 168
第6章逆向app 173
6.1 简介 173
6.2 把Java源码编译成DEX文件 175
6.3 解析DEX文件的格式 177
6.4 解释Dalvik字节码 194
6.5 把DEX反编译回Java 202
6.6 反编译app的原生库 205
6.7 使用GDB server调试Android进程 207
第7章网络安全 211
7.1 简介 211
7.2 验证SSL自签名证书 212
7.3 使用OnionKit库中的StrongTrustManager 221
7.4 SSL pinning–限定受信SSL的范围 223
第8章原生代码中漏洞的利用与分析 231
8.1 简介 231
8.2 检查文件的权限 232
8.3 交叉编译原生可执行程序 241
8.4 利用竞争条件引发的漏洞 249
8.5 栈溢出漏洞的利用 254
8.6 自动fuzzing测试Android原生代码 261
第9章加密与在开发时使用设备管理策略 274
9.1 简介 274
9.2 使用加密库 275
9.3 生成对称加密密钥 277
9.4 保护SharedPreferences数据 281
9.5 基于口令的加密 283
9.6 用SQLCipher加密数据库 287
9.7 Android KeyStore provider 290
9.8 在开发时使用设备管理策略 293

译者序

  这是一本Android安全的实训教材,你甚至可以把它当成参加一次专家手把手的专题培训!
自从Android操作系统成为移动平台上的两大主流操作系统之一后,Android系统的安全性就受到了广泛的关注,确实也出版过几本Android安全方面专著,但是这些著作实在是太高大上了一些,一般都是要从高深的原理讲起,吓跑了许多对它感兴趣的爱好者。即使有人硬着头皮看下去,也如坠云里雾里,短期内无法把学到的知识,融会贯通地运用到实践中去。更别提那些只是不想让自己的代码沦为别人的”炮灰”的程序员了,他们确实学到了一些黑客知识,但是面对这些攻击时,又该怎样防护自己编写的代码呢?
本书的英文原名为《Android security cookbook》。其中的单词”cookbook”是”菜谱”的意思,也就是在给定场景下,如何进行操作的操作指南。顾名思义,书中的内容也就是针对典型的Android安全攻-防场景,通过实验来说明Android安全技术原理的。利用这种教学方法,能使学员快速上手,通过相对简短的培训,解决大部分实践中可能遇到的问题。由于本书同时也计划作为我校”网络安全与执法”专业”移动平台安全”课程的实训教材,所以我将书名直接译为《Android安全实验教程》。
实用性是本书最大的特色。除了常规工具外,作者还介绍了开源的Android安全评估框架”drozer”,利用这个工具,你不仅可以”敲一、两个命令”就能完成以前要花很大代价才能搞定的活。有经验的安全研究人员还能为自己定制开发一些针对特定问题的插件,让自己活得更滋润些。而且,由于这个框架能够暴露出Android app内部实现的许多细节,随着你越来越熟练的掌握这一工具,你对Android的理解也一定会越来越深入。
对于想要寻找代码加固方案的程序员来说,本书中更是针对常见的攻击方法,提供了详细且极富操作性的代码加固建议,其中不光有系统中自带的库或新增的特性的使用方法,也介绍了不少开源的库,通过对它们的使用,能把你的软件的安全性提高到一个新的级别。
本书的作者也不是光说不练的嘴把式,他们都是Android安全圈中的大牛,作者Keith Makan就是多个0day漏洞的发现者,数次入选谷歌应用安全名人堂(Google Application Security Hall of Fame);而作者Scott Alexander-Bown也是移动app开发、逆向和加固方面的专家,在多个国际会议上做过演讲。
单词”application”在书中,既是指用Java语言编写的Android应用,也指使用Android NDK编写的原生(native)应用程序,显然,在翻译时,将它们不加区分的全部译为”应用”或”应用程序”是不合适的。为了表示其中的区别,在翻译中,我们将用Java语言编写的Android应用一律译为”Android app”,而用Android NDK编写的原生应用程序则全部译为”应用”。
全书由上海公安高等专科学校的教师教官翻译完成的,全书共九章,分工安排如下:
第一至第四章由武晓音同志翻译,第五至第九章由我翻译。全书翻译完成后由我统一审校。
本书中文版的面世,特别要感谢博文视点的各位编辑老师,特别是顾慧芳、刘皎老师,感谢你们对我的一贯支持和耐心的指导,使我从中获益良多!同时也感谢你们为本书的出版所花费的大量时间!此外,也要感谢Team509安全研究小组的朋友们在本书翻译时给予的宝贵建议!
由于翻译时间仓促,书中存在错误在所难免,敬请读者不吝指正。
崔孝晨
2015年2月

序言

  想做一名优秀的英文技术资料译者实属不易,除了要有深厚的英文功底,还需要对所翻译的技术领域有深入的了解,同时还要译者有博大分享之心和躬耕不辍之志。拜读了小崔的最新译作《Android安全攻防实战》后,我更是由衷地感到他对技术与文字的把握已相当娴熟,能受邀为其新作做一推荐也令我甚感荣幸。
我与小崔初识于2003年,彼时他尚在从事电子取证及数据鉴定领域的工作且颇具造诣,待到后来Team509成立,我们便成为了莫逆之交。当时团队的成员各有所长,但小崔一直是最勤奋的一员,其勤奋不仅仅在于对技术孜孜不倦的追求,也在于其不吝花费时间翻译大量的英文技术资料并乐于分享。想来他优秀的翻译功底便是那时练就的吧。之后,他翻译的”大部头”作品便陆续问世,且一部好过一部。
如今,这部新作的推出与当下的移动领域技术潮流匹配得恰到好处,本书可以作为初学者熟悉Android系统攻防的快速入门教程,其中的大量操作实例也可以为高手们提供一些值得借鉴的做法。此书的翻译忠实原意,对原著的意思把握得十分准确,语言生动活泼,令人读起来十分愉快。希望读者能够喜欢,并从中受益。
赵泽光
2014和2015届Pwn2own黑客大赛winner,Team509创始人之一
*Pwn2own是全球公认级别最高的黑客大赛
2015年5月
译者
购买地址:http://product.china-pub.com/4717226#ml