前言

前言

移动安全是当下最热门的话题之一。作为市场上领先的移动操作系统,安卓拥有极其广泛的用户基础,大量的个人数据和商业数据都存储在安卓移动设备上。移动设备给人们带来了娱乐、商业、个人生活,同时也带来了新的风险,针对移动设备和移动应用的攻击日益增加。作为用户群最大的平台,安卓自然成为攻击者首选的攻击目标。本书将深入研究各种攻击技术,以便帮助开发人员、渗透测试人员以及终端用户了解安卓安全的基本原理。

内容概述

第1章“实验环境搭建”是本书的基础部分。这一章将会指导读者搭建一个环境,其中囊括了后面各章所需的所有工具。对于不了解安卓安全技术的读者来说,这一章属于基础入门部分,将指导他们安装安卓安全所需的一系列工具。

第2章“安卓ROOT”介绍ROOT安卓设备的常见技术。这一章将介绍ROOT的基础知识,并分析其利弊,之后讨论安卓的分区布局、boot loader 以及boot loader解锁技术等话题。这一章将指导读者如何ROOT自己的设备,并了解ROOT概念的来龙去脉。

第3章“安卓应用的基本构造”概述安卓应用的内部构造。应用在底层是如何构造的,当它们被安装到设备上时是什么样子,又是如何运行的,等等,了解这些知识非常有必要,而这也正是这一章所涵盖的内容。

第4章“安卓应用攻击概览”概述安卓的攻击面。这一章将讨论安卓应用、安卓设备以及安卓应用结构体系中其他组件可能遭受的攻击。更重要的是,指导读者针对通过网络与数据库通信的传统应用构建一个简易威胁模型。了解应用可能遭受的攻击对于理解渗透测试的测试内容十分重要。这一章对上述内容进行了高度概括,只包含少量技术细节。

第5章“数据存储与数据安全”介绍评估安卓应用数据存储安全的常见技术。数据存储是安卓应用开发中最重要的部分之一。这一章将首先讨论开发者在本地存储数据时所使用的不同技术,以及这些技术对安全性的影响。然后,具体阐述开发者所选用的数据存储技术对安全性的影响。

第6章“服务器端攻击”概述在服务器端安卓应用的攻击面。这一章将高度概括安卓应用后端可能遭受的攻击,并包含了少量的技术细节,因为大部分服务器端漏洞都与Web攻击有关。OWASP测试和开发者指南已经详细介绍了Web攻击。

第7章“客户端攻击——静态分析技术”从静态应用安全测试(SAST)的角度介绍各种客户端攻击。静态分析是一种通过可轻易获得的安卓逆向工具来鉴别安卓应用漏洞的通用技术。这一章还将讨论一些用于对安卓应用进行静态分析的自动化测试工具。

第8章“客户端攻击——动态分析技术”将介绍动态应用安全测试(DAST)中用于评估和利用安卓应用客户端漏洞的一些常用工具和技术。另外,还会讨论Xposed、Frida等在运行时操控应用的工具。

第9章“安卓恶意软件”将介绍创建和分析安卓恶意软件的常用基础技术。这一章将首先介绍传统安卓恶意软件的特征,然后讨论如何创建一个简单的恶意软件,并用于在受感染的手机上给攻击者一个反弹shell。最后讨论安卓恶意软件的分析技术。

第10章“针对安卓设备的攻击”试图帮助用户在日常使用中免受攻击,譬如在咖啡店和机场连接免费Wi-Fi时,如何免受攻击。这一章还将解释为什么ROOT安卓设备和安装未知来源的应用是不安全的。

阅读准备

为了在阅读本书的同时能亲自体验,读者需要安装下列软件。下载链接和安装步骤将在后面说明。

  • Android Studio
  • 安卓模拟器
  • Burp Suite
  • Apktool
  • Dex2jar
  • JD-GUI
  • Drozer
  • GoatDroid
  • QARK
  • Cydia Substrate
  • Introspy
  • Xposed框架
  • Frida

读者对象

本书适合想了解安卓安全的读者,对软件工程师、QA专业人员、初级及中级安全专业人士都有帮助。如果有一些安卓编程基础更佳。

排版约定

在本书中,你会看到一些不同的文本样式,用以区分不同类型的信息。下面举例说明一些样式的具体含义。

文中的代码、数据库表名、用户输入等将使用如下样式:“内容提供程序使用标准的insert()query()update()delete()等方法来获取应用数据。”

代码段的格式如下:

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error)
{ 
   handler.proceed();
}

代码段中需要重点关注的部分将会加粗:

if(!URL.startsWith("file:")) {

命令行输入和输出格式如下:

$ adb forward tcp:27042 tcp:27042
$ adb forward tcp:27043 tcp:27043

 此图标表示警告或重要提示。

 

 此图标表示提示和技巧。

读者反馈

我们非常欢迎读者的反馈。让我们知道你对本书的想法——喜欢哪些部分,或不喜欢哪些部分。你的反馈将会帮助我们开发能够真正被大家充分利用的图书。

你可以发送邮件到feedback@packtpub.com进行反馈,并在邮件主题中注明书名。

如果你对某一个主题有专业的见解,而且有兴趣创作或者为一本书做出贡献,请参考我们在www.packtpub.com/authors上的作者指南。

用户支持及说明

我们将为本书的读者提供最大的帮助,使读者能从本书中获得最大的收获。本书旨在深入研究各种攻击技术,任何未经所有者许可而攻击其系统的做法均属非法行为。

下载示例代码

读者可以通过账号从http://www.packtpub.com下载示例代码。如果你是从别处购买的本书,则可以访问http://www.packtpub.com/support,并注册账号,所有文件将会通过邮件直接发送给你。

可以按照下面的步骤下载代码文件:

(1) 使用你的邮箱和邮箱密码登录我们的网站或者注册账号;

(2) 将鼠标移动到网站顶部的SUPPORT选项卡;

(3) 点击Code Downloads & Errata;

(4) 在搜索框输入书名;

(5) 选中你要下载代码文件的图书;

(6) 在下拉菜单中选择购买渠道;

(7) 点击Code Download。

也可以访问本书在Packt出版社官方网站的页面,点击网页上的Code Files按钮进行下载。你可以通过在搜索框中输入书名找到该页面。注意,你要登录Packt账号才能下载。

文件下载完成后,使用下列软件的最新版将下载的文件解压或导出。

  • Windows平台:WinRAR/7-Zip
  • Mac平台:Zipeg/iZip/UnRarX
  • Linux平台:7-Zip/PeaZip

我们也在GitHub上托管了本书的代码:https://github.com/PacktPublishing/hacking-android。Packt图书和视频的代码也能在https://github.com/PacktPublishing/上找到。赶紧前往查看吧!

勘误表

尽管我们尽了最大的努力来保证书中内容的准确性,但差错还是在所难免。如果你发现了书中的错误,不论是正文还是代码,并且能够反馈给我们,我们将十分感激。这么做不仅能解决其他读者的困惑,也能帮助我们在本书后续版本中进行改进。如果你发现了错误,可以访问http://www.packtpub.com/submit-errata,选择相应的图书,点击Errata Submission Form链接,填写勘误详情。一旦勘误审核通过,你的提交将会被接受,并上传到我们的网站或者添加到现有勘误表中。

查看之前读者提交的勘误表,请访问https://www.packtpub.com/books/content/support,并在搜索框中输入书名查询。所需的信息将会显示在Errata下面。

盗版行为

对于所有媒体而言,网络盗版行为是一个长期存在的问题。对Packt而言,我们将严格保护自身的版权和许可证。如果你在网络上发现Packt作品的任何非法副本,请立即将网址或网站名称告诉我们,以便我们采取补救措施。

请将涉嫌盗版的链接通过邮件发送至copyright@packtpub.com

感谢读者保护我们的作者,保护我们为读者提供有价值内容的能力。

读者提问

如果读者对于本书内容有任何疑问,可以通过邮箱questions@packtpub.com联系我们,我们将尽最大的努力帮助读者解决问题。

电子书

扫描如下二维码,即可购买本书电子版。

{%}

目录

  • 版权声明
  • 前言
  • 致谢
  • 第 1 章 实验环境搭建
  • 第 2 章 安卓ROOT
  • 第 3 章 安卓应用的基本构造
  • 第 4 章 安卓应用攻击概览
  • 第 5 章 数据存储与数据安全
  • 第 6 章 服务器端攻击
  • 第 7 章 客户端攻击——静态分析技术
  • 第 8 章 客户端攻击——动态分析技术
  • 第 9 章 安卓恶意软件
  • 第 10 章 针对安卓设备的攻击