数据被盗了,这并不是一件罕见的事。在这个信息化的时代,窃取数据成为一件非常有利可图的事情。无论是钓鱼还是大规模的数据泄露,罪犯都可以从电子犯罪中大量获利,并且其收益远超因此承担的风险。当我说这件事并不罕见时,不是在表示不屑,而是在向你发出警告。你的企业中所使用的应用软件里存在可攻击漏洞的可能性非常高。恶意攻击者使用已有军火库中的一系列工具可以对应用软件进行逆向工程、跟踪和操纵,而这些是绝大部分程序员所没有意识到的,甚至许多加密实现都非常脆弱,一个训练有素的攻击者可以从这样或者那样的角度渗透进入,许多次都凸显出软件开发者对安全的错误认识。
攻击者可以采用已经被广泛所知的关于安全漏洞的知识,将其用于长期连接到公共网络的设备、用于可以从你口袋里窃取出来的设备、用于经常被遗忘在吧台上的设备。攻击者只需要花几分钟的时间就可以复制出设备中的文件,或者恶意地注入间谍件或rootkit,从而轻松地获得设备中的企业应用软件及其保护的数据——这一切甚至可以在你去别处喝了一杯返回吧台前完成。攻击者可以通过各种各样的方法窃取到移动平台的应用软件和数据,之后再悠闲地进行攻击,有时设备所有者压根就不会知道,甚至有时都不需要物理地接触到设备。
本书将演示黑帽子用来窃取数据、操纵软件的许多技术,以及向开发者介绍如何避免在软件中犯下各类常见的错误,避免软件被轻易地攻击。这些攻击并不仅限于从设备上窃取数据,还可能导致更多邪恶的攻击。本书中,你将看到一个示例说明如何攻破一些信用卡支付处理软件,这个问题不仅将存储在设备上的信用卡数据暴露给了攻击者,还可以通过操纵该软件将商户的巨额信用卡资金用于退还给其并没有实际进行过的交易,从而直接从该商户的账户上窃取资金。你还会看到其他许多示例,对这些漏洞进行利用不仅会导致那些移动应用软件的数据产生风险,还让使用这些软件的人陷入危机。读者还会了解到这些攻击是如何执行的,并看到许多示例和演示说明如何编写更安全的代码使应用软件不会受到这些攻击。
本书读者
本书适合给iOS 开发人员用于学习设计安全的应用软件,不仅针对政府或金融类软件,还包括所有开发者希望保护其中的数据或功能的软件。为了理解本书中的大部分内容,你需要对iOS 的Objective-C 开发有一定的基础。如果对C 或汇编语言有了解会更好,但并不是必需的。
虽然本书主要针对iOS,但许多材料都可以直接用于Mac OS X 计算机。因为这两个环境都是Objective-C 环境,并且有许多相同的工具,因此,从本书中你还会发现许多内容可以用于从Mac OS X 的软件中找到漏洞。
全书结构
本书分为两部分。第1 篇讨论iOS 和iOS 软件中存在的许多漏洞及其攻击方法,第2 篇介绍如何开发更安全的软件。
第1 章介绍移动安全的核心问题,并且列举出常见的误解,以及许多开发人员对安全的错误的思维方式。
第2 章向读者介绍许多攻击iOS 设备的技术,包括越狱。读者会学到如何构建一份定制的代码,并通过流行的越狱技术和定制RAM 磁盘将其注入到iOS 设备中。
第3 章介绍了如何在几分钟内窃取到iOS 设备的文件系统,以及为什么开发者不能仅仅依赖于设备厂商所提供的磁盘加密功能。你还会学到如何通过一些常见的社会工程学方法接触到一台设备而不让其所有者察觉。
第4 章介绍如何对操作系统中遗留的数据进行取证分析,以及攻击者可以从窃取到的设备中获得哪些信息。
第5 章介绍如何攻击iOS 的钥匙链加密和数据保护加密机制,以及这些机制的内在问题。
第6 章演示如何通过HFS 的日志系统获得已删除的文件,并给出如何安全地删除文件使其无法被恢复的示例。
第7 章介绍一些用于侦查和操纵运行时环境的工具,并演示攻击者可以如何操纵应用软件中的对象、变量和方法来绕过各类安全保护。
第8 章介绍许多工具和方法,可以用于反汇编和调试软件、注入恶意代码,以及开展其他底层攻击。
第9 章介绍用于劫持SSL 会话的一些工具,并说明如何防止自己的软件陷入这类攻击中。
第10 章详细介绍多种安全机制和方法,以及如何用恰当的加密技术来保护数据。
第11 章介绍如何将软件设计为残留更少的跟踪信息,从而避免数据被取证分析而泄露。
第12 章介绍用于让攻击软件变得更复杂和困难的许多实践方法。
第13 章给出了一些技术,软件可以用它们来检测是否运行在一台越狱后的设备中,以及是否存在一些流行的越狱工具。
第14 章总结全书,说明理解问题并制定战略的重要性。
本书约定
本书中使用下列字体约定:
斜体(Italic)
用于表示网址(URL)、邮箱地址、文件名和文件扩展名等。
楷体
用于表示新的术语。
等宽字体(Constant width)
用于列举代码,以及对变量名、函数名、数据库、数据类型、环境变量、声明语句、
关键词等代码元素的行内引用。
等宽加粗字体(Constant width bold)
用于显示要输入的命令,或者其他应该引起读者注意的文本。
等宽斜体(Constant width italic)
用于说明这部分文本应该由读者根据上下文提供新的值来替换。
这类标注通常是一个技巧、建议或者一般性标注。
这类标注用于警告或提醒。
使用示例代码
本书就是为了帮助你完成手头工作的,因此,一般情况下,你可以将本书中的代码直接用于你的程序或文档中。你不需要再次联系我们获得授权,除非你一次性复制其中的绝大部分代码。例如,在编写的程序中使用了来自本书的多个代码块是不需要授权的,但是将O’Reilly 公司图书的示例代码作为CD-ROM 形式销售或者分发必须经过授权许可。引用这本书来回答一个问题或者引用其中的示例代码并不需要授权,但是在你产品的文档中一次性使用大量来自本书的示例代码必须经过授权许可。
我们感谢你引用本书,但并不强行要求这么做。引用通常包括书名、作者、出版社和ISBN。例如:“Hacking and Securing iOS Applications by Jonathan Zdziarski. Copyright2012 Jonathan Zdziarski, (ISBN 9781449318741).”如果你觉得自己使用代码的方式超出了合理使用或者上述权限的范围,请与我们联系。
法律免责申明
本书中所讨论的技术、技术和内容所有者对使用技术的限制,以及限制使用这些技术的相关法律在不断地变化。因此,本书中所述的一些攻击方法可能已经无法正常工作,可能导致对它们所作用的设备或系统的意外损坏,或者违反相关法律与用户协议。你在使用这些技术时需要自己承担风险,O’Reilly Media, Inc. 对造成的任何损坏以及使用这些技术导致的损失不承担任何责任。任何情况下,你应该注意使用这些技术可能导致违反一些法律,包括版权法。
Safari? Books Online
Safari Books Online 是一个按需数字化图书馆,你可以在这里找到7500 本技术和创造类图书或视频,快速找到你想要的答案。
通过订阅,你可以从我们的在线图书馆中阅读任何页面或者观看任何视频,通过移动设备阅读数据,在书籍还未正式印刷之前访问到,特别是能访问到作者撰写中的手稿并且发送反馈,复制和粘贴代码示例,组织收藏夹,下载章节,设置关键内容的书签,创建笔记,打印页面等一系列节省时间的功能。
O’Reilly Media 已经将这本书上传到Safari Books Online 服务。要获得对这本书的完整电子版访问权限,或者阅读其他来自O’Reilly 或其他出版社的类似主题的书籍,可以到网站免费注册。