下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
读书 > 移动开发 >Android > Android安全攻防实战

Android安全攻防实战

综合评级:★★★★★

定价:79.00

作者:Keith Makan,Scott Alexander-Bown(基思.麦凯恩)(斯科特.亚历山大.鲍恩) 著,崔孝晨 武晓音 译

出版社:电子工业出版社

出版日期:2015年7月

页数:320

字数:392000

ISBN:9787121261077

书籍介绍

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

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

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

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

相关课程
目录

第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 生成对称加密密钥

前言

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(Module,common.Filters, common.PackageManager):

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

fromdrozer import android

fromdrozer.modules import common, Module

classAttackSurface(Module,common.Filters, common.PackageManager):

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

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

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

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

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

热门图书
推荐新闻
技术文库
论坛推荐