具体描述
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和移动设备的安全性。
他的作品在全球各地均有出版,同时还是多部学术期刊的评审。
感谢我的家人及朋友对我事业与工作的支持。
Nick Glynn目前受聘担任技术培训师和顾问,在英国和世界各地提供关于Android、Python和Linux的课程和专业知识。他在许多领域,无论是主板启动代码、Linux驱动程序开发和系统开发,还是全栈部署、Web应用程序开发,以及Linux和Android平台的安全强化,都拥有丰富的经验。
我要感谢我家人给我的爱,感谢我漂亮的宝贝女儿,是你照亮了我的生活。
RuiGonçalo就读于葡萄牙布拉加的Minho大学,他现在正在完成Android安全领域的硕士论文。他正在开发一项新功能,旨在使用户能以非常细的粒度,控制互联网连接。他对移动安全的浓厚兴趣源于大学里“密码学”和“信息系统安全”这两门课程,在几次有关的活动中他得到了这一领域里葡萄牙最重要的公司的支持。他建议渴望成为安全领域专家的Android安全初学者把这本书作为必读书目。
我要感谢Packt出版社负责此书的工作人员,是你们让我完全相信,对移动安全的研究会占满我对探索软件世界的所有好奇心。
Elliot Long从小在硅谷长大,2005年起就编写了多个移动app。他是移动旅游线路生成软件mycitymate SL/GmbH的共同创始人。2009他加入了Intohand有限公司,负责Android和黑莓开发。
目录信息
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
· · · · · · (收起)
读后感
用户评价
这本书最让我印象深刻的是它所蕴含的批判性思维和前瞻性视角。在很多章节中,作者并未满足于介绍现有的技术和工具,而是时常提出对当前安全生态的深刻反思,并对未来可能出现的新型攻击面和防御手段进行了预判。这种超越时代的思考,使得这本书的内容不仅在当下具有极高的时效性,更具备长远的指导意义。它鼓励读者不要固守成见,要时刻保持对未知威胁的好奇心和警惕性。比如,在探讨应用加固策略时,作者探讨了如何对抗未来的“非传统”动态分析技术,这种高屋建瓴的视角,让读者在学习当下技术的同时,也对未来的安全对抗趋势有了清晰的认识。读完这本书,我感觉自己获得的不仅仅是一堆安全技能,更是一种面对未来挑战的战略眼光和不断进化的学习心态。
这本书的排版和设计真是让人眼前一亮。封面采用了深邃的黑蓝渐变色,配上简洁有力的字体,透着一股专业和神秘感。拿到手里,纸张的质感也相当不错,拿在手里沉甸甸的,感觉就是一本用心打磨的作品。内页的印刷清晰度很高,图文排版也处理得非常到位,阅读起来毫无压力。尤其是那些代码示例和架构图,不仅排版工整,关键是标注得非常清晰明了,很多复杂的概念通过图示一下子就清晰起来了。作者在细节上的把控,从目录的逻辑清晰度到章节之间的过渡衔接,都显示出极高的专业素养。比如,它在介绍某个安全框架时,不仅给出了理论,还配有实战中常见的应用场景图,这一点对初学者或者想深入理解的读者来说,简直是福音。整体来看,这本书在视觉呈现和阅读体验上,绝对是市面上移动安全类书籍中的佼佼者,光是翻阅的过程就是一种享受,让人更有动力去深究其内容。
这本书的语言风格和叙事方式非常独特,读起来一点也不像传统教材那样枯燥乏味,反而像是一位经验丰富的专家在跟你面对面交流,分享他的实战心得。作者在讲解复杂技术点时,常常会穿插一些生动形象的比喻,把抽象的安全原理瞬间拉到日常生活的层面,这使得理解门槛大大降低了。我特别欣赏作者那种娓娓道来,层层递进的讲解节奏,他不会一上来就抛出最深奥的知识,而是先建立坚实的基础,然后逐步引导你进入更深层次的攻防对抗思维。有时候读到精彩的地方,那种豁然开朗的感觉,就像是解开了一个长期困扰的谜团。这种叙事魅力,使得即便是涉及底层汇编或者复杂的逆向分析,也变得不再那么令人望而生畏。它成功地在保持技术深度的同时,保证了极佳的可读性,这一点非常难得。
从内容编排的深度和广度来看,这本书无疑是为中高级安全工程师量身打造的“武功秘籍”。它并没有停留在市面上常见的那些基础的权限校验、输入过滤这些浅层话题,而是深入到了操作系统层面的内存保护机制、运行时动态插桩技术,甚至涉及到一些前沿的混淆对抗策略。我感觉作者对移动安全领域的理解已经达到了炉火纯青的地步,书中披露的一些攻击手法和防御思路,绝对是经过大量实战检验并打磨过的“干货”。例如,书中对特定平台漏洞利用链的构建分析,那份细致程度,已经超出了普通教程的范畴,更像是一份内部红队的操作手册。这种毫不藏私的分享态度,让读者能够真正接触到第一线的攻防实战思维,而不是停留在理论的纸上谈兵阶段。对于希望将自己的安全技能提升到新高度的读者来说,这本书提供的视角和技术深度是极其宝贵的。
这本书的实用性简直爆棚,它提供的不仅仅是知识点,更是一整套完整的实战工作流和解决方案。书中对工具链的介绍和使用步骤描述得极其详尽,几乎可以做到手把手教学,让你能够快速复现书中的实验环境和攻防场景。我特别喜欢它对“为什么”的解释,而不是简单地告诉你“怎么做”。比如,在讲解某个漏洞修复方案时,作者会先剖析该漏洞在底层是如何被利用的,然后再对比多种修复方案的优缺点,最后给出最可靠的选择,这种逻辑推导过程极大地锻炼了读者的分析判断能力。我个人已经将书中的某些代码片段和脚本作为我日常安全测试工作的基础模板来使用,极大地提高了效率。这本书的价值就在于,它将那些晦涩难懂的安全技术,转化成了可立即投入生产环境的有效工具和方法论。
译者注的那么多改错,就知道作者这书是多毛躁不认真...
内容一般,翻译一般,看目录就觉得没什么条理性,看完果然是这样...
适合入门,但感觉有好多地方有错误,虽然翻译标注出了一部分,还有一些得实际做实验才能碰到,比如使用GDB server调试Android进程时需要指定-writable-system参数等
适合入门,但感觉有好多地方有错误,虽然翻译标注出了一部分,还有一些得实际做实验才能碰到,比如使用GDB server调试Android进程时需要指定-writable-system参数等
对于黑盒层面的入门还是不错的