Android安全攻防实战 pdf下载pdf下载

Android安全攻防实战百度网盘pdf下载

作者:
简介:本篇提供书籍《Android安全攻防实战》百度网盘pdf下载
出版社:电子工业出版社京东自营官方旗舰店
出版时间:2015-07
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

编辑推荐

  一本极其实用的Android安全攻防快速学习手册。

  《Android安全攻防实战》提供了大量攻防示例代码和实用建议,可以直接用来解决项目中遇到的实际问题。同时,书中还介绍了开源工具,帮助读者用一两个命令来解决以前需要花费很大代价才能完成的任务;在书中的指导下,读者也可以为自己定制开发针对特定问题的插件,一劳永逸地解决问题。

  作者Keith Makan数次入选谷歌应用名人堂,是多个0day漏洞的发现者。

  2014和2015届Pwn2own黑客大赛winner,Team509创始人赵泽光老师力荐!
  《Android安全攻防实战》寓教于练,可供安全技术研究人员,软件开发人员,电子取证人员学习使用,对于各类高等院校中网络安全相关专业师生也有较高的参考价值。

推荐购买:
  

看过本书的朋友,能够将自己的iOS应用在安全方面的得分,从不及格提升到80分!

一本书掌握基于大数据的智能化海量情报分析方法和技能!

迄今为止专业的一本恶意代码分析指南,专业人士案头必备

头号黑客传奇人生的启迪!


  

内容简介

  Android是目前比较主流的移动设备操作系统,占据了全球近84%的市场份额。因此,Android系统中的安全问题也就变得十分重要。

  本书通过大量极富针对性的实验,通过对常见的安全场景中解决方案的讲解,帮助读者全面掌握各种攻-防实用技能。因而,本书的实用性也很强,即使是一时不能完全理解其中的技术原理的新手,根据作者给出的方法,也能解决实践中遇到的大部分问题;而高手也能从中借鉴到一些好的做法。

  全书共分九章,涵盖了基本的Android开发环境和工具;app组件之间及它们与系统的交互方式;Android安全评估框架“drozer”;app及Android原生代码的逆向技巧;各类漏洞的利用及防护方式;使用SSL在网络通信中进行更有效的验证;利用第三方代码库或Android中新增的特性,通过加密和在开发时使用设备管理策略,加固app等内容。

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

作者简介

  崔孝晨,中国计算机法证协会会员,安全研究小组Team509的创始人之一。2009年因完成了对某僵尸网络的分析,找出其主要控制者,并由此破获了上海“2009.7.18“私车拍卖网站被DDOS攻击一案,而荣立个人二等功。

目录

第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已经快速地成为了最主流的移动操作系统之一——这不光是对用户而言,也是对开发者和所有类型的公司而言的。当然也正是因为这个原因,它也成了恶意敌手眼里的一块肥肉。

  自从2005年进入公众视线时起,Android在功能和复杂性上都有了长足的进展。移动智能手机中一般都存有其使用者的非常敏感的信息,而且还能访问他们的电子邮件、短消息,以及公共网络和专门网络的服务。就像其他所有软件一样,在功能和复杂性增长的同时,也会增加安全风险。软件越强大,越复杂,人们就得越努力地应对和适应险恶的大千世界。

  这一点还特别适用于移动智能手机上的软件。这些存放私人信息和隐私信息的温床,必然存在于我们十分关心的一个安全的上下文环境中,同时,我们也要在这一环境中解决问题。从一方面看,移动智能手机的安全上下文环境,与网上的或“云”中的服务器中的安全上下文环境是截然不同的。因为究其本质而言,网上的或“云”中的服务器是不会移动的。它们不会被轻易地搬走或偷走。我们可以同时强制执行软件的和物理的防护措施保护它们,使之未经许可就不能被访问。我们也可以一直监视它们,并及时响应各个安全应急事件。但是对于我们经常放在口袋或手提包里,带着到处跑,还会被落在出租车里的设备来说,游戏规则就完全变了。

  Android的用户和开发者需要持续关注他们的移动安全风险,而正是因为这一原因,对移动安全和风险评估专家和安全工程师的需求也一直是很旺盛的。本书致力于降低成为Android安全评估专家之初的学习难度,并希望成为经验丰富的Android安全专业人士手中的工具,帮助他们解决常见的Android安全问题。

  本书的内容

  第1章“Android开发工具”介绍了安装和运行开发者用来编写Android app和Android平台上的原生级组件的工具。这一章也为那些想要了解如何搭建常用的Android开发环境和相关工具的新手做了一个大致的介绍。

  第2章“实践app安全”介绍了Android操作系统提供的,专门用来保护app的组件。这一章里将讨论:(对app的)手工检查和一些用来保护app的安全相关的工具和服务的使用方法,以及用它们与操作系统交互的方法。

  第3章“Android安全评估工具”介绍了一些主流(新的或即将发布的)安全工具和框架,Android安全专业人士可以用它们来评估app暴露给用户的技术风险。在这一章里,你将学到如何安装、运行和扩展本书之后的这些章节中会使用到的黑客和逆向工程工具的功能。

  第4章“利用app中的漏洞”介绍了针对Android app的目的漏洞利用技术的框架。这一章的内容涵盖了所有类型的Androidapp组件,从源码和app间上下文关系的角度,详述了如何检查这些组件的安全风险。另外,这一章里还将介绍在第 3 章“Android安全评估工具”中介绍的工具的一些高级用法。

  第5章“保护app”的写作目的与第4章“利用app中的漏洞”的目的是完全相反的。这一章并不光讨论app中的漏洞,也讨论如何修补它们。它将引领读者学习那些开发者能够用来保护他们的app,免受第4章“利用app中的漏洞”中详细描述的一些攻击危害的,有用的技术。

  第6章“逆向app”帮助读者学习如何破解app並教授他们Android逆向工程师用来检查和分析app时所使用的技术。你将会非常详细地学到Dex文件的格式,以及如何把Dex字节码解析成易于进行逆向工程的更有用的表示形式。这一章里也会介绍一些逆向工程师用来动态分析app和运行在Android操作系统上原生组件的新奇的方法。

  第7章“网络安全”帮助读者深入研究一些app开发者能用来保护他们通过网络传输数据的实用方法。使用这些技术,你可以在安全套接字层(Secure Sockets Layer,SSL)通信中添加更有效的验证。

  第8章“原生代码中漏洞的利用与分析”专门用来讨论关于Android平台上原生可执行程序的安全评估和测试技术。读者将会学到怎样去寻找能用于root手机和在Android系统中提权的安全漏洞——那些能用来对原生服务进行包括内存溢出攻击和利用竞争条件漏洞在内的底层攻击的漏洞。

  第9章“加密与在开发时使用设备管理策略”将专注于如何正确地使用加密技术和避免一些常见的错误做法,以保护你的app中数据的安全。这一章中将给你使用几个健壮的,帮助你节省开发时间的第三方库,来快速且安全地加固你的app的安全性的建议。为了使讨论内容完整,我们还将介绍如何使用Android设备管理API,来实现和强制执行企业安全策略。

  阅读本书时所需的软件

  虽然,在阅读本书时需要使用一些软件,但是在本书的许多实验里,在真正下载和用这些软件做实验之前,都讨论了下载和安装它们的方法。

  话虽如此,但在开始做实验之前,你可能还是最好先准备好下列软件:

  The Android Software Development Kit (SDK);

  The Android Native Development Kit (NDK);

  GNU C/C++ 编译器(GCC);

  GNU 调试器(GDB);

  Python,最好是2.7,3.0可能有时会无法正常工作;

  Virtual box;

  Ettercap (for Windows版的或Linux/UNIX版的);

  Dex2Jar;

  Objdump;

  Radamsa;

  JD-GUI;

  The Java Development Kit (JDK);

  drozer,一个Android 安全评估框架;

  OpenSSL命令行工具;

  keytool命令行工具。

  这本书是写给谁的

  本书中有些章节是专门用来讨论如何利用Android app中漏洞的,而另一些章节则讨论如何加固它们。本书的目标是:同时展示硬币的两面——攻击和防御。

  安全研究人员,分析师和渗透测试人员会喜欢如何利用Android app中漏洞的部分。而想要学习更多安全方面知识的app开发者,将会从保护app免受攻击危害的部分中获得切实可行的建议。

  字体风格约定

  在这本书中,你会看到一些不同排版风格的文字——这些不同的排版风格是用来区分各类不同的信息的。下面是一些排版风格的样例及对其所表示的意思的解释。

  文字中的“代码字体”的部分,表示数据库中表的名字、目录名、文件名、文件扩展名、路径、URL和用户的输入。比如:“上一步中你选中的系统镜像的ID可以用-t参数来指定”。

  代码块是像下面这样表示的:

  fromdrozer import android

  fromdrozer.modules import common Module

  classAttackSurface(Modulecommon.Filters common.PackageManager):

  如果我们希望你注意代码块中的某些部分,那么相关的行或语句就会被加粗:

  fromdrozer import android

  fromdrozer.modules import common Module

  classAttackSurface(Modulecommon.Filters common.PackageManager):

  命令行窗口中的输入或输出,则被表示成这样:

  sudo aptitude update //如果你已经装好了aptitude

  第一次出现的术语和重要的单词会被加粗。在正文中,你会在屏幕上,菜单栏或对话框中看见的文字,也会像这样出现:“当你同意了用户许可协议之后,你可以单击“安装”按钮,收集你的文档和API”。

  警告或重要的提示会出现在这样的地方。

  小窍门或小技巧会这样显示。

  读者反馈

  我们总是欢迎你——亲爱的读者提出宝贵的意见。请让我们知道你对本书的看法——无论你喜欢还是不喜欢。反馈意见对我们今后出版你真正最需要的东西是非常重要的。

  如果只是一般的意见,请送电子邮件,并在主题中注明书名即可。

  如果你对某个主题特别有研究,或者你有兴趣写一本书或投稿,请移步我们的作者指南页面。

  售后服务

  你现在已经是尊贵的Packt book的客户了。我们愿意为你的购买提供全面的服务,使你获得更多东西。