原文:
zh.annas-archive.org/md5/CEAE4A4C2A963DFCD507E6E1C793EDA6
译者:飞龙
第五章
安卓设备、数据及应用安全
本章节的信息
• 数据盗窃目标和攻击向量
• 安全考虑
• 个人安全策略
• 企业安全策略
• 应用开发安全策略
引言
在法医分析师和隐私倡导者之间保持微妙的平衡。如果设备的安全性达到 100%,那么对设备的法医调查将无法返回任何信息。另一方面,如果设备的安全措施完全缺失,法医专业知识几乎不需要从设备中提取有意义的数据。
移动取证的主要消费者是执法和政府部门。他们在移动设备上使用和保护许多类型的敏感数据,并且他们有调查犯罪的授权和权力。他们不仅依赖数字法医分析,还可以通过搜查令和传票行使权力,并迫使大多数组织提供所需的信息,如财务记录、电子邮件、互联网服务提供商日志等。
同样,企业需要保护其敏感数据,有时还会进行内部调查以确保安全。尽管他们的权力范围不超出公司,但在美国,企业可以在其拥有的设备上进行广泛的搜索权限。
最终,个人有权访问自己的数据。无论他们是在民事诉讼中这样做,还是其他事项,他们都有权在他们拥有的设备上进行操作。
在个人和企业的情况下,各方通常没有必要恢复他们在有权调查的设备上的敏感信息,如信用卡、银行信息或密码。企业在内部调查中不会寻求个人的信用卡数据,并且他们有能力访问企业电子邮件系统并更改密码。在个人情况下,他们已经可以访问自己的财务记录、电子邮件以及其他敏感数据。在执法和政府部门的情况下,他们可以利用传票和搜查令的权力获取他们所需的数据。
因此,最终可能从移动设备上存储的不安全高度敏感数据中受益的只有网络犯罪分子。在许多针对移动设备的个人、企业和犯罪调查过程中,我们发现了一些与案件无关的高度敏感个人信息。然而,如果网络犯罪分子能够访问该设备——无论是物理占有还是通过远程攻击——他们能够收集的数据将给消费者带来重大风险。
同样,企业也成为商业间谍、金融盗窃、知识产权盗窃以及其他各种攻击的目标。随着许多企业转向员工自有设备,对设备的控制和监管进一步减少,使得企业数据面临极大的风险。
最后,执法和政府机构也受到移动安全问题的不利影响。这些机构由个人组成,他们面临与消费者相同的数据暴露风险。与公司一样,机构本身也可能成为攻击的目标,这些攻击不仅寻求可能危及调查或使机构尴尬的敏感数据,还可能包括与国际间谍活动一样严重的攻击。而执法和政府机构面临的独特挑战是,许多涉及移动设备的犯罪必须进行调查,这给已经超负荷的刑事侦查部门和数字取证实验室带来了压力。
由于这些原因,移动设备安全成为了个人、企业和执法政府机构日益关注的问题。
数据盗窃的目标和攻击向量
在这一点上,任何还在继续阅读的人都很清楚,智能手机,尤其是安卓设备,包含了大量的信息,常常是个人和企业数据的混合体。安卓设备不仅是数据盗窃的目标,也可能成为盗窃发生的手段(攻击向量)。了解各种威胁和场景将使安全工程师和开发人员能够设计适当的控制措施来降低风险。虽然这一章节无法对如此广泛的主题提供详尽的覆盖,但将讨论具体的威胁和缓解策略,并应作为安全专业人员的强大起点。
安卓设备作为目标
移动安全研究、漏洞利用和文章的主要关注点一直是智能手机作为数据盗窃的目标,这是有道理的。对消费者、企业和机构的威胁是真实存在的,大多数安全专家认为,针对移动设备的恶意软件正在上升,并将继续成为网络犯罪分子的关注焦点。
移动设备以高度集中和便携的形式包含了大量的个人和企业数据。犯罪分子通常是务实的,网络犯罪分子也不例外。如果他们能够利用一个不仅包含个人用户名、密码和个人敏感信息,还包含雇主相同类型信息的设备,他们显然会瞄准这个机会。此外,尽管一个移动应用程序的数据可能不足以让犯罪分子达到目的,但结合从众多已安装应用程序中发现的信息通常会形成一个关于设备主人的惊人完整的资料。
移动设备不仅容易丢失且相对容易被盗,而且在消费者想要最新型号之前,其使用场景也相对较短。这两种情况都导致通过 eBay 和 Craigslist 等平台购买的手机数量增多,许多设备没有正确擦除,留下了完整的个人数据。此外,恶意代码、恶意软件和远程攻击越来越多地针对移动设备,历史表明它们将导致重大的数据盗窃。这些攻击的有效性只有在时间推移中才能确定;但考虑到操作系统(在本例中为 Android)的快速发展以及移动应用的迅速普及,可以合理预期许多攻击将会成功。
静态数据
静态数据是指存储在非易失性内存中的数据,因此既不在 RAM 中也不通过网络(蜂窝、数据或其他网络)传输。静态数据一词常用于法律和规定中,定义了一个必须保护数据的关键状态。
在整本书中,我们强调了 Android 设备包含的不同数据示例。在这里,让我们考虑两个虚构的场景:一个关注企业客户,另一个关注个人用户。
对于个人用户而言,Android 设备用于个人通讯、个人理财、娱乐以及一般的信息浏览。检查手机可能会恢复以下内容:
• SMS/MMS:所有已分配(未删除)的 SMS 和 MMS 都可以恢复,以及大部分未分配(已删除但仍在 NAND 闪存上)的短信。恢复的信息将包括短信本身以及任何附件,如图片、视频、音频文件、手机联系人(.vcf 文件)、日历项目等。还有许多第三方 SMS/MMS 应用可能包括其他功能。
• 通话记录:尽管也可以从无线运营商那里获得,但完整的通话记录是可以恢复的。这些可能包括未能到达运营商的通话尝试以及我们可以与之相关联的其他元数据,如位置(这也可以根据蜂窝基站大致估计)以及通话拨打前设备上发生的其他活动。
• 语音邮件:在安装了语音邮件应用程序的情况下,如 Verizon 的可视语音邮件,通常可以恢复已分配的语音邮件消息作为音频文件(.OGG)。一些未分配的语音邮件消息也可能恢复。
• 金融应用:虽然它们各不相同,但大多数安装的金融应用会在本地存储一些数据或缓存网页。在某些情况下,可恢复的信息可能包括用户登录名、密码、账户号码和交易详情。例如,在我们的测试中,Mint.com 应用存储了用户名、访问本地应用的 PIN 码以及一些银行账户交易信息。
• 个人电子邮件:大多数安装的电子邮件应用以明文形式存储电子邮件消息的内容,包括电子邮件头(收/发电子邮件地址)。在某些情况下,还可以恢复包括用户登录名和密码在内的用户凭据。例如,标准的 Android 邮件应用在通过 POP3 连接到 Hotmail 时,被发现以明文形式存储密码。
• 网络历史:可恢复分配的网络历史记录,包括访问过的 URL、cookies 和缓存页面。未分配的空间可能包含额外的网络历史信息。
• 谷歌搜索历史:包括搜索词的谷歌 URL。
• YouTube:观看的视频的 URL。
• 图片和视频:用户拍摄的照片和视频,存储在设备上,与应用程序相关联以及其他内容。
• 地理位置信息:图片中的 GPS 坐标,其他遗迹。
• 游戏历史和互动记录。
在这个虚构的情况下,一个熟练的法医检查员可以恢复有关个人的大量信息。
在我们的企业示例中,它仅仅建立在个人之上,因为大多数设备将个人信息与企业信息混合在一起。以下是一些通常可以从企业设备上恢复的额外项目:
• 企业电子邮件和附件
• 通过电子邮件发送的语音邮件和传真
• 用户名、密码和域名信息
• Wi-Fi 接入点、信息及密码
• 日历项目
• 即时通讯或其他与员工的通信
• 为了方便存储在设备上的企业文件
如你所见,如果攻击者想要寻找有效的方法渗透企业,员工的设备(或更好几个员工的设备)可以提供许多洞察和攻击途径——更不用说直接从设备上恢复敏感的企业信息了。
一个可能引起企业安全经理高度警惕的具体例子是,Android 内置的电子邮件应用如何存储使用微软的 exchange ActiveSync(EAS)协议的电子邮件账户的凭据。用于对 EAS 进行身份验证的凭据是用户的活动目录域用户名和密码。许多企业将身份验证、授权和计费(AAA)服务集中到活动目录中,从而实现单点登录和简化管理。总的来说,简化带来了更有效的安全性。在 Android 邮件应用(com.android.mail)中,用户的 EAS 以明文形式存储在一个明确定义的位置。数据库存储在/data/data/com.android.email 中,以下是文件夹和文件的概览:
密码位于 EmailProvider.db 中,在一个名为 HostAuth 的表中的 password 列中:
除了账户的用户名、密码和域名外,电子邮件的全部主题和正文都存储在数据目录中,以及附件、偏好设置和其他信息。所有这些信息都以明文形式存储(这里想到了“银盘”一词)。
攻击者访问静止数据的主要技术有两种。第一种需要物理访问设备,并使用与法医检查员本质上相同的技术,这些技术将在第六章中进行探讨。虽然物理访问设备并不一定容易实现,但我们上面提到了一些可能的情况,包括丢失或被盗的手机以及更换新机型时没有安全擦除的手机。此外,国际旅行的人,尤其是公司高管,可能会发现他们在进入一个国家时,手机被海关官员暂时没收并检查。在这种情况下,官员可以无限制地物理访问设备。
攻击者访问静止数据的另一种主要技术是远程利用和恶意软件。在这些情况下,攻击者能够通过使用编程和社会工程学技术获得额外的权限。这些技术可能包括利用 Linux 内核和 Android 核心库中发现的漏洞、网络钓鱼攻击或利用应用程序中的漏洞。此外,用户可能会无意中安装应用程序并授予超出所需访问权限的权限,从而使恶意软件能够访问静止数据。最后,社会工程仍然是一种非常有效的系统破坏方式,移动设备对此并不免疫。用户习惯于安装各种应用程序,通常对应用程序提供商了解甚少,并且经常信任并在电子邮件和短信中随意点击呈现给他们的链接,从而为社会工程学攻击打开了途径。
在传输中的数据
在传输中的数据(有时称为动态数据)是指通过网络(蜂窝、Wi-Fi 或其他网络)传输的数据,或位于 RAM 中的数据。在法律和规定中经常使用数据在传输中的术语,并定义了必须保护数据的另一个关键状态。
通常,设备上存储的大多数信息(如上所述)在某个时刻都曾通过网络传输。除了数据本身,还有大量从未持久化到设备的信息需要传输和保护。以下是一些例子:
• 密码:许多应用程序不在设备上存储密码,并要求用户每次打开应用程序时都进行身份验证。因此,密码只是传输,并不存储。
• 双因素认证
• 密码重置安全响应
• 在应用程序中显示但未保存或缓存到非易失性存储的数据(例如,账户号码和余额)
展示数据在网络中传输的一个好方法是举例说明。在这个例子中,一台运行 BackTrack 4(基于 Linux 的渗透测试套件)的计算机连接到一个网络集线器,该集线器还连接了一个 Wi-Fi 接入点。计算机上的网络接口设置为混杂模式,这使得设备可以看到网络集线器上的所有流量,即使流量并非发往该接口。运行 urlsnarf 程序,它拦截网络接口(eth0)上的流量,并检查是否有 URL。如果找到 URL,就会将其打印到屏幕上。请记住,所有网络流量都被拦截,因此任何未加密的数据,如用户名或密码,也可能被类似地捕获和查看。
攻击者用来在传输过程中破坏数据的几种已知技术,以及安全研究人员自己发现或在实际环境中揭露的新技术。一些已知的技术包括:
• 中间人(MITM)攻击
• MITM 安全套接字层(SSL)攻击
• DNS 欺骗攻击(包括/etc/hosts)
• TMSI 溢出基带攻击
基带攻击是一种非常新的技术,专注于蜂窝调制解调器(基带)固件。在 2010 年 DeepSec 会议上展示其攻击手段的 Ralf-Philipp Weinmann 表示,基带固件是 20 世纪 90 年代编写的代码。直到最近,GSM 网络背后的技术还鲜为人知。然而,随着时间的推移,研究人员揭开了协议和硬件的秘密,如今使用现成的硬件和开源软件可以创建一个恶意的 GSM 基站。控制了 GSM 网络,攻击者可以执行 TMSI 溢出攻击,该攻击会在 iOS 4.2 之前的苹果 iOS 设备的 GSM 基带堆栈中引起堆溢出。这种攻击可能导致基带处理器上的远程代码执行(Ralf-Philipp Weinmann, n.d.)。
虽然基带攻击是尖端的安全工作,但 MITM 攻击已经存在了很长时间,并且被充分理解且相对容易执行。通常,这些技术需要攻击者完全控制位于移动设备和设备试图与之通信的最终目的地之间的计算机。此外,攻击者可能控制关键网络服务或设备,如网络交换机、Wi-Fi 接入点或 DNS 服务器,从而促进攻击的进行。
一旦攻击者能够将他们的计算机定位在 Android 设备与最终目的地之间,他们就可以发起攻击。在这个场景中,让我们假设一个 Android 设备连接到一个 Wi-Fi 网络,却不知道一个恶意的攻击者控制了这个网络。用户开始上网冲浪,并最终决定检查他们的 Twitter 账户。为了简化示例,让我们假设他们使用的 Twitter 应用没有实现 SSL——大多数都没有,尽管最近官方应用开始朝这个方向发展。
当用户启动该应用时,它将连接到 Twitter 网站,进行身份验证,并引导用户进入他们的账户。当然,在此过程中,攻击者捕获了网络流量,现在拥有了 Twitter 的用户名和密码。如果应用确实使用了 SSL,但没有正确验证 SSL 证书,那么它们将容易受到 MITM SSL 攻击,如图 5.1 所示。
图 5.1 中间人 SSL 攻击。
尽管这种攻击可能只捕获一个密码,但大多数用户会在许多不同的网站上重复使用用户名和密码。一旦攻击者拥有了一个用户名和密码,他们就可以开始研究关于消费者的更多信息,并且通常能够找到他们可以访问的其他系统。
另一个非常著名的攻击手段是利用拦截 HTTP 会话 Cookie 来劫持网站上另一个用户的认证会话,并开始作为该用户行事。Eric Butler 的 Firefox 浏览器扩展 Firesheep(codebutler.com/firesheep
)展示了这种攻击可以多么容易。尽管使用 Wi-Fi 上的 WPA 和其他本地措施等强加密可以使事情变得更加困难,但只要网站不要求全程使用 HTTPS,这种攻击仍然是有可能的。
Android 设备作为攻击途径
尽管媒体和许多安全研究人员主要关注针对移动设备的攻击,但越来越令人担忧的是将 Android 设备作为攻击途径,特别是在存储敏感数据的环境中。最常见的场景是在拥有商业机密、知识产权或其他需要保护数据的公司中找到。公司通常实施复杂的系统,旨在防止或至少检测到数据被盗。这些系统不仅购买成本高昂,而且通常需要熟练的员工来维护、监控并根据它们提供的信息采取行动。
直到最近,大多数数据保护系统主要关注保护企业边界,以防止攻击者进入受保护区域。随着时间的推移,也开发出了旨在防止内部威胁的系统。最新的系统进一步深入到网络和基础设施中,试图挫败攻击。这些系统关注诸如数据丢失预防(DLP)、网络访问控制(NAC)和网络取证等领域。然而,目前可用的解决方案尚未完全解决移动设备带来的威胁。
智能手机显然很受欢迎,大多数人也是按照预期使用它们。它们通常是个人所有且使用频繁的设备,要求某人放弃他们的设备是一种侵扰性的请求。由于这些原因,Android 设备和其他智能手机最终会出现在存放敏感信息的地点,而没有人表示关注。相反,如果有人带入了数码相机、录音设备、摄像机、外接硬盘或他们自己的网络设备,可能会引起一些注意。当然,Android 设备实际上在一个紧凑且看似无害的设备中集成了所有这些功能及更多。
数据存储
也许是利用 Android 设备窃取信息的最简单例子就是将其作为 USB 大容量存储设备使用。直到最近,智能手机的数据存储空间还非常有限。然而,随着 NAND 闪存的成熟,制造商意识到他们可以成本效益地制造出可以存储许多吉字节数据的设备。现在的 Android 设备可以在 NAND 闪存上轻松存储 8 到 16 GB 的数据,并且许多设备还包括一个外部 SD 卡,可以存储额外的 16 GB 或更多数据。
录音设备
Android 设备也完全有能力记录它们周围几乎任何东西。它们可以轻松地拍摄敏感设备或文件的图片。它们还可以录制视频,捕捉穿越建筑物的路径,包括沿途的声音、安全站、窗户、楼梯井以及其他感兴趣的项目。最后,Android 设备还可以被动地录制音频。所有这些都可以在不引起任何注意的情况下完成。
绕过网络控制
也许甚至更危险的功能是 Android 设备能够为计算机或具有无线功能的设备提供单独的网络连接。实现这一功能的方法有多种。在一种场景中,攻击者(可能是心怀不满的员工)可以将他们的 Android 设备连接到工作站。从表面上看,这并不会引起任何警觉,因为许多人工作时都会这样做以充电。然而,在 Android 设备和计算机上安装一个小程序后,将为计算机提供一个全新的网络连接。在这种情况下,从计算机路由出去并通过 Android 设备传输的流量完全不受环境控制。这个连接完全绕过了公司的防火墙、网络访问控制、数据丢失防护和其他安全控制措施。
最新的 Android 设备无需上述场景中的 USB 线和软件包。相反,Android 设备变成了一个完全功能的无线接入点,计算机可以通过它连接。这个场景同样有效地绕过了现有的网络安全控制,并且可以在将设备放在手提箱或口袋中时执行。
真正狡猾的技术
如果有人认为网络犯罪分子或其他攻击者不聪明、不具创造性,那么他们是在严重地判断失误。因此,让我们运用上述一些技术,跳出思维定势。
在这个场景中,攻击者是一家拥有重要商业机密和知识产权的公司的员工。(攻击者不一定需要在那里工作;然而,这使例子更简单。)许多可以访问这些信息的执行官也携带笔记本电脑和智能手机。这些执行官中的许多人在一家提供免费 Wi-Fi 的热门咖啡店喝咖啡。咖啡店的无线接入点名为“indigo”,由于他们不要求输入密码,接入点是开放的且未加密的。当执行官在咖啡店喝咖啡、用餐或开会时,他们会将智能手机和笔记本电脑连接到 Wi-Fi。
当他们回到办公室时,他们没有关闭智能手机和笔记本电脑上的无线功能。心怀不满的员工当然知道咖啡店的无线接入点,并决定在 Android 设备上启用接入点功能。自然,他在设备上拥有 root 权限,因此他还安装并运行了允许他捕获网络流量的软件。当一位高管靠近他的 Android 设备时,智能手机或笔记本电脑就会与他设置的接入点关联。然后,他能够拦截流量,捕获敏感文件和通信内容,或者可能捕获他可以用来访问关键网络资源的凭据。
尽管攻击者要实现这一场景必须克服一些障碍,但这是非常可能的,并且说明了当 Android 设备作为攻击载体时所呈现的独特风险。
安全考虑事项
安全与开发一样,是一门艺术。可能有人不同意这个说法,但那些人很少会阅读法医与安全方面的书籍。安全是一个艺术过程,因为艺术是“人类创造力的产物”以及“通过学习、实践和观察可以获得的高级技能”(WordNet Search, n.d.)。那么,这一切为何相关?成功的安全策略需要正确混合和平衡经验、判断、风险评估、创造力、观察、技能,甚至可能还需要一点运气。本节旨在介绍与 Android 和安全相关的一些广泛概念。
安全理念
安全几乎总是需要权衡的,即在攻击风险与缓解该风险的成本(财务或其他成本)之间进行权衡。理论上,一个完全安全的系统是可能的,但实际上几乎不可能实现,特别是当社会工程学攻击是可行的时候。即使安全专家控制了对设备的访问,包括物理和远程访问,确保一个系统的安全也是非常困难的。
移动设备比传统系统更难以保护。企业安全工程师对计算机系统的大部分控制措施在 Android 设备上不可能实现。首先,设备由一个庞大、复杂且多元化的参与者群体组装和维护的硬件和软件组成,包括核心 Android 团队、制造商的软硬件以及无线运营商的软硬件。此外,设备所有者有能力安装自定义应用程序,如果权限足够,甚至可以显著修改设备。最后,设备会穿越许多网络,没有一个可以完全信任。是的,保护移动设备是一个巨大的挑战。
尽管面临这些挑战,我们仍然可以在设备中设计一些安全控制措施。以下这个梗有助于总结整体的策略和理念:
如果你保护好了它,他们就不会来。
这个概念源自 1989 年环球影业的电影“梦幻球场”,其中有一个声音鼓励主角在他的爱荷华农场建造一个棒球场。电影中,这个声音反复说,“如果你建造了它,他就会来”(Ten, n.d.)。最终,主角确实建造了球场,实际上,神秘的客人也确实出现了。但完整的情节你还需要观看电影。
那么,这对移动安全有何影响?在理想情况下加密安全的系统与一个将所有信息以明文形式存储在良好组织和已知结构中的系统之间,存在着很大的差距,正如前面 com.android.email 的例子所描述的。由于移动设备面临许多不同的风险,即使是加密的数据也可能被攻破。然而,提供一定程度的混淆或加密将使攻击者攻破数据的过程变得复杂。尽管这种方法不是 100%安全,但攻击者往往实际并倾向于攻击容易获取的数据。
反对这种方法的观点之一是,一旦混淆或加密可以被攻破,它就会提供一个虚假的安全感,导致用户在认为他们的数据安全无懈可击的情况下,更随意地处理设备。而如果数据以明文存储,用户意识到风险,他们将更加谨慎地使用设备。
最终,移动设备的个人和企业消费者将通过他们的购买决策,引导移动安全生态系统向他们所重视的方向发展。这必然取决于教育。消费者必须充分了解数据安全风险和可能的解决方案。
有许多潜在的解决方案,虽然它们不能提供一个加密上安全的系统,但通过增加成功攻击的复杂性,确实提高了数据的安全性。以下列表说明了一些概念:
-
要求用户在设备重启后首次运行应用程序时输入密码,并且只在内存中存储密码。在这种情况下,密码不会以明文形式存储在设备上。然而,它在内存中,拥有足够设备权限的攻击者可能会恢复密码。
-
进一步,通过基于时间、伪随机数据等加密存储在内存中的密码,来加强上述概念。这样,攻击者现在必须拥有设备的 root 权限,而不仅仅是转储进程的内存,他们还必须找到加密密钥、加密密码以及组成密码的算法。
-
进一步地,内存密码可能会在一定时间后过期,或者内存中使用的加密密钥可能会更改。
-
如果密码存储在 NAND 闪存上,使用一个在设备重启后输入的密码短语对其进行加密。
尽管这些想法并不能提供一个完全安全的系统,但是要攻破数据所需付出的努力和权限比攻破以明文存储的敏感数据要高好几个数量级,因此这阻止了大多数攻击者。
美国联邦计算机犯罪法律和规定
美国有许多与静止数据和传输数据安全相关的联邦法律。本节的目标是简单列举几项较为相关的法律,并简要介绍它们。总共有超过 40 项联邦法规可用于起诉与计算机相关的犯罪行为([国家,不详])。此外,每个州通常都有针对计算机犯罪的法律和规定。
在联邦层面,美国司法部(DoJ)将计算机犯罪划分为三个不同的领域,其中两个领域与破坏移动设备时涉及的犯罪类型有广泛的应用。这两个领域是([国家,不详]):
-
直接针对计算机网络或设备的犯罪,包括黑客攻击、病毒、蠕虫、恶意软件、嗅探器等。
-
利用计算机网络或设备实施的犯罪,如欺诈、身份盗窃、企业间谍活动等。
计算机欺诈和滥用法(CFAA)专注于针对政府金融机构计算机或涉及州际或国际商务的计算机的攻击。该法案涵盖了狭窄的领域,如未经适当授权访问计算机以获取与国家安全问题相关的数据,以及更广泛的领域,如未经适当授权访问计算机以进行欺诈或获取有价值的东西。CFAA 经过国家信息基础设施保护法的修订,涵盖了新的滥用行为,并包括了那些打算犯罪的人。
电子通信隐私法(ECPA)是另一项涵盖计算机犯罪的法律,它规定未经授权截取存储或传输的电子通信是非法的。ECPA 包含几个关键领域:
• 在传输过程中的通信,包括口头、有线或电子通信(窃听)。
• 静止数据(存储通信法)保护存储在非易失性内存上的数据。
• 收集通信元数据,如电话号码、IP 地址以及其他用于路由通信(但不是消息本身)的数据。这被称为“笔式记录器和追踪设备”,指的是用于捕获信息的实际设备和技巧。
值得指出的是最后一项法律,即经济间谍法,该法于 1996 年通过,专注于商业秘密的盗窃。在法律实施之前,很难起诉经济或企业间谍活动。然而,通过定义商业秘密并要求信息所有者采取合理措施保护秘密,现在可以刑事化知识产权的盗窃。
本节只是简要触及了可以用于起诉计算机犯罪的大量法律工作。然而,应该清楚的是,有旨在保护传输中和静止状态下的数据的法律。
除了将计算机犯罪刑事化的联邦和州法律之外,许多监管机构还管理着在涉及敏感数据的行业中运营的公司。许多规定不仅提供了公司必须遵守的具体指导方针和要求,而且还规定了民事和刑事条款,包括经济处罚,在最为严重的情况下,甚至可能涉及监禁。一些较为知名的规定包括以下内容:
• 支付卡行业数据安全标准(PCI)
• 健康保险便携性与责任法案(HIPAA)
•HITECH 法案执行暂行最终规则(对 HIPAA 的补充)
• 联邦信息安全管理法案(FISMA)
• 1974 年家庭教育权利与隐私法案(FERPA)
• 1999 年 Gramm-Leach-Bliley 金融服务现代化法案(GLBA)
•萨班斯-奥克斯利法案(SOX)
显然,美国国会认识到了数据和计算机安全的重要性,并提供了一系列法律、法规和其他资源,以促使和强制执行成功运营对商业至关重要的系统所需的安全措施。
开源与闭源
网络上经常活跃地讨论开源软件是否比闭源软件更安全的问题。像许多长期存在的争论一样,每一方的坚定支持者都致力于他们的结论,争论仍在继续。
认为开源软件更安全的根本原因在于,可以检查代码中的缺陷并迅速修复。这种信念中隐含着两个假设:
-
开发人员将对开源项目进行安全代码审查。
-
软件的维护者将迅速修补安全漏洞。
当然,如果这两个步骤都没有采取,那么开源软件显然会包含安全漏洞,而且如果没有补丁,攻击者将准确获得他们利用漏洞所需的信息。然而,如果这两个步骤都得到了执行,那么代码的安全性将在众多人士检查代码及产生的补丁的好处下得到提升。
相比之下,闭源模式依赖于一个公司开发安全代码,彻底审查其代码中的安全漏洞,修补这些漏洞,并及时将更新分发给订阅者。对于任何负责保护运行微软 Windows 平台桌面的安全的人来说,他们都非常清楚每个月第二个星期二发布的连续不断的补丁流,这被称为“补丁星期二”。微软还会在预定补丁星期二之外发布针对严重漏洞的补丁。
在一个相当高调的发现中,微软承认(微软安全公告,未标明日期),安全研究员 Tavis Ormandy 在自 1993 年以来的每个 32 位版本的 Microsoft Windows 中都发现了一个 17 岁的安全漏洞(从 Windows NT 到 Windows 7。Johnston,未标明日期)。Ormandy 在通知微软该漏洞的六个月后,于 2009 年 6 月 12 日将漏洞利用的详细信息发布到了 Full Disclosure 邮件列表中([Full-disclosure] Microsoft,未标明日期)。值得注意的是,在 Ormandy 发布披露信息之后,微软才向客户发布了官方公告,并在那之后的一天内承认了这一安全漏洞。
在另一个最近的例子中,安全公司 Matta Consulting 在 Cisco System 的统一视频会议平台上发现了许多关键安全漏洞。这些漏洞使得恶意第三方能够完全控制设备,获取用户密码,并可能对目标基础设施的其他部分发起攻击(Cisco Unified Video,未标明日期)。Cisco 在其公告中承认了这些漏洞,其中硬编码的密码代表了最令人担忧的漏洞:
Linux 阴影密码文件包含三个硬编码的用户名和密码。这些密码无法更改,账户也无法删除。攻击者可以利用这些账户通过允许的远程访问协议远程访问设备。
(Cisco 安全公告,未标明日期)
最终,软件开发是一项创造性的事业,尽管尽最大的努力和意图,软件或系统很可能仍会存在缺陷。软件或系统的整体安全性直接与发现和解决缺陷的速度相关。尽管大卫·A·惠勒的“Linux 和 Unix 安全编程指南”已有八年之久(从安全的角度来看这是一段很长的时间),但它对这场辩论的概述非常出色,并代表了双方的观点。他引用了 Elias Levy(又名 Aleph One,Bugtraq 完全披露列表的版主,同时也是 SecurityFocus 的首席技术官和联合创始人)的话说:
那么,所有这一切是否意味着开源软件在安全漏洞方面并不比闭源软件好呢?不是的。开源软件确实有可能比其闭源对手更安全。但不要误以为,仅仅因为是开源就能保证安全。
(安全编程,未标明日期)
在他的 HOWTO 的最后,惠勒总结说,如果以下情况发生,开源软件可以更加安全:
如果代码先闭源后开源,它起初的安全性可能会较低,但随着时间的推移将会得到改善。
• 人们必须审阅代码。
• 审阅者和开发者必须知道如何编写安全的代码。
• 一旦发现缺陷,就必须迅速修复并分发。
最终,每个人将不得不决定他们认为开源软件还是闭源软件更安全。由于 Android 系统的很大一部分确实是开源的,因此该软件最初可能会发现许多缺陷,但随着时间的推移,它们将被解决,从而使得系统更加安全。
加密 NAND 闪存
通常来说,用于保护传输中数据的技术和策略比用于保护静止存储数据的技术更为成熟、经过验证且安全。数据在传输中更容易得到保护的原因是因为必须保护信息的时间是短且明确的。数据在传输完成后,保护数据的密钥可以被丢弃。相比之下,静止数据是非易失性的,且必须随时可供用户访问。这意味着解密密钥必须在设备上可用(或者用户每次都必须输入,这实际上是不切实际的),因此它们可以被攻击者访问。
受尊敬的安全技术专家、密码学家和作家布鲁斯·施奈尔总结了使用加密保护静止数据的困难:
密码学是为了保护通信而发明的:即运动中的数据。这是密码学在历史上大部分时间内的使用方式,也是世界各国的军队发展该科学的方式。Alice 是发送者,Bob 是接收者,Eve 是窃听者。即使当密码学被用于保护存储的数据——静止数据时,它也被视为一种通信形式。在我的《应用密码学》一书中,我这样描述加密存储数据:“存储的消息是某人通过时间与自己通信的一种方式。”数据存储只是数据通信的一个子集。
在现代网络中,这种差异更为深刻。通信是即时和瞬时的。加密密钥可以是短暂的,像 STU-III 电话这样的系统可以设计成在通话开始时创建加密密钥,并在通话结束后立即销毁。而数据存储则是随时间发生的。任何加密密钥都必须与加密数据一样长存。存储这些密钥变得与存储未加密数据一样重要。在某种程度上,加密并没有减少必须安全存储的秘密数量;它只是使它们变得更小。
历史上,之所以能够对存储的数据进行密钥管理,是因为密钥可以被存储在一个安全的地方:人类的大脑。人们会记住密钥,除非人们本身受到物理和情感攻击,否则不会泄露密钥。在某种意义上,这些密钥被存储在一个未连接到任何网络的“计算机”中。在那里它们是安全的。
这个整个模型在互联网上崩溃了。互联网上存储的大部分数据只是间接打算供人使用;它主要是供其他计算机使用的。问题就在这里。密钥不能再存储在人们的大脑中。它们需要存储在存储数据的同一台计算机上,或者至少是网络上。这样风险要大得多。
(Schneier on, n.d.)
其他几个平台,特别是苹果 iPhone 的后期型号,在 NAND 闪存的用户部分实施了加密。然而,在苹果 iOS 3.x 版本的情况下,由于前面提到的原因,加密很快就被突破了。截至 2011 年 3 月,iOS 4.x 的加密尚未被破解。然而,随着时间的推移,这种情况很可能会发生。
针对加密 NAND 闪存的取证策略与未加密的有所不同。如果 NAND 闪存未加密,内存可以通过芯片脱焊或 JTAG 过程物理读取,然后再解码。然而,对于加密的 NAND 闪存,这种技术将不再有效。相反,要在设备运行时提取未加密数据,这个过程在设备上执行。在取证中,这被称为活体获取,并用于其他场景,例如加密硬盘或其他存储设备内容的工作站或服务器。
加密将在保护传输中和静止状态下的数据方面发挥越来越重要的作用。然而,静止状态下的数据几乎总是容易受到攻击。在这种情况下,安全设计师必须在加密安全系统与提供很少保护的系统之间找到平衡。这种妥协将导致一个在不妨碍用户使用设备的前提下,提供合理保护静止和传输中数据的系统。
个体安全策略
尽管这一章的大部分内容集中在移动设备和数据安全问题上,但用户的一些做法可以最小化被破坏的风险。像以前一样,这个列表并不是打算做到面面俱到。相反,它提供了一个保护设备安全的基础。
-
始终使用您信任的数据网络。对于移动设备来说,这可能包括您的无线运营商的数据网络或在工作、家庭或其他可信任地点的 Wi-Fi 接入点。这确保了用于传输敏感数据的网络不是恶意的,也不会被攻击者用来损害您的敏感数据。尽管运营商的网络可能被攻破,但在大型公司中的安全性要远高于小型数据网络。此外,虽然建立一个恶意的 Wi-Fi 接入点很容易,但实施恶意的蜂窝数据连接要困难得多。因此,总的来说,无线运营商提供的蜂窝数据连接降低了遭受攻击的风险。
-
应始终在 Android 设备上设置密码,以阻止随意攻击者获取你敏感数据的访问权限。理想情况下,如果输入的密码错误次数超过设定值,Android 设备应执行用户数据的完全擦除。这样攻击者就无法通过暴力破解来破解你的密码。此外,如果可能,使用字母数字密码选项而不要使用四位数的数字 PIN 码或图案锁。字母数字密码通过允许更复杂的密码提供了更高的安全性。将设备上的密码视为类似于你电脑上的密码。很难想象(或许仅对于安全研究人员来说)会有人拥有没有密码的电脑。
-
访问
viaforensics.com/appwatchdog/
检查免费的 appWatchdog 服务,以确定你使用的应用程序是否通过了基本的安全测试。appWatchdog 审计移动应用,以确定它们是否安全地存储了你的用户名、密码和敏感的应用数据。该网站为每个测试区域提供通过、警告或失败的检测结果以及恢复的信息详情。目前,正在开发一个可以直接安装在 Android(或 iPhone)设备上的 appWatchdog 移动应用版本,以确定已安装应用的审计状态。它还将允许用户直接联系应用开发者,请求解决审计问题以及其他通知选项。 -
绝不要点击短信中的链接,理想情况下也应避免点击电子邮件中的链接,尤其是像 bit.ly 或 goo.gl 这样的缩短链接。根据安全公司 Trusteer 的研究,智能手机和平板电脑用户比传统 PC 和笔记本电脑用户更容易受到电子邮件网络钓鱼诈骗的影响三倍(Donohue, n.d.)。研究发现,由于屏幕尺寸较小和缺乏保护用户免受钓鱼诈骗的软件,从智能手机上识别欺诈网站更加困难。确保访问有效网站的最佳方法是手动输入,或者(或许更好的方法)允许一个可信赖的搜索引擎代表你找到网站。这样用户可以输入(或误输)公司名称,并允许搜索引擎找到适当的网站。一些搜索引擎,如谷歌,现在试图阻止恶意或受损的网站,这为智能手机用户提供了额外的保护层。
-
考虑在你的 Android 设备上使用替代的网页浏览器。如前所述,网络犯罪分子是务实的,这就是为什么多年来他们一直专注于攻击 Microsoft Windows,而基本忽略了像 Linux 和 Mac 这样的操作系统。在移动环境中,许多捆绑的浏览器基于开源的 WebKit 项目。因此,针对 Android 和其他智能手机设备的初始网络攻击可能会集中在使用 WebKit 的浏览器上。通过使用替代浏览器,你可能会发现针对你平台的攻击少得多。然而,这可能只提供名义上和暂时的安全性提升。
-
从 Android Market 安装应用程序时,请确保应用程序只被授予其运行所必需的权限。如果你在安装一个增强型闹钟应用,而它请求访问你的短信和网页历史数据,你不应该授予它权限。尽管这不能保护你免受所有恶意应用程序的影响,但这对于 Android 的安全来说是一个重要的层次,用户必须承担起这个责任。
随着时间的推移,这个列表不仅会增长和演变,而且希望会引入新的安全控制措施,这将有助于保护移动设备和敏感数据。
企业安全策略
企业通常具有比个人更复杂的安全要求,因为它们需要保护整个公司免受内部和外部攻击的影响。此外,它们可能属于受监管的行业,需要按照本章前面列出的一些指导方针进行操作。基于这些原因,需要对资产进行更细致的控制,包括移动设备。
政策
在企业中,移动设备管理的一个重要方面是仔细评估现有政策,并确保针对移动设备带来的新情况对它们进行更新。大多数政策没有考虑到智能手机和平板电脑以及通过它们使用可能出现的状况。尽管需要对公司政策进行全面审查,但至少有几个政策肯定需要关注。它们包括以下内容:
• 可接受的使用(对公司资源,现在包括移动设备)
• 数据安全(显然需要围绕移动设备制定政策)
• 备份和数据保留(可能会受到影响,尤其是在电子发现的角度)
虽然更新政策并不能直接通过信息技术提高安全性,但它为员工、安全架构师以及参与内部调查和纪律的人员提供了关键指导。如果你有一项过时的政策,它可能会被用来对你不利。例如,如果你的可接受使用政策只是在受保护资源的描述中简单加入了移动设备,那么所有允许公司调查他们所拥有设备的规定现在都被明确规定了。否则,在激烈的法庭斗争中,对方律师很可能会主张移动设备并未被政策覆盖,因此设备上发现的证据(例如公司机密文件)不可采纳。虽然你的法律团队可能会反驳这一论点,但简单地更新政策以包括移动设备要便宜得多且更有效。
密码/图案/PIN 锁
安卓设备上的密码、图案和 PIN 锁并未得到一致且有效的实施,但它们确实提供了一定程度的保护。这些功能自首次出现以来已经有所改进,并且预计随着时间的推移将继续得到改进。随着处理能力的指数级增长和成本的同步降低,使用暴力破解技术来破解保护机制变得可行且每年越来越常见。然而,如果设备丢失或被盗,这些基本保护措施对于非技术型犯罪分子是有效的。
并非所有的密码都是平等的。最有效的密码是允许或要求使用字母数字组合的密码。尽管用户输入这些密码要麻烦得多,但它大大增加了破解密码所需的努力。接下来最有效的密码是在第一部安卓设备中出现并在许多后续设备中继续使用的图案锁。图案技术引入了一种新的锁定设备的方法,因此要求用户学习新技术,从而实现了更有效的锁定。用户不得不放弃重用旧方法(如 PIN),而想出一个新图案,因此攻击者很难利用个人信息来猜测图案锁。或许因为熟悉,许多安卓设备也包含了久经考验的 PIN 锁。虽然使用 PIN 锁比不锁手机要好,但 PIN 锁可能是最容易被破解的锁。它们通常有有限的数字位数(四个是最常见的),这危险地限制了总的组合数量。此外,PIN 锁已被用于保护许多其他系统,最著名的是自动柜员机(ATM)卡。人们倾向于重复使用 PIN 码,并且基于容易发现的个人信息来设置 PIN 码。
如前一部分个人策略所建议的,密码锁应该设置一个最大尝试次数,超过该次数后设备应执行工厂重置并对用户数据分区进行完全擦除。这将防止对更容易被破解的密码(例如,四位数的 PIN 码)进行暴力破解攻击,并提供额外的安全层。
设备的远程擦除
企业安全经理们最希望智能手机具备的安全功能之一是远程擦除设备的能力。毫无疑问,这一功能极其重要且强大。然而,这是一个非常脆弱的功能,它给安全经理们带来的信心可能过于高估了。
远程擦除背后的基本原理是公司可以向设备发出命令,使其擦除所有数据并执行工厂重置。许多智能手机平台正在其系统中构建钩子以允许这种控制。然而,这些功能并非从一开始就设计好,目前还不足以确保高安全性。
即使远程擦除钩子存在且有效,只需使用飞行模式、移除 SIM 卡或其他类似技巧,就可以轻松阻止远程擦除命令。实际上,一些公司可能首先禁用被解雇员工的手机账户,然后发送远程擦除命令。在大多数情况下,他们可能无意中移除了远程擦除设备的能力。尽管设备不再连接到网络,但仍然可以完全访问数据。对于有 root 权限的设备所有者来说,他们也可能研究过滤此类请求,简单地忽略它们。然而,最大的问题仅仅是远程擦除功能还不够成熟。
在摩托罗拉 Droid 手机的 Android 2.1 版本中,使用微软的 Exchange ActiveSync 触发的远程擦除功能并没有导致设备擦除数据。然而,在同样的功能在 Android 2.2 版本中测试时,远程擦除确实发生了。如果你依赖远程擦除功能来保障数据安全,你需要确保该远程擦除功能在安装了每个 Android 版本的每个 Android 硬件平台上都能正常工作。不幸的是,对于大多数 IT 部门来说,这是一项艰巨的任务,因为设备分布广泛且没有一个良好的中央管理工具(关于这一点稍后会详述)。
一种相当简单的技术,可以克服远程擦除的限制,就是在设备上安装一个应用程序,如果设备在特定时间后无法与企业系统检查联系,该程序将自动擦除设备。使用这种技术(通常称为看门狗或倒计时应用程序),可以显著提高数据安全性,因为如果设备在多次尝试后仍无法连接到企业系统,它将自动擦除。因此,即使设备离线,安全管理人员也可以确保所有企业数据在特定时间框架内被擦除。当然,如果用户因正当理由长时间将手机从网络中断开,这将导致手机被擦除,因此对这一功能进行用户教育非常重要。目前,支持此功能的应用程序非常少(如果有的话)。
另外还有一种技术,针对的是 NAND 闪存上的数据。可以开发一个应用程序(实际上已经有一些存在),定期擦除设备用户数据存储分区中未使用(未分配)的空间。这样做的好处是,(大多数)删除的数据将不再可恢复,即使进行物理镜像也是如此。这种擦除可以通过让应用程序简单地写入一个充满 0xFF 的文件,直到分区填满来实现。在那时,删除文件,从而覆盖了分配的空间。当然,这样的程序可能会带来很多副作用,包括缩短 NAND 闪存的寿命,在写入文件时导致设备响应缓慢,耗尽电池,或者如果其他应用程序在分区完全填满时尝试访问分区,可能会导致这些应用程序崩溃或丢失数据。
升级到最新软件
尽管智能手机市场创新迅速,但企业升级核心基础设施(如 Microsoft Exchange 环境)要困难得多。然而,最后两个版本的 Microsoft Exchange 提供了增强的移动管理和安全机制。当 Exchange 升级到最新版本(目前是 Exchange 2010)时,会有更多选项来安全地管理您的设备。确保企业基础设施保持最新,不仅会提高可管理性,也会提升连接的移动设备整体的安全性。
同样,移动设备本身也应该在可用时应用更新。虽然在某些情况下可能会引入新的错误或安全漏洞,但总体而言,更新后的软件不仅会修补之前发现的缺陷,还会增加额外的管理和安全功能。上面远程擦除部分提到的例子就很好地说明了这一点,因为摩托罗拉 Droid 上的 Android 2.1 并没有正确执行远程擦除命令,而 Android 2.2 则可以。
远程设备管理功能
企业客户对于管理连接到其基础设施的移动设备的需求日益增长。尽管不同公司的功能列表会有所不同,但一个通用的需求列表可能包括以下内容:
• 远程配置设备
• 远程擦除设备
• 强制执行 IT 政策,如密码、加密、最低操作系统版本、升级政策、允许/禁止的应用程序等
• 远程安装/升级应用
自从 Android 2.2 开始,引入了新的设备管理应用程序编程接口(API)。它们包括应用程序整合前面提到的策略管理类型的能力。具体来说,它们支持(设备管理,n.d.)以下能力。
• 启用密码:要求设备请求 PIN 码或密码。
• 最小密码长度:设置密码所需字符数。例如,你可以要求 PIN 码或密码至少有六个字符。
• 需要字母数字密码:要求密码必须包含字母和数字的组合。可能包括符号字符。
• 最大失败密码尝试次数:指定用户在设备擦除数据前可以输入错误密码的次数。设备管理 API 还允许管理员远程将设备重置为出厂设置。这样可以在设备丢失或被盗的情况下保护数据。
• 最大不活动时间锁定:设置用户上次触摸屏幕或按下按钮后,设备锁定屏幕的时间长度。发生这种情况时,用户需要再次输入他们的 PIN 码或密码才能使用设备并访问数据。该值可以在 1 到 60 分钟之间。
• 提示用户设置新密码。
• 立即锁定设备。
• 擦除设备数据(即,将设备恢复到出厂默认状态)。
在developer.android.com的设备管理页面(设备管理,n.d.),演示了此 API 的几个示例,如图 5.2 所示。
图 5.2 设备管理 API 示例。
当用户安装一个使用新管理 API 的应用程序时,他们会看到一个“启用设备管理员”的屏幕,如图 5.3 所示。
图 5.3 启用设备管理员。
尽管这比没有设备管理有所改进,但它远远不能满足企业客户的需求和要求。此外,尽管 API 存在,但开发者必须将它们整合到他们的应用中。
几家公司正在尝试填补全功能设备管理的空白。然而,针对智能手机的解决方案也仍然相当不成熟。投资第三方解决方案可能满足短期需求。然而,随着时间的推移,Android、制造商和设备开发者将开发更复杂的管理功能和工具。同样,许多企业设备使用微软的 Exchange ActiveSync(EAS)协议与电子邮件系统同步,这个平台的管理功能也在不断成熟。因此,如果迫切需要更好的远程设备管理以提高安全性,企业可以考虑实施第三方工具以逐步提高安全性。然而,存在这样的风险:这些工具可能无法满足或超过制造商的工具,从而使得技术和人员的投资可能不值得。
由于移动设备上的企业数据大多围绕电子邮件,因此在这个领域集中安全努力可以取得良好效果。一些公司已经认识到这一需求,并开发了自己的电子邮件客户端,这些客户端实施包括双因素认证、加密数据存储和额外的管理界面在内的一系列附加安全机制。然而,注重安全的实体应该审计这些软件,以确保它们实际上实现了所声称的功能。
显然,远程设备管理对企业客户来说非常重要,尽管这些功能的支持还不够成熟,但预计在接下来几个 Android 版本中会有显著的改进。
应用程序和设备审计
如果你不完全了解哪些信息处于风险之中,就很难保护移动设备和其数据。企业可以启动移动安全和风险缓解审计,以评估移动设备上暴露的数据。通过分析公司实际使用的设备和操作系统,可以确定存储了哪些数据,数据可能在哪些地方处于风险中(在设备上、传输过程中、备份中等),并创建具体的策略、程序,甚至软件实施来最小化风险。
一个典型的审计可以包括评估许多标准,包括
• 可能存储在设备上的企业数据类型
• 数据存储的位置
• 可以安装哪些其他应用程序,以及它们可以访问企业数据
• 远程擦除和设备管理的有效性/能力
• 实施企业安全策略的能力
• 密码、认证信息和其他敏感数据的安全存储和传输
• 加密的有效性
一旦支持设备被充分理解,保护静止和传输中的数据任务就不再那么令人畏惧,可以制定具体策略来最小化不可接受的风险。
与信息安全的其他领域一样,需要策略和持续的过程来维持适当的安全措施和评估风险。
应用开发安全策略
对于移动安全来说,一个极其重要的最后领域是开发并安装的应用程序。这不仅包括第三方应用程序,还包括操作系统开发者(在这种情况下是 Android)、设备制造商和无线运营商分发的应用程序。应用程序是用户与其移动设备交互以访问他们感兴趣信息的主要机制。通常这些信息是敏感的,并且提供了关于用户的私人细节。
移动应用程序安全测试
在进行取证工作的过程中发现了许多移动应用程序的安全漏洞,作者和 viaForensics 的同事们开始对流行应用程序的数据安全性进行审计,并在我们的网站上公开披露他们的发现。名为 appWatchdog 的免费公共服务的目标是提高移动应用程序数据安全性,保护消费者。随着消费者对数据安全风险意识的提高,将鼓励开发者在发布前彻底审查他们的应用程序,并达到更高的安全水平。调查结果可以在viaforensics.com/appwatchdog/
查看。viaForensics 计划发布一个移动应用程序,该程序将检查 Android 设备上安装的应用程序,并提供已审计应用程序的 appWatchdog 结果。它还将允许消费者建议审查某个应用程序,并在有疑虑时联系应用程序开发者。
appWatchdog 服务采用取证和安全评估技术来确定用户名、密码、信用卡号码或其他应用数据是否被不安全地存储。该过程包括安装应用程序,并以消费者使用该应用的方式运行它。然后对设备进行取证成像和分析,以获取个人信息和应用数据。首先将调查结果通知应用开发者,然后公开披露,以便直接向消费者提供此信息。用户可以据此做出是否继续使用该应用的明智决定,或者等待开发者发布更安全的版本。
每个应用程序都根据特定标准进行审查,这些标准取决于应用程序的具体用途。例如,对于移动支付应用,将分析用户名、密码、应用数据和信用卡号码。然而,对于其他应用程序,信用卡号码可能并不相关。以下标准将详细解释,其中前三项最适用于大多数应用程序:
• 是否安全存储密码? 如果设备上以任何形式未加密存储密码,该应用程序将被评为“不合格”。
• 安全存储用户名? 检查应用程序数据以确定用户名是否未加密存储在设备上。
• 安全存储应用程序数据? 分析每个应用程序以查找与应用相关的数据。例如,金融应用会被搜索账户号码、余额和转账信息。其他应用程序可能会存储额外的个人信息,如电子邮件地址、电话号码或地址。
• 安全存储信用卡信息? 对于处理信用卡信息的应用程序,将检查数据以确定设备上是否未加密存储了完整的信用卡号码以及与信用卡相关的任何支持数据,如有效期或卡片背面的安全号码。
• 附加安全测试: 这些测试可能包括捕获移动设备发送的无线数据,并检查该流量中是否包含用户名、密码、PIN 码以及其他相关的应用程序数据。附加安全测试通常更耗时,因此只在深入的应用程序安全审查中执行。
appWatchdog 服务仅提供了一种基本指示,用以判断移动应用是否实现了安全措施。通过结合先进的移动取证和安全技术,对移动应用程序进行更深入的分析是可能的。以下列出的是一些应评估的标准,用以确定移动应用程序是否安全。
• 应用程序如何处理网页历史和缓存?
• 应用程序是否安全传输登录数据?
• 应用程序是否能够避免中间人攻击?
• 应用程序是否安全传输敏感数据?
• 应用程序是否能够防止会话劫持?
• 应用程序是否能够永久删除数据并阻止在设备上存储?
• 应用程序是否安全处理中断?
• 应用程序是否在备份中正确保护数据?
彻底的应用程序安全审计利用先进的取证和安全测试来揭示安全漏洞,保护开发者和用户。viaForensics 提供这些测试服务以及一个名为 appSecure 的认证。只要内部取证和安全团队拥有工具、专业知识、预算和时间来执行测试,他们可以有效地应用类似的测试方法。
应用安全策略
appWatchdog 和 appSecure 的结果导致了一些移动应用开发者应该考虑的一般性指南,这些指南涉及应用的设计、开发和测试阶段。这个列表和其他列表一样,并不一定详尽无遗,但提供了一些值得考虑的重要概念。
用户名
避免在设备上以明文形式存储用户名。出于明显的可用性问题,你可能会决定在设备上缓存用户名,以便消费者不必每次都输入。但是,考虑对用户名的一部分进行掩码处理,为消费者提供足够的信息以识别他们的用户名,但不足以让攻击者获得整个用户名。用户名是登录账户所需的组成部分之一,攻击者知道得越少,他们就越无效。
例如,假设有一个访问敏感健康信息的应用程序需要用户名。消费者创建了一个名为“andrewhoog”的用户名。但是,在初次登录后,如果应用程序只存储“andr∗∗∗∗”并显示给用户,那么用户可以清楚地知道他们登录的是正确的账户。然而,攻击者可能只能获取前四个字符。此外,如果掩码(在这种情况下使用“∗”,但也可以以其他方式呈现)没有透露出用户名的总长度,这将使攻击者更难以猜测。
最后,越来越多的在线服务要求更复杂的用户名,必须具有一定长度且为字母数字组合。因此,一个用户名“andrewhoog”可能相对容易猜测,而“AndrewHoog6712”则要困难得多。一些网站甚至可能对用户名施加更多限制,比如不能包含你基本资料信息(如你的名字)的任何部分。
密码
也许更令人担忧的是那些将密码以明文形式存储的应用程序。有几种策略可以避免这个严重的问题。首先,如“安全哲学”一节所述,你可以简单地要求用户每次运行应用程序时都输入密码。如果你考虑从家里电脑登录银行网站的情况,每次都必须登录。虽然你可以在当前会话中保持登录状态,但在一定时间的非活动期过后(或者你登出),如果没有重新输入用户名和密码,你就无法访问受保护的网站。
另一个可以考虑的方法是使用安全令牌来避免在移动设备上存储真实密码。如果用户安全地通过互联网认证到受保护的资源,可以生成一个安全令牌,该令牌不仅会在一定时间后过期,而且仅限于该设备。尽管拥有物理访问手机的人可以访问受保护的资源,但这仅持续到令牌过期为止,届时他们需要再次输入用户名和密码。此外,如果安全令牌特定于设备并且远程受到威胁,令牌将无法访问受限资源。使用安全令牌方法的技术也不会将互联网上的任何其他受保护资源置于风险之中,即使账户持有人使用相同的用户名和密码(这是相当常见的)。
实现基于令牌的认证方案比简单的用户名和密码更为复杂,这是一种开发者不太广泛使用或理解的 方法论。然而,许多提供此功能的 API 已经可用并日趋成熟。一个名为 OAuth 的框架得到了许多 Google 服务的支持。还有其他 API,但它们往往专注于特定服务。OAuth 网站描述了与其他服务的相似性和联系:
OAuth 是许多成熟行业协议的标准化和集体智慧的结晶。它与目前使用的其他协议(如 Google AuthSub、AOL OpenAuth、Yahoo BBAuth、Upcoming API、Flickr API、Amazon Web Services API 等)相似。每种协议都提供了一种专有的方法,用于交换用户凭证以获取访问令牌或票据。OAuth 是在仔细研究这些协议后,提取最佳实践和共性,以便新实现以及现有服务平滑过渡支持 OAuth。
OAuth 比其他一些协议和服务在处理非网站服务方面更为先进。OAuth 内置了对桌面应用程序、移动设备、机顶盒以及当然还有网站的支持。今天许多协议使用硬编码在软件中的共享密钥进行通信,当尝试访问你的私人数据的服务是开源的时候,这会带来问题。
(Introduction—OAuthn, n.d.)
由于 Google 正在向 OAuth 过渡,他们提供了关于 API 以及如何使用的详细信息。在 Google Code 网站上,他们提供了以下关于 OAuth 过程的基本概述(Default, n.d.):
-
你的应用程序请求访问,并从 Google 的授权服务器获取一个未经授权的请求令牌。
-
Google 要求用户授权你的应用程序访问所需数据。
-
你的应用程序从授权服务器获取一个经过授权的请求令牌。
-
你用经过授权的请求令牌交换访问令牌。
-
你使用访问令牌从 Google 的服务访问服务器请求数据。
如你所见,实际的用户名和密码只发送到授权服务(在本例中为 Google),并且不会存储或与请求的应用程序共享。请求的应用程序通过协商过程获得各种令牌,并需要存储最终的访问令牌,但时间和范围都是有限的。
尽管典型的 OAuth 场景允许第三方服务(例如社交媒体网站)在时间和范围限制内,基于令牌对受保护信息(例如,你的 Gmail 联系人列表)进行认证,但有趣的是指出应用开发者可以使用 OAuth 服务对自己进行认证。采用这种方法,应用开发者不仅以标准化的方式提供安全的、基于令牌的服务访问,而且现在他们拥有允许经过批准的第三方应用访问数据的基础设施,前提是账户所有者授权访问。
有许多不同的方案和技术可以用来安全地认证用户,这些用户不需要移动应用在移动设备上以明文形式存储用户名和密码。应用开发者必须转向这些更安全的方法,以更好地保护他们的客户。
信用卡数据
安全行业的多数人都熟悉支付卡行业(PCI)数据安全标准(DSS),它为保护信用卡数据提供了标准。在 PCI 安全标准委员会(SSC)成立之前,主要的信用卡供应商都有自己的信用卡数据保护标准。2006 年,以下支付品牌发起了 PCI SSC:
• 美国运通
• 发现金融服务
• JCB 国际
• 万事达卡全球
• Visa 公司
这些品牌在减少支付卡行业的欺诈行为方面有着既得利益。在 2010 年 10 月发布的 2.0 版“要求和安全评估程序”文件中,列出了 PCI DSS 的具体要求。以下是一小部分要求示例,涵盖了在移动应用中使用信用卡数据的情况(文档库,未注明日期)。
• 3.2 授权后不要存储敏感认证数据(即使已加密)。敏感认证数据包括 3.2.1 至 3.2.3 要求中引用的数据。
• 3.2.1 不要存储任何磁道(位于卡片背面的磁条,芯片中包含的等效数据或其他地方)的完整内容。这些数据也可以称为全磁道、磁道、磁道 1、磁道 2 和磁条数据。
• 3.2.2 不要存储用于验证非现场交易(卡不在场交易)的卡片验证码或值(打印在支付卡正面或背面的三位数或四位数)。
• 3.2.3 不要存储个人识别号码(PIN)或加密的 PIN 块。
• 3.3 显示时遮蔽 PAN(最多显示前六位和最后四位数字)。
• 3.4.1 如果使用磁盘加密(而不是文件或列级别的数据库加密),逻辑访问必须独立于本地操作系统访问控制机制进行管理(例如,不使用本地用户账户数据库)。解密密钥不得与用户账户绑定。
尽管 PCI DSS 并非没有受到批评,但它是一个相当成熟的标准,旨在保护数量惊人的金融交易。有趣的是,可以比较 PCI DSS 随时间发展起来的某些标准,如要求加密,限制存储敏感信息,以及在屏幕显示时屏蔽敏感信息。
无需多言,在移动设备上以明文形式存储信用卡信息不仅违反了 PCI DSS 标准,而且在设备受到威胁时也会使卡主面临极大风险。或许不足为奇,上面提到的 appWatchdog 服务会检查是否以明文形式存储信用卡数据,不幸的是,在一些应用程序中发现了这些信息。
如果一个应用程序需要处理支付,建议与成熟的在线服务如 PayPal 和 Google Checkout 集成,或者与支付提供商合作实现安全的支付应用程序。请注意,这是一个重大的任务,不仅从开发和测试的角度来看是这样,还需要进行持续的安全审计过程。
敏感应用程序数据
许多移动应用程序包含消费者不希望失去控制的敏感数据。数据有不同的级别。以下是一个旨在说明级别的简单列表:
-
不含敏感用户数据——例如,计算器应用程序不包含任何敏感用户数据。
-
不含敏感用户数据但可能包含一些元数据——例如,天气应用程序不包含任何敏感用户数据;然而,它可能包含应用程序运行时的 GPS 坐标和日期/时间戳。
-
包含用户数据但不是敏感的——一些应用程序旨在供公众使用,如人们在 Twitter 上分享的信息。如果用户知道他或她的所有 Twitter 消息都可以被全世界阅读,大多数人(除了那些保护自己消息的人)不会感到担忧。
-
包含敏感用户数据——许多应用程序属于这一类,包含敏感用户数据,如您的完整电子邮件消息、短信和彩信、语音邮件、通话记录等等。
-
高度敏感的用户数据——这是一个特殊级别,涵盖包含财务信息、医疗保健信息、密码保险库以及其他如果其安全性受到威胁会使消费者面临极大风险的应用程序。
识别应用程序包含的数据敏感性有助于提供适当级别的安全保护。如果一个计算器应用程序需要双因素认证和 AES-256 加密,用户显然会感到烦恼,可能会尝试在纸上计算 15%的小费(一旦写下,它将面临多种物理和社会工程攻击的风险,但这只是题外话)。
然而,appWatchdog 服务经常发现包含第 4 和第 5 级别敏感数据的应用程序,这些数据以明文形式存储在 NAND 闪存上。如果你开发的程序包含此级别的敏感数据,你应该以某种安全级别来保护这些数据。有许多选项包括……(此处原文未提供后续内容,故无法翻译后续部分)
-
不要存储数据——这是最简单的做法,可以缓解任何授予访问 NAND 闪存的攻击。如前所述,用于保护传输中数据的加密算法比任何保护静态数据的方法(至少在移动设备上)都更有效。大多数移动设备与互联网高度连接,因此无需缓存数据。当然,缓存数据也有其优势,包括即使设备离线也能提供访问,以及提高应用程序响应性。
-
加密数据——如前所述,在移动设备上对静态数据进行加密需要将密钥也存储在设备上,因此它不能提供完美的安全性。然而,如果密钥足够难以找到,它提供的保护级别比明文要高得多。此外,随着针对移动设备的远程攻击增加,它们可能获得对 NAND 闪存的访问,但无法访问存储加密密钥的其他区域,如内存。如果数据是明文,它们将处于风险之中;而如果数据被加密,在这种情况下消费者将得到保护。
保护敏感数据对于保护消费者至关重要,行业必须成熟并考虑将此作为应用程序的要求。
SSL/TLS
最后一个需要讨论的领域是安全套接字层(SSL)和传输层安全(TLS)的实施,它们保护传输中的数据。应用程序开发人员正确实施 SSL/TLS 至关重要,包括对数字证书进行完全验证,以防止 MITM 攻击。尽管 SSL/TLS 在保护传输中的数据方面很有效,但如果没有正确实施,它会让用户面临极高的攻击风险。在为 appWatchdog 服务测试应用程序时,测试攻击机器通常会显示不在范围内的应用程序的用户名和密码,因为它会自动执行(即,一些应用程序会定期登录以检查新消息)并遭受妥协。
除了确保在移动应用程序中正确实施和验证 SSL/TLS 之外,SSL/TLS 还必须在服务器上安全配置。自 20 世纪 90 年代以来,SSL 就已经可用,用于在不可信网络上保护数据传输。早期 SSL 的实现包含了一些必须解决的安全缺陷,以确保安全传输。随着时间的推移,算法得到了改进,以降低暴力攻击的风险。这项技术的最新版本被称为 TLS,通常与 SSL 以相同的方式工作,因此许多人仍然简单地将两者都称为 SSL。
一个普遍问题是,负责在服务器上实施 SSL/TLS 的人员不一定是安全工程师,因此他们倾向于关注服务器基础设施。他们可能会实施并测试 SSL/TLS,表面上看起来很安全;但是,可能存在漏洞。例如,MD5 是一种广泛使用了超过 10 年的常见加密算法。尽管仍然被认为在文件完整性检查等应用中有用,但权威机构已将其从保护通信的使用中退役。美国国土安全部 CERT 小组在漏洞注释 #836068 中指出:“软件开发者、认证机构、网站所有者和用户应避免在任何情况下使用 MD5 算法。如先前研究所示,它应被视为在加密上已破坏,不适宜进一步使用”(US-CERT 漏洞注释 VU#836068, n.d.)。这种加密的实时破解仍然不切实际,但所有主流网页浏览器和移动设备都支持更强大的加密。
更大的问题是服务器 SSL/TLS 设置中接受 NULL 密码(无加密)或较弱的出口级加密。多年来,美国限制出口具有密码学技术的设备和软件,因此为出口软件实施了较弱的加密算法。出口密码使用只有 40 位的短密钥长度,比具有 128 或 256 位长密钥的现代密码更容易受到攻击。
SSL/TLS 使用中的另一个问题是实施的版本。TLSv1 已经有 10 多年历史,在 2009 年被发现容易受到“重新协商攻击”的攻击。在这种攻击中,服务器将客户端的初始 TLS 握手视为重新协商,因此认为攻击者最初传输的数据与后续客户端数据来自同一实体(US-CERT 漏洞注释 VU#120541, n.d.)。安全顾问 Thierry Zoller (2009 年 11 月) 提供了一个关于涉及步骤的视觉描述的很好总结。尽管解释了许多不同的攻击,但 图 5.4 是本总结中提供的第一个示例,有助于说明这种攻击。
图 5.4 通用 TLS 重新协商前缀注入漏洞。
大多数使用 TLSv1 的服务器已经打补丁来关闭这个漏洞。然而,TLSv1 协议已经更新,更现代的 TLSv1.2 提供了最新的技术和最强的加密密码。包括 SSLv2 和 SSLv3 在内的旧规范仍然被广泛使用,并且如果使用足够的密码和密钥长度,它们可以是相当安全的,但它们不如 TLS 安全。
保护移动设备传输敏感数据需要协调、勤奋,以及对 SSL/TLS 的彻底理解,这不仅仅需要应用程序开发者的努力,还需要维护参与安全通信的服务器团队的努力。尽管 SSL/TLS 已经存在了一段时间,可能被认为是理所当然的,但重要的是,必须对系统的正确实现和彻底的安全测试进行认真对待。
摘要
安卓设备既可能是恶意攻击的目标,也可能被用作执行此类攻击的工具。个人用户和公司都必须意识到这些风险,并应采取一定措施来防止恶意滥用。应用程序开发者也必须更加关注安全问题,并承担保护用户数据的责任。尽管本章讨论的基本安全措施不能提供完全保护,但至少可以作为阻止大多数攻击的威慑。
参考文献
1. 国家。(未注明日期)。计算机犯罪法—计算机犯罪法指南。《computer-crime.html》于 2011 年 2 月 10 日检索自 www.hg.org/computer-crime.html
。
2. 思科统一视频会议多个漏洞。(未注明日期)。Matta 咨询。《MATTA-2010-001.txt》于 2011 年 2 月 11 日检索自 www.trustmatta.com/advisories/MATTA-2010-001.txt。
3. 思科安全公告:思科统一视频会议产品中存在多个漏洞—思科系统。(未注明日期)。《products_security_advisory09186a0080》于 2011 年 2 月 10 日检索自 www.cisco.com/en/US/products/products_security_advisory09186a0080
。
4. 默认。(未注明日期)。为安装的应用程序提供 OAuth 认证和授权—Google APIs—Google 代码。《OAuthForInstalledApps.htm》于 2011 年 2 月 12 日检索自 code.google.com/apis/accounts/docs/OAuthForInstalledApps.htm
。
5. 设备管理。(未注明日期)。安卓开发者。《device-admin.html》于 2011 年 2 月 11 日检索自 developer.android.com/guide/topics/admin/device-admin.html
。
6. Donohue, B.(未注明日期)。移动设备用户更容易受到网络钓鱼的攻击。《mobile-device-users-more-susceptible-phishing-scams-010511》于 2011 年 2 月 10 日检索自 threatpost.com/en_us/blogs/mobile-device-users-more-susceptible-phishing-scams-010511
。
7. 文档库。(未注明日期)。PCI 安全标准文档:PCI DSS、PA-DSS、PED 标准、合规指南等。《documents.php?agreements=pcidss&assocation=PCI%20DSS》于 2011 年 2 月 12 日检索自 www.pcisecuritystandards.org/security_standards/documents.php?agreements=pcidss&assocation=PCI%20DSS
。
[完全披露] Microsoft Windows NT #GP 陷阱处理程序允许用户切换内核堆栈。(未注明日期)。2011 年 2 月 10 日检索。
OAuth 介绍。(未注明日期)。OAuth 社区网站。2011 年 2 月 12 日检索。
Johnston, S. J. (未注明日期)。微软警告一个 17 岁的 Windows 漏洞。2011 年 2 月 10 日检索。
Microsoft 安全公告(979682):Windows 内核中的漏洞可能允许提升权限。(未注明日期)。2011 年 2 月 10 日检索。
Ralf-Philipp Weinmann。(未注明日期)。CryptoLUX。2011 年 2 月 10 日检索。
Schneier 谈安全:静态数据与动态数据。(未注明日期)。2011 年 2 月 9 日检索。
Linux 和 Unix 安全编程 HOWTO。(未注明日期)。David A. Wheeler 的个人主页。2011 年 2 月 10 日检索。
Ten, T. T. (未注明日期)。梦幻之地(1989)—难忘的台词。互联网电影数据库(IMDb)。2011 年 2 月 10 日检索。
US-CERT 漏洞注释 VU#836068。(未注明日期)。CERT 知识库。2011 年 2 月 13 日检索。
US-CERT 漏洞注释 VU#120541。(未注明日期)。CERT 知识库。2011 年 2 月 13 日检索。
WordNet 搜索—3.0。(未注明日期)。2011 年 2 月 10 日检索。
Zoller T. TLS & SSLv3 重协商漏洞解释 SANS 互联网风暴中心;合作网络安全社区—互联网安全。2009 年;2011 年 2 月 13 日从*isc.sans.edu/diary.html?storyid=7582
*检索。
第六章
Android 取证技术
本章信息
• 处理 Android 设备的程序
• 对 Android USB 大容量存储设备进行成像
• 逻辑技术
• 物理技术
引言
在我们深入探讨实际的 Android 取证技术之前,有一些影响因素决定了取证分析师应该使用哪种技术。在本节中,我们将讨论不同的调查类型,逻辑技术与物理技术之间的差异,以及如何限制或避免对设备的修改。
调查类型
在各种情况下,都可能受益于 Android 取证调查的结果。尽管取证在所有情况中都有共性应用,但每种情况可能需要不同的程序、文件记录以及整体关注点。
人们通常想到的第一个情况是在刑事或民事法庭上进行裁决的调查。在这些情况下,有许多重要的考虑因素:
• 证据链
• 详细的同时期记录和最终报告
• 可能使用不同工具或调查员验证结果
• 基于事实或观点的证词
另一个常见的情况是企业内部调查。这些调查可能会在法庭上诉讼,但通常它们用于确定问题的根本原因(无论是系统、外部攻击还是内部员工)并可能导致对员工的纪律处分。内部企业调查可以涵盖许多领域,但最常见的是:
• 知识产权或数据盗窃
• 不当使用公司资源
• 尝试或成功攻击计算机系统
• 与就业相关的调查,包括歧视、性骚扰等。
• 安全审计(随机或针对性)
在涉及家庭事务的情况下也需要取证。最常见的案例包括:
• 离婚
• 子女抚养权
• 遗产争议
取证调查可以在政府的安全和运作方面产生重大价值的最后一个领域。政府通常是国内最大的雇主,美国就是一个很好的例子。根据美国人口普查局的数据,2009 年公共就业和工资年度调查显示,联邦政府在所有职能中拥有超过 300 万名雇员,而州和地方政府有 1660 万全职等效雇员(政府就业与工资,不详)。
除了与就业相关的事务外,国家也可能是攻击和外国政府情报搜集的目标。取证在挫败针对国家的攻击、调查成功的攻击、反情报情景以及为国家的治理提供有价值的情报方面可以发挥关键作用。
逻辑技术与物理技术之间的区别
Android 取证技术本质上是逻辑的或物理的。逻辑技术提取分配的数据,通常是通过访问文件系统实现的。分配数据意味着数据未被删除,并且在文件系统上可以访问。这个定义的一个例外是一些文件,例如 SQLite 数据库,可能是已分配的,但数据库中仍可能包含已删除的记录。虽然恢复已删除的数据需要特殊的工具和技术,但从逻辑获取中恢复已删除数据是可能的。
另一方面,物理技术直接针对物理存储介质,并不依赖文件系统本身来访问数据。这种方法有其优点;最显著的是物理技术可能提供对大量已删除数据的访问。如第四章所述,文件系统通常只将数据标记为已删除或过时,除非需要,否则不会实际擦除存储介质。由于物理取证技术直接访问存储介质,因此有可能恢复分配和未分配(已删除或过时)的数据。
当然,分析 Android 物理获取通常要困难得多,也更耗时。此外,物理技术更难以执行,操作失误可能导致设备无法访问。
在 Android 取证中,最常见的逻辑技术并不能直接访问文件系统,其工作级别比传统的逻辑技术更抽象,效果也更差,后者可以直接从文件系统获取所有未删除的数据。这种技术依赖于 Android 平台和软件开发工具包(SDK)内置的内容提供者,虽然能生成一些重要的法医数据,但只是系统中可用数据的一小部分。
修改目标设备
任何法医调查的基本原则之一是避免以任何方式修改目标设备。在许多情况下,这是可以实现的。例如,假设你收到了一台未启动的台式电脑。你被告知这是从嫌疑人那里没收的,你需要开展法医调查。在取得保管权后,对该设备进行调查通常不会对数据造成实质性更改。典型的调查会完整记录电脑信息,取出硬盘,连接到物理写保护器上,并获取硬盘的逐位法医级安全映像。然后,调查将在取证映像的副本上进行,原始设备将保持不变。
随着计算机的功率和功能不断增强,这种理想情况越来越难以实现。首先,假设你被叫到调查现场,有一台台式电脑,但这次电脑正在运行中。任何与电脑的交互,无论是简单移动它,甚至是物理上拔掉设备,都会以某种方式改变设备。虽然许多检查员主张直接拔掉电脑电源,但这样做仍然会改变电脑,因为 RAM 中的内容、打开的网络连接等(这些在调查中可能非常有价值)会永久丢失。
如果你选择在设备运行时进行检查,所有的交互都会改变设备。为了进一步复杂化调查,可能会出现计算机正在使用加密,并且设备运行时数据可以访问的情况。然而,如果设备关闭,且你没有加密密钥,那么你可能永久失去恢复数据的能力。
另一个复杂因素可能是存在具有特殊硬件、复杂设置的服务器,或者简单地不能在不给其他系统或人员带来重大影响的情况下关闭。复杂的服务设置示例包括复杂的 RAID 设置、依赖基于网络的存储区域网络(SAN)的设置和不支持的硬件。在这种情况下,检查员必须在设备运行时直接与设备交互,尽管这些操作会改变设备。
当然,尤其是安卓设备在内的移动设备,如果没有对设备造成任何影响,几乎不可能进行法医分析。与台式机、笔记本电脑和服务器不同,安卓设备上有一部分存储是无法轻易移除的。如果设备处于开启状态,关闭设备或再次拔掉电池都会改变设备。
当移动电话首次出现在调查中时,从设备中可以提取的数据非常少。许多调查采用了传统方法,比如对无线运营商发出搜查令以获取通话详单。在 GSM 设备上,还可以移除用户身份模块(SIM)卡并提取一些数据。随着手机开始存储更多数据,检查员之间出现了深刻分歧:一些人主张使用旧方法(对设备影响小,相应地只能获取少量数据),而另一些人则主张更充分地利用设备。利用设备的技术会修改设备,导致了随后的争论。
到 2011 年,许多争论已经平息,因为移动设备现在持有的数据量需要更侵入式的技术。《英国警察局长协会》制定的指南清楚地解决了这个问题。该指南《计算机电子证据良好实践指南》(ACPO Good Practice Guide, n.d.)确立了计算机电子证据的四个原则:
-
法律执法机构或其代理人的任何行动都不应改变计算机或存储介质上可能随后在法庭上依赖的数据。
-
在个人认为有必要访问计算机或存储介质上保存的原始数据的情况下,该人员必须具备相应能力,并能够提供证据解释其行为的关联性和影响。
-
应当创建并保留对基于计算机的电子证据所执行的所有流程的审计跟踪或其他记录。独立第三方应当能够检查这些流程,并得到相同的结果。
-
负责调查的人员(案件官员)有总体责任,确保遵守法律法规和这些原则。
由于移动设备明显呈现需要直接访问原始设备的情形,因此在审查员接受过充分培训、提供合理的处理方式并保持清晰的审计跟踪,使得第三方能重复其操作的情况下,这是被允许的。这无疑是好的建议,它有助于为移动设备的法医调查提供一个坚实的框架。
处理安卓设备的程序
对于法医分析师来说,一个主要的挑战是制定一个在分析师直接接管之前处理设备的协议。这绝对不是分析师的新问题,因为参与调查的其他人员可能也会处理其他数字设备,如计算机或笔记本电脑。然而,移动设备相对较新,首批响应者往往处理不当。有一种倾向是立即检查设备,这几乎不可避免地导致数据修改和可能失去访问设备的机会。
保护设备
许多机构和首批响应者已经建立了保护证据的协议。以下各节旨在补充现有的程序,而不是替代它们。当然,这些程序是特殊的,而对那些有许多其他责任的首批响应者进行教育可能相当具有挑战性。
密码操作程序
由于消费者和企业安全意识的提高,带有密码锁定的设备越来越常见。在下一节中,我们将介绍一些绕过密码的具体技巧。然而,这并不总是可能的。从设备获取信息时首先要考虑的是是否存在立即禁用或以其他方式绕过密码的机会。
如果您遇到一个屏幕处于激活状态的安卓设备,应该强烈考虑检查并可能更改其设置。对于那些有密码的设备,有一段时间(从不到一分钟到大约 15 分钟)可以无需重新输入密码即可完全访问设备。如果设备处于这种状态,可以考虑以下几个步骤:
-
增加屏幕超时时间以防止或推迟屏幕锁定。这个设置的位置在安卓版本和设备间并不一致。例如,在运行安卓 1.5 的 G1 上,可以通过按下菜单(从主屏幕开始),然后选择设置、声音与显示、屏幕超时,并选择“从不超时”。在运行安卓 2.2 的 HTC Incredible 上,按下菜单(从主屏幕开始),然后选择设置、安全、锁定手机后,最后选择“15 分钟”。只要设备在分配的超时设置内有一些名义上的活动,它将保持可访问状态。
-
启用 USB 调试和“保持唤醒”设置。这个设置在设备中保持一致,可以通过按下菜单(从主屏幕开始),然后选择设置、应用程序和开发。在那里,您可以勾选 USB 调试和保持唤醒。如果您选择了“保持唤醒”设置并将其连接到充电器,设备将永远不会休眠,这有效防止了屏幕锁定。通过启用 USB 调试,可以通过 USB 访问设备,从而实现数据提取。
当然,这些步骤是对设备进行更改,应该详细记录在案例笔记中,描述设备的状态、尝试更改的理由以及每次更改的结果。这不仅有助于未来的报告编写,如果您的更改设备决定在法庭上受到挑战,这也可能是重要的因素。
为了使情况更加复杂,同样重要的是在屏幕锁定激活的情况下尽量减少触摸屏幕。我们稍后会讨论,有时可以通过增强设备屏幕的照片来确定设备的图案锁。第一响应者与屏幕的交互越少,这种技术的成功率就越高。
网络隔离
正如许多检验员可能知道的,尽快将设备与网络隔离非常重要。在最坏的情况下,可能会在设备上启动远程擦除,如果成功,将无法恢复任何数据。虽然大多数远程擦除是通过数据网络完成的,但有些可以通过短信触发,因此确保设备完全隔离以防止远程擦除。在其他情况下,设备上可能会收到或甚至被外部触发器移除的额外信息。由于取证图像的目标是保留设备状态以进行进一步分析,应避免任何更改。
有多种方法可以将设备与网络隔离,每种方法都有其优缺点。表 6.1 概述了每种技术的优缺点。
表 6.1 设备隔离技术
技巧 | 优点 | 缺点 |
---|---|---|
将设备设置为飞行模式。这需要你完全访问设置菜单。 | 设备继续运行,临时数据保持完整。禁用蜂窝数据网络以及Wi-Fi.com。 | 你进一步修改了设备设置。只有在完全访问设备的情况下才有效。 |
如果手机是 GSM 手机,移除 SIM 卡。 | 易于移除,有效禁用所有蜂窝语音、短信和数据传输。 | 不禁用Wi-Fi.com或其他网络。不适用于非 GSM 手机,包括 CDMA 和 iDEN 手机。 |
暂停与无线运营商的账户。 | 对于任何手机,有效禁用所有蜂窝语音、短信和数据传输。 | 过程可能需要一些时间,可能需要法院命令。不禁用Wi-Fi.com或其他网络。 |
将设备放入屏蔽袋、盒子、帐篷或房间中。 | 法拉第屏蔽可以防止各种类型的网络传输,如果你无法使用前面的任何选项,这可能是一个有效的办法。 | 关于便携式法拉第屏蔽的有效性存在一些争议,尤其是法拉第袋。同时,虽然传输被阻止,但设备会反复尝试联系蜂窝网络,从而迅速耗尽电池。无法将线缆插入屏蔽装置中,因为它们会传输信号。专用于移动设备检查的屏蔽室是理想的,但它们的建造和维护成本相当高。 |
关闭设备。 | 完全有效地阻止所有网络传输。 | 设备状态被修改,临时数据丢失。重启时可能会启用密码,从而限制对设备的访问。 |
如你所知,将 Android 设备与网络隔离并非易事,每个选项都有优缺点。虽然每个检查员或其组织应该确定采取的适当步骤,但最佳选择可能是将设备置于飞行模式。这在不同的 Android 设备和版本之间略有差异,但总体方法是一样的:
-
长按电源键并选择飞行模式。
-
从主屏幕按菜单键,然后选择设置,然后选择通常位于顶部的无线选项。例如“无线控制”或“无线和网络”。下一个菜单应显示飞行模式选项。
图 6.1 是电源键方法的截图。图 6.2 显示了通过无线设置选项的方法。
图 6.1 通过电源键选择飞行模式。
图 6.2 通过无线和网络设置选择飞行模式。
无论你最终选择哪种技术,主要目标应该是尽快将设备与网络隔离。
电源和数据线
虽然大多数取证实验室将拥有充电和连接设备所需的电缆,但直接从现场扣押电缆总是谨慎的。可能正在使用较新的设备,而取证工具箱还没有合适的电缆。例如,为连接媒体设备而开发了一项新规范,称为便携式数字媒体接口(PDMI),并集成到两款 Android 平板电脑中,分别是 Dell Streak 和 Samsung Galaxy Tab。PDMI 接口不仅提供电源和高分辨率视频输出,还提供 USB 3.0 支持。如果在检查这些设备之一时需要等待合适的电缆,可能会造成延迟;如果需要充电且你没有合适的电缆,电源的损失将导致时间数据的丢失。
已关闭的设备
当你遇到一个已经关闭的设备时,最好的选择是将其启动到恢复模式以测试连通性和根访问权限。设备所有者可能已经启用了 USB 调试或已经获取了根权限,这样你可以在不启动正常操作模式的情况下访问数据。
这种方法类似于在标准计算机硬盘上进行取证。任何受过训练的取证分析师最后会做的一件事就是启动电脑以确定安装了什么操作系统。相反,硬盘被取出并连接到写保护器进行成像,以防止对证据进行任何更改。同样,如果移动设备无需启动到正常模式,就没有必要这样做,因为这可能会对设备进行更改。本章后面将讨论如何在恢复模式下测试设备以获取足够权限的具体信息。
如何绕过密码
随着 Android 设备被频繁使用,并且在大多数情况下不允许数据提取,绕过 Android 设备上的密码变得越来越重要。虽然没有保证的方法,但在某些情况下有一些技术是有效的。
如前所述,目前 Android 设备支持三种类型的密码。第一种是图案锁。这是最初 Android 设备的默认设置。要访问设备,用户在锁定手机上绘制图案,如果绘制正确,设备将被解锁。在 HTC Incredible 上的图案锁的一个示例显示在图 6.3 中。
图 6.3 安卓图案锁。
第二种密码是简单的个人识别码(PIN),这在其他移动设备中很常见。图 6.4 是一个启用 PIN 的 HTC Incredible 的示例。
图 6.4 安卓 PIN 锁。
目前在 Android 设备上找到的最后一种密码类型是完整的字母数字代码,如图 6.5 所示。
图 6.5 安卓字母数字锁。
如第四章所述,并非所有的密码都是平等的。最有效的密码是允许或需要字母数字密码的密码,因为这些密码要难以绕过得多。
如果启用了 USB 调试,请使用 ADB
如果手机开机,您应该尝试的第一种技术是通过 USB 连接 Android 调试桥(ADB),这在第三章中已经广泛介绍。尽管只有少数 Android 设备允许通过 USB 调试设置进行 ADB 连接,但值得一试,因为它可以轻松提供足够的数据提取访问权限。用户启用 USB 调试的最常见原因包括:
• 应用开发和测试
• 某些应用需要此设置,例如 PDAnet,它允许设备通过 USB 向连接的设备提供互联网访问
• 定制 ROM
• 开发者手机,例如谷歌的 Android 开发者手机(ADP1)
• 设备破解
如果您使用的是 Ubuntu 虚拟机(VM)或有正确安装和配置了软件开发工具包的取证工作站,判断 USB 调试是否启用相当简单。将手机正常模式下运行,并将其插入 Ubuntu VM。从命令提示符输入“adb devices”。如果启用了 USB 调试,ADB 守护进程将返回设备序列号以及手机当前所处的模式。
如果禁用了 USB 调试,当输入“adb devices”命令时,它将不会返回任何内容。
如果你在虚拟工作站的内部运行命令,记得将设备传递给你的虚拟机。如果虚拟机看不到设备,你会得到与未启用 USB 调试相同的结果。一旦你确认 USB 连接已经传递给 Ubuntu 虚拟机,你可以执行 lsusb 命令来验证操作系统已经识别到该连接:
在这个例子中,我们强调了一些明显的区域,这些区域清楚地表明了安卓设备已经连接,在这种情况下,我们可以看到 ADB 接口已经暴露。如果设备已连接但你无法通过 ADB 连接,你还应该杀死你本地的 ADB 守护进程然后重新启动它。这可以轻松完成,如下所示:
如果启用了 USB 调试,法医分析师可以利用该接口获取访问权限并进行逻辑恢复设备,这部分内容在本章后面会详细介绍。
涂抹攻击
最初,安卓设备使用图案锁作为密码保护,而不是数字或字母数字代码。宾夕法尼亚大学计算机与信息科学系发表的一篇名为“智能手机触摸屏上的涂抹攻击”的论文,展示了一种通过增强屏幕照片访问图案锁定的安卓设备的技术(Aviv, Gibson, Mossop, Blaze, Smith, n.d)。论文总结称:
我们的照片实验表明,干净的触摸屏表面主要是反射的,但并不完全是;而涂抹则主要是散光的,但也并非完全如此。我们发现,几乎任何非正对相机补角位置的方向性光源都能呈现可恢复的涂抹图像。调整照片以查看图案几乎不需要什么操作,但是通常在照片曝光过度两到三个光圈值(4 到 8 倍“正确”曝光)时,图像效果最佳。
如果第一响应者小心处理,尽量减少与设备屏幕的接触,这种恢复技术可能是可行的。作为可能性的一个例子,图 6.6 展示了同一款安卓设备并排显示的照片。两张图片使用了同一张原始照片,但右侧的图片在涂抹攻击过程中进行了增强,以突出接触点。
图 6.6 显示涂抹攻击的增强照片。
恢复模式
一些用户安装了自定义 ROM,通常通过修改恢复模式来获得设备的 root 访问权限。大多数自定义 ROM 安装了修改过的恢复分区,从而简化了安装自定义 ROM 的过程。有几个流行的恢复分区主要与自定义 ROM 配合使用,它们都提供从恢复控制台本身具有 root 权限的 shell 访问。由于手机没有引导到正常模式,因此绕过了密码,用户数据分区可以被挂载为只读,从而防止该区域发生更改。
在取证分析师在设备关机时取得控制权时,应尝试引导进入恢复模式。如果设备正在运行并且存在密码,你应首先尝试通过 ADB 连接,并考虑使用污迹攻击。如果这两种方法都不成功,那么你应该尝试重启进入恢复模式。与许多其他技术一样,根据设备制造商和型号的不同,进入恢复模式的方式也有所不同。表 6.2 涵盖了进入本书所提及手机恢复模式所需的关键组合。每个步骤都假定设备已经关闭。
表 6.2 进入恢复模式的关键组合
设备 | 键组合 |
---|---|
HTC G1 | 按住主页按钮并按下电源按钮。使用音量减键选择 RECOVERY,然后按下电源键。 |
Nexus One | 按住音量减键并按下电源按钮。 |
Motorola Droid | 按住 X 键并按下电源按钮。 |
HTC Incredible | 按住音量减键并按下电源按钮。使用音量减键选择 RECOVERY,然后按下电源键。 |
进入恢复模式后,你可以将设备连接到 Ubuntu 工作站,并尝试使用 ADB 连接。如果设备运行的是非修改过的恢复模式,连接将失败。屏幕通常会显示一个带有感叹号的三角形,旁边通常有一个小型的 Android 设备。在其他设备上,你会看到三个著名的 Android 图标在滑板上。最后,其他恢复模块明确显示它们处于修改过的恢复代码中,并提供了一系列设备选项。
刷新新的恢复分区
有许多协议、工具和设备允许熟练的检查员使用修改过的镜像刷新设备的恢复分区。
支持这种方法的第一个协议是 fastboot。Fastboot 是一种在引导加载程序模式下通过 USB 执行的 NAND 闪存更新协议。大多数设备出厂时都启用了引导加载程序保护,这禁止使用此协议。然而,保护可能已被禁用。要确定是否启用了引导加载程序保护,你必须访问引导加载程序并查看签名信息,这将表明是 S-ON 还是 S-OFF。S 代表安全,因此 S-ON,即默认的生产版本,启用了安全性;S-OFF 表示未启用安全性。一些设备出厂时带有 S-OFF,例如 Google Nexus One,因为它预装了 Google 的工程 SPL/引导加载程序。其他 rooting 技术也会禁用此保护,因此在密码保护的设备上检查可能会得到结果。你可以使用前一部分的键组合访问主引导加载程序,这部分在前面章节的表 6.2 中有所描述。
Fastboot 不需要 USB 调试来访问设备。因此,像恢复模式一样,它可用于访问设备的数据。一旦新的恢复分区可用,设备应重新启动进入恢复模式,然后可以进行法医成像。
其他技术允许用新的映像刷新恢复分区。一些示例包括:
• 摩托罗拉的 RSD Lite
• sbf_flash
• 三星的 Odin Multiloader
尽管这些工具和协议最终可能提供了法医分析师所需的权限,但需要相当大的努力不仅去查找和测试这些技术,而且要充分理解它们,以便在法医调查中使用。
屏幕锁绕过应用程序
安全研究员托马斯·坎农最近开发了一项技术,可以通过安装一个应用程序来绕过屏幕锁,这个应用程序是通过新的基于网络的 Android 市场安装的(坎农,T.,未标明日期)。坎农的技术利用了基于网络的 Android 市场的一个新功能,可以直接从网站安装应用程序。因此,你需要使用设备的主要 Gmail 用户名和密码访问 Android 市场,这可能从用户的主要计算机上可以访问。或者,如果你知道用户名和密码并且有足够的权限,你也可以访问 Android 市场。在这种情况下,更改用户的 Gmail 密码将不起作用。
坎农在这个网站上解释了这项技术,如下节所述(坎农,T.,未标明日期)。
工作原理
这个过程实际上非常简单。Android 会发送一系列广播消息,应用程序可以接收,比如收到短信或Wi-Fi.com断开连接。应用程序必须注册其接收器以接收广播消息,这可以在运行时完成,或者对于某些消息,在安装时完成。当相关的消息进来时,它会被发送到应用程序,如果应用程序没有运行,它将自动启动。
在尝试了各种广播消息后,我发现对于这个实用程序来说最好的消息是 android.intent.action.PACKAGE_ADDED。这个消息在所有 API 版本 1 中都存在,并在安装应用程序时触发。因此,要远程执行应用程序,我们首先从 Android 市场部署它,然后部署任何会导致第一个应用程序启动的其他应用程序。
启动后,只需调用 KeyguardManager 中的 disableKeyguard()方法即可。这是一个合法的 API,允许应用程序在检测到来电时禁用屏幕锁定。通话结束后,应用程序应重新启用屏幕锁定,但我们只是保持其禁用状态。
如果您能正确访问 Android 市场,这项技术绝对值得考虑。
使用 Gmail 用户名/密码
在大多数 Android 手机上,如果您知道与设备关联的主要 Gmail 用户名和密码,可以绕过密码。在多次尝试失败后(G1 上十次尝试),您将看到一个询问是否忘记密码的屏幕。从那里,您可以输入 Gmail 用户名和密码,然后系统会提示您重置密码。这种技术不需要手机在线,因为它使用存储在手机上的凭据信息。
如果您没有当前的 Gmail 用户名和密码,但拥有足够的权限(例如,法院命令)来重置密码,您可以尝试迫使谷歌重置账户密码。然后,您需要将 Android 设备连接到网络并获取访问权限。这个问题带来了许多挑战,包括需要将设备上线,这除了对设备进行更改外,还可能导致远程擦除的风险。各种执法邮件列表上的报告表明,这种方法并不总是有效。
如果尝试这种方法,需要进一步研究。特别是,最好控制设备使用的互联网连接,很可能是通过一个W-Fi.com的接入点。这样,你可以限制网络访问仅限于那些谷歌服务器进行身份验证所需的。此外,还应该分析测试设备的详细网络捕获以及实际对设备所做的更改。
JTAG 和芯片脱焊
当前,大多数 Android 设备并未对 NAND 闪存的内容进行加密,这使得在启用密码的情况下直接访问和解码存储芯片成为了一种潜在的解决方案。有两种主要技术可以直接访问芯片。这两种技术都具有技术挑战性。这两种技术是:
• 联合测试行动组(JTAG)
• 物理提取(芯片脱焊)
这两种技术不仅在技术上具有挑战性,需要部分或完全拆解设备,而且还需要进行大量的后期提取分析以重新组装文件系统。因此,JTAG 和芯片脱焊可能是绕过锁定设备的最后选择。
使用 JTAG,通过将引线焊接到底板(PCB)上的特定 JTAG 焊盘,直接连接到设备的 CPU。然后可以使用 JTAG 软件执行 NAND 闪存的完整二进制内存转储,修改某些分区以允许 root 访问,或者完全消除密码。
在芯片脱焊过程中,使用热风将 NAND 闪存芯片从 PCB 上物理取出。然后,通常需要将这种小型的球栅阵列(BGA)封装的芯片的 BGA 连接重新生成,并将其插入到连接到芯片并读取 NAND 闪存的特殊硬件中。
这些技术的优点是,在任何未加密 NAND 闪存的情况下都能使用。然而,要执行这些技术,需要进行广泛的研究、开发、测试和实践。
对 Android USB 大容量存储设备进行成像
迄今为止,每一部 Android 设备都配备了外部 Secure Digital(SD)卡或嵌入式 MultiMediaCard(eMMC),这些设备为许多用户提供了所需的大存储空间。这些存储设备的存在是因为用户的应用数据通常存储在/data/data 中,出于安全和隐私的考虑,这些数据是被隔离的。然而,用户希望在其 Android 设备和计算机之间复制歌曲、图片、视频或其他文件,而这些大容量 FAT 文件系统分区解决了这个问题。敏感的用户数据仍然受到保护,但更大且更便于携带的文件可以被用户访问。
最初,对大容量存储进行成像的方法是简单地从 Android 设备中取出并使用 USB 写保护器进行成像。然而,随着时间的推移,出现了一系列挑战,包括:
• 转向 eMMC 存储意味着大容量存储不再是可移动的。
• 现在应用程序可以从 SD 卡运行,在这种情况下,.apk 文件是加密的。如果获取应用程序未加密副本对调查至关重要(例如,涉及恶意软件分析或木马防御的案件),则必须将 SD 卡保留在 Android 设备中。
• 新设备更频繁地使用 RAM 磁盘(tmpfs)来存储可能在调查中有所帮助的用户数据。通常,移除 SD 卡需要关闭设备并取出电池,从而失去恢复临时数据的能力。
因此,建议的针对 Android 上 USB 大容量存储(UMS)设备成像的方法不再涉及移除 SD 卡,而是通过 UMS 接口进行成像。
SD 卡与 eMMC 对比
SD 卡和 eMMC 实际上并没有太大的区别。当然,主要的区别在于 SD 卡是可移动的,可以轻松地在不同设备间转移。它们使用 NAND 闪存,基于 MultiMediaCard(MMC)规范,并具有嵌入式存储控制器,因此客操作系统无需 MTD 即可读取它们。
迄今为止,Android 设备普遍支持的 microSD 卡容量从 2 GB 到 16 GB 不等。然而,更大的卡片也是可能的。根据 Android 设备的不同,SD 卡可能可以轻松地从运行中的设备访问并取出。然而,许多设备需要关闭设备,以便移除电池。
对于设备上嵌入的存储,一些制造商已经开始使用 eMMC,它由带有 MMC 接口的嵌入式存储组成,直接集成到设备的 PCB 上。这一标准简化了使用标准 eMMC 协议访问 NAND 闪存,并能够支持不是 NAND 闪存意识的文件系统。这并不意味着文件系统能以与像 YAFFS2 这样的 NAND 闪存意识文件系统相同级别和复杂性的保护 NAND 闪存的使用寿命。然而,Android 设备的普遍使用寿命确实在缩短,对大多数用户来说可能并不是问题。
如何法医镜像 SD 卡/eMMC
有两种主要的方法可以在不将 SD 卡和 eMMC 从设备中取出的情况下进行法医获取。这里介绍的第一种方法是将 UMS 设备接口暴露给您的法医工作站,并允许您使用您选择的法医工具获取镜像。第二种方法没有将 UMS 暴露给您的法医工作站,而是在 Android 设备上使用 dd。这需要 adb 端口转发,这将在本章后面的物理技术部分介绍。
尽管我们的 Ubuntu VM 内置了 dd,但我们仍将下载、编译并安装由美国国防部网络犯罪中心维护的 dd 更新版本。该程序,dc3dd,是 GNU dd 的修补版本,包括许多对计算机取证有用的功能(dc3dd, n.d.),例如:
• 分段和整体散列,支持多种算法——支持 MD5、SHA-1、SHA-256 和 SHA-512。
• 带有自动输入/输出文件大小探测的进度条。
• 散列和错误的组合日志。
• 错误分组——对于相同的连续错误,只产生一条错误消息。
• 验证模式——能够对输出文件进行散列处理,并将散列与获取散列进行比较。
• 能够将输出分割成带有数字或字母扩展名的块。
• 能够同时写入多个输出文件。
该程序是开源软件,根据 GNU 公共许可证第 3 版(GPLv3)获得许可,并通过 SourceForge 在线分发,并在 2010 年 8 月更新到了版本 7.0(dc3dd, n.d.)。在本书的这一点上,你应该对编译程序相当熟悉并且拥有所需的所有工具,所以以下是简化的步骤。
在这一点上,你可以继续进行成像。然而,每次都输入整个 dc3dd 命令不仅繁琐,而且可能导致因拼写错误而造成无法修复的损害。因此,创建一个 shell 脚本,它不仅可以获取设备,还可以记录各种系统特性、日期/时间戳,并创建日志文件,这些在你稍后编写报告时可能很有帮助。
我们将获取脚本放置在 /usr/local/bin 中,这样你就可以从任何目录轻松地运行脚本,因为默认情况下 /usr/local/bin 在你的执行路径中:
接下来,将以下内容复制到脚本中,通过按 Ctrl-O 保存,然后通过按 Ctrl-X 退出:
接下来,你必须更改权限,以便你可以运行脚本,然后不带参数运行它以查看使用帮助:
这个脚本以及开源软件的伟大之处在于,你可以根据需要简单地修改它。如果你不想跟踪客户名称,只需从脚本中删除它。
接下来,我们必须在你的 Ubuntu 工作站上挂载 UMS 设备。正如在 第一章 中关于 Ubuntu VM 设置所讨论的,关键在于你已经禁用了工作站上的自动挂载。如果你没有这样做,请查看必要的步骤并在向 VM 展示 UMS 设备之前完成。
此外,理想情况下,首先应将 Android 设备连接到基于硬件的 USB 写保护器。然而,一些写保护器似乎在连接的设备暴露出多个设备 ID 时会遇到问题。你应该尝试使用你的 USB 写保护器,理想情况下,首先让这个工作。
注意
Tableau UltraBlock USB
Tableau UltraBlock USB 模型 T8,运行着 2009 年 8 月 9 日的最新固件,仅能通过参考 HTC Incredible 上找到的第一个 USB 设备,因此在分析设备时我们无法使用它。Tableau 有一个新的 UltraBlock USB 设备可能有效;然而,我们尚未验证这一点。审查员应该测试他们拥有的各种 USB 写保护器以确认兼容性。
接下来,我们需要确定 UMS 映射到哪些设备。此信息显示在内核日志中,可以通过“dmesg”命令轻松访问:
如先前所讨论,除了 ADB 之外,HTC Incredible 还暴露了三个 USB 接口:
• 用于设备驱动程序安装的 CD-ROM (sr1)
• eMMC UMS 设备 (sdb)
• SD 卡 UMS 设备(sdc)
然而,/dev/sdb 和/dev/sdc 之间的区别在 Android 设备上启用 UMS 或磁盘驱动器功能之前不容易辨别。启用后,您应该再次检查 dmesg 的输出。
警告
使用硬件写保护器
尽管 Ubuntu 工作站上的自动挂载功能已被禁用,但法医分析师通过硬件写保护器仅将 Android 设备连接到工作站至关重要,以确保不对设备进行任何更改。所有硬件在案件中的积极使用之前都应经过彻底测试。
现在更清楚的是,/dev/sdb 是 7GB 存储设备(即 eMMC),而 2GB 的 SD 卡映射到/dev/sdc。我们现在可以使用获取脚本或您的法医工作站上可用的任何法医成像工具获取设备。脚本需要以下六个参数:
1.客户——此参数创建文件夹结构,示例可能是“sheriffs-office”或如“viaforensics”的客户名称。
2.案例——此参数提供了一个案例名称,例如 af-book。
3.标签——此参数是您正在法医成像的证据的标签编号,在我们的示例中是 item001。
4.序列号——这是设备、磁盘、SD 卡等的序列号。如果您无法访问序列号,可以输入您选择的任何文本,例如 unknown-serialno。
5.源设备——这是您想要获取的设备,如/dev/sdb、/dev/sdc 等。您可以使用 dmesg 来确定,下面将解释 dmesg。
6.目标路径——应创建文件夹的顶级目录。它可以是您的家目录(~)或称为 clients 的文件夹(~/clients)。
对于此示例,在您的家目录中创建一个名为 sd-emmc 的文件夹,然后使用 sudo 权限运行获取脚本。
然后,您可以使用相同的通用命令,但更改参数以成像 eMMC,对于设备来说,它位于/dev/sdb。完成这些命令后,法医图像和日志文件位于~/sd-emmc,并按以下结构组织:
对于每个法医成像的 UMS 设备,我们不仅拥有经过验证的映像,还有 dd 映像的 hashlog,带有日期、时间、系统信息和运行的命令的日志文件,错误日志,最后是每个日志文件及其 sha256 哈希的列表。这确保了关于成像过程有足够的细节。
提示
SD 卡上的加密应用
如果在 SD 卡上安装了应用,它们会被加密,因此,如果从 SD 卡映像检查文件,它们将无法读取。但是,当 SD 卡未在您的法医工作站上挂载时,未加密的.apk 文件将挂载在/mnt/asec 中。如果调查依赖于.apk 应用分析,请确保您也获取未加密文件的副本。
逻辑技术
正如本章开始时所讨论的,逻辑取证技术可以提取已分配的数据。这通常是通过访问文件系统来实现的。逻辑技术往往是取证分析师首先运行的一种检查类型,因为它们不仅更容易执行,而且通常能为案件提供足够的数据。安卓取证物理技术可以提供更多的数据。然而,它们更难以成功执行,并且需要更多的努力进行分析。
逻辑技术还有更多的应用场景,因为唯一的要求是启用 USB 调试。换句话说,安卓取证逻辑技术不需要根权限。
在本节中,我们首先介绍免费提供的技术(尽管 AFLogical 仅对活跃的法律执法和政府机构免费),然后是可用商业软件的回顾。
ADB Pull
在第四章中,递归 adb pull 命令被多次演示,因为文件系统的不同部分被复制到 Ubuntu 工作站以进行进一步分析。除非安卓设备具有根权限或运行自定义 ROM,否则在设备上运行的 adb 守护进程,代理递归复制,只具有 shell 权限。因此,一些更具取证意义的文件无法访问。然而,仍然有一些可以访问的文件。
如果您尝试访问 shell 用户没有权限的文件,它根本不会复制这些文件:
然而,如果您有足够的权限(下一个示例中的根权限),那么这种方法非常简单有效:
如您从上面的输出中所见,整个“/data”分区在三分半多一点的时间内被复制到了本地目录。在复制过程中保持了目录结构,因此您可以从工作站简单地浏览或分析感兴趣的文件。
由于大多数手机默认情况下不会有根权限,这种方法似乎价值不大。然而,了解这个工具非常有用,并且有几种情况非常适合这种方法。这些场景包括:
• 在未获得根权限的设备上,adb pull 仍然可以访问有用的文件,例如未加密的应用程序,大部分包含用户数据的 tmpfs 文件系统,例如浏览器历史记录,以及“/proc”、“/sys”和其他可读目录中的系统信息。
• 在已获得根权限的设备上,几乎可以简单地进行所有目录的提取,并且“/data”中的某些文件和目录会很有价值。
• 当使用物理技术时,并不总是能够挂载一些获取的文件系统,如 YAFFS2。如果 adbd 以根权限运行,您可以使用 adb pull 快速提取文件系统的逻辑副本。
由于 adb 不仅是 Android SDK 中的免费工具,而且功能非常多样,它应该是设备上使用的首要逻辑工具之一。
警告
adb 拉取问题
由于权限或其他问题,一些使用 adb 的递归拉取操作可能会在数据传输过程中失败。你应该密切监控命令的结果,以确定是否遇到任何问题。将大型目录的递归拉取分解为较小的数据拉取可能会得到更好的结果。
备份分析
当 Android 首次发布时,并没有为用户提供备份个人数据的机制。因此,在 Android Market 上开发并分发了许多备份应用。对于运行定制 ROM 的用户,开发了一个更强大的备份工具,称为 nandroid。
许多备份工具都有一个“保存到 SD 卡”的选项(用户发现这非常方便),以及几个“保存到云端”的选项。无论如何,用户可以备份他们的设备,如果需要,他们可以恢复所需的数据。这不仅用户保护自己免受数据丢失的好方法,而且对于法医分析师来说,这也是一个很好的信息来源。
较受欢迎的备份应用之一是 RerWare 的 My Backup Pro,它可以使用内容提供者备份设备数据,如果设备有 root 权限,甚至可以备份整个“/data/data”文件。用户可以选择保存到 SD 卡或保存到 RerWare 的服务器。该应用支持以下功能(RerWare, LLC, n.d.):
• 应用安装文件(如果手机有 root 权限,包括 APK + 数据和 _market 链接)
• 联系人
• 通话记录
• 浏览器书签
• 短信(文本消息)
• 彩信(消息中的附件)
• 系统设置
• 主屏幕(包括 HTC Sense UI)
• 闹钟
• 词典
• 日历
• 音乐播放列表
• 集成的第三方应用程序
最后一个条目,“集成的第三方应用程序”,指的是提供 RerWare 钩子进行数据备份的公司。至少最初,RerWare 会支付开发者在其应用中包含 RerWare 备份支持。
有趣的是,该应用不仅运行在 Android 上,还运行在 Windows Mobile、Blackberry 上,并且很快将支持 Symbian OS。用户可以在一个平台上进行备份,然后在完全不同的支持操作系统上进行恢复。当设备备份存储在本地时,RerWare 会将单个 SQLite 文件保存到 SD 卡上。
在 Android 的最新版本中,现在提供了一个新的备份 API。开发者只需将这些 API 集成到他们的应用中,其余的备份工作由 Android 和 Google 处理。这为用户提供了安全、基于云的备份,并在应用之间保持一致性,很可能会成为事实上的标准。不幸的是,目前的研究尚未发现新的备份 API 在 Android 设备上留下的有用痕迹。
无论使用哪种备份应用,取证分析师都应确定是否安装了备份应用,如果安装了,备份数据存储在哪里。应该检查 SD 卡,以及其他设备,如计算机或笔记本电脑。备份中保存的数据在检查中显然具有重大价值。
AFLogical
AFLogical 是一种 Android 取证逻辑技术,免费提供给执法和政府部门。由 viaForensics 开发的应用程序通过内容提供者提取数据,这是 Android 平台的一个关键特性。这正是商业取证工具用于逻辑取证的技术。
请记住,Android 的安全模型在限制应用数据访问方面是有效的,但在少数情况下除外。以下是 Android 安全模型关键组件的快速回顾:
• 每个应用都会分配一个唯一的 Linux 用户和组 ID。
• 应用使用其特定的用户 ID 在专用进程和 Dalvik VM 中执行。
每个应用都有专用的存储空间,通常位于“/data/data”目录下,只有应用本身可以访问。
然而,Android 框架确实提供了一种机制,允许应用间共享数据。应用开发者可以在他们的应用程序中包含对内容提供者的支持,这使他们能够与其他应用共享数据。开发者控制着哪些数据可以被其他应用访问。在安装应用时,用户可以控制应用是否能够访问请求的内容提供者。
一些内容提供者的例子包括:
• 短信/彩信
• 联系人
• 日历
• Gmail
等等,还有更多。
AFLogical 应用利用内容提供者架构来获取设备上存储的数据。类似于商业的 Android 逻辑工具,需要在设备上启用 USB 调试,以便 AFLogical 提取数据。当前版本 1.5.1,从 41 个内容提供者中提取数据,并将输出信息保存到 SD 卡上,格式为 CSV 文件和 info.xml 文件,后者提供有关设备和安装应用的具体信息。AFLogical 支持运行 Android 1.5 及以上版本的设备,并特别更新以支持提取大型数据集,如包含超过 35,000 条消息的短信数据库。目前支持的内容提供者包括:
1. 浏览器书签
2. 浏览器搜索
3. 日历
4. 日历参与者
5. 日历事件
6. 日历扩展属性
7. 日历提醒
8. 通话记录
9. 联系人联系方式
10. 联系人扩展
11. 联系人分组
12. 联系人组织
13. 联系人电话
14. 联系人设置
15. 外部媒体
16. 外部图片媒体
17. 外部图片缩略媒体
18. 外部视频
19. 即时通讯账户
20. 即时通讯账户
21. 即时通讯聊天
22. 即时通讯联系人提供者(即时通讯联系人)
23. 即时通讯邀请
24. 即时通讯消息
25. 即时通讯提供者
26. 即时通讯提供者设置
27. 内部图片媒体
28. 内部图片缩略媒体
29. 内部视频
30. 地图-朋友
31. 地图-朋友额外信息
32. 地图-朋友联系人
33. 彩信
34. Mms 部件提供者(MMSParts)
35. 笔记
36. 人员
37. 已删除的人员
38. 手机存储(HTC Incredible)
39. 搜索历史
40. 短信
41. 社交合同活动
让我们逐步了解在设备上运行 AFLogical 的步骤。首先,确保你已经下载了 AFLogical,这需要通过 viaForensics 进行注册和批准。(你可以访问 AFLogical 页面:viaforensics.com/products/tools/aflogical/
。)接下来,你需要用你控制的 SD 卡替换用户的 SD 卡,并确保设备上启用了 USB 调试。然后将 Android 设备连接到你的 Ubuntu 工作站,并确保将 USB 连接传递到虚拟机。
警告
替换用户的 SD 卡
这个版本的 AFLogical 直接将内容写入 SD 卡,确保移除用户的 SD 卡并用检查者的 SD 卡替换是重要的。如果未执行此操作,将导致数据写入用户的 SD 卡,或者因为无法写入 SD 卡而使 AFLogical 失败。该应用程序的商业版本最终将用通过 adb 进行端口转发替换写入 SD 卡。
在终端会话中,验证你是否可以看到设备:
假设你将 AFLogical 应用程序保存在你的主目录中,你可以使用以下命令进行安装:
注意:如果设备上已经安装了 AFLogical,将显示错误,你必须卸载现有应用程序才能安装新版本。要卸载,请运行以下命令:
成功安装应用程序后,你可以直接从 Android 设备或通过命令行运行程序。如果你从命令行运行应用程序,你可以简单地启动应用程序,然后使用设备完成操作,或者让它自动运行。要自动运行应用程序和提取,请执行以下操作:
程序立即启动并开始从所有支持的内容提供者提取数据。如果你正在查看屏幕,你会看到一个类似于图 6.7 的图像。
图 6.7 AFLogical,从命令行提取所有内容。
或者,你可以使用以下命令简单地启动应用程序:
然后使用设备上显示的屏幕完成获取,如图 6.8 所示。
图 6.8 AFLogical,从命令行运行。
否则,你可以直接从设备上的所有应用程序屏幕运行应用程序,如图 6.9 所示。首先,访问 Android 应用程序菜单,寻找一个名为 viaForensics 的程序,并点击图标启动应用程序。
图 6.9 AFLogical 在所有应用程序列表中。
接下来,您将看到 AFLogical 数据提取屏幕。您可以选中或取消选中单个内容提供者,或者选择全部保留选中状态。然后点击捕获,这将开始如图 6.10 所示的数据收集过程。
图 6.10 AFLogical 捕获数据。
数据收集完成后,您将收到如图 6.11 所示的相应消息。
图 6.11 AFLogical,数据提取完成。
提取的数据保存在设备的 SD 卡上的一个名为 forensics 的目录中,以及一个以日期(YYYYMMDD.HHMM 格式)命名的子目录中。在这个例子中,我们使用 adb pull 命令将文件从 SD 卡移动到本地文件系统上的 AFLogical 目录。如果您检查该文件夹,您会看到:
这包含了提取的数据:
CSV 文件可以使用任何编辑器或表格程序查看。目录中还有一个名为 info.xml 的文件,其中包含有关设备的信息,包括 IMSI、IMEI、Android 版本、网络提供商等,以及所有已安装应用的列表。
现在法医检查员可以分析这些数据,并且可以轻松地与其他人共享。
警告
卸载 AFLogical
不要忘记卸载 AFLogical。如果未能卸载该应用,意味着 Android 设备可能会在法医代理仍然可以访问的情况下归还给所有者。要卸载 AFLogical,请输入以下命令:
adb uninstall com.viaforensics.android
这应该会显示成功。另外,您也可以回到主屏幕,按下菜单,选择应用程序,管理应用程序,选择 viaForensics,最后点击卸载。
商业供应商
目前,许多商业移动法医软件供应商已支持 Android。迄今为止,法医软件仅支持使用与 AFLogical 相同的内容提供者技术对 Android 设备进行逻辑检查。对于法医检查员来说,了解每个法医软件供应商如何实现 Android 支持可能是有帮助的。
每家软件公司都提供了一份软件评估版以及各自平台的概述,这些内容包含在每个章节的开头部分。本次评估使用了运行 Android 2.2 系统的摩托罗拉 Droid 手机。本节目的并非对每个平台进行评估,而是提供一个有帮助的概览。以下是为本次评估提供的法医软件包(按字母顺序排列):
• Cellebrite UFED
• Compelson MOBILedit!
• EnCase Neutrino
• Micro Systemation XRY
• Paraben Device Seizure
• viaForensics 的 viaExtract
测试了另外两个法医软件包。然而,遇到的问题阻止了它们这次的包含。这些供应商确实为 Android 提供了一种法医解决方案,如果你感兴趣,应该独立查看他们的产品。此次省略的软件包包括 Oxygen Forensic Suite 2010 和 Logicube 的 CellDEK。
任何此类概述的挑战在于,法医软件的更新频率很高,可能已经存在一个更新的版本。对特定软件包感兴趣的司法检查员和安全工程师应检查供应商的网站或直接与他们联系。
Cellebrite UFED
以下是由供应商提供的 Cellebrite 概述:
Cellebrite UFED 法医系统是一个独立的设备,能够从大约 1600 种移动设备中获取数据,并将信息存储在 USB 驱动器、SD 卡或 PC 上。UFED 还内置了 SIM 卡读取器和克隆器。克隆 SIM 卡的能力是一项强大的功能,因为你只需创建并插入原始 SIM 的克隆版,手机就能正常使用。然而,它不会在移动运营商的网络中注册,这就省去了法拉第袋的必要性,也避免了手机数据被更新(或删除)的可能。UFED 套件附带了大约 70 根线缆,用于连接现今大多数可用的移动设备。支持的连接协议包括串行、USB、红外线和蓝牙。
Cellebrite 还提供了 UFED 报告管理器,它提供了一个直观的报告界面,并允许用户将数据/报告导出到 Excel、MS Outlook、Outlook Express、CSV,或者直接打印报告。
UFED 设备完全支持 Unicode,因此可以处理任何语言启用的手机。此外,以下数据类型被提取:
• 电话簿
• 短信
• 通话记录(接收、拨出、未接)
• SIM ID 克隆
• 从 SIM/USIM 删除的短信
• 音频录音
• 视频
• 图片
• 手机详情(IMEI/ESN 手机号码)
安装
UFED 系统是一个独立的单元,包装在一个软壳中,包含 UFED 设备、用户手册、软件 CD-ROM、USB 蓝牙收音机(剑桥硅无线电有限公司)、250MB USB 驱动器和大约 72 根用于连接支持设备的线缆。
UFED 系统提供了几种机制,通过这些机制可以更新固件和软件。在设置日期和时间之后,检查员只需通过以太网电缆将 UFED 系统连接到网络,前提是提供 DHCP 和互联网访问。接下来,选择服务、升级、立即升级应用程序,并选择 HTTP 服务器作为源。对于这次测试,安装了最新的应用程序软件,版本 1.1.0.5。由于 UFED 系统是一个独立的解决方案,无需进行其他安装。
获取
在 UFED 系统上对摩托罗拉 Droid 的获取非常快速和简单。打开设备电源后,选择提取手机数据,摩托罗拉 CDMA,Moto. A855 Droid (Android),USB 磁盘驱动器(目标位置),以及所需的内容类型。然后 UFED 系统显示了以下指令(见图 6.12):
图 6.12 UFED 针对 Android 设备的指令。
应该注意的是,如果按照建议的步骤操作,联系人列表将被保存到 SD 卡上。执行这些步骤后,点击继续,获取过程将继续进行。UFED 系统接下来提示:
在此步骤完成后,将继续进行获取。在获取完成之前,你可能会再次被提示设置 UMS。获取过程耗时超过三分钟,并提供了以下提示:
获取的结果存储在插入 UFED 的闪存驱动器上。在此驱动器上创建了一个 25 MB 的文件夹,其中包含视频、音频和图片的文件夹。还创建了三个感兴趣的文件:电话簿 2010_11_23 (001).htm,短信消息 2010_11_23 (001).htm,和报告.htm。所有这些都可以在网页浏览器中查看。报告.htm 文件包含了提取的完整报告。这包括手机检查报告属性、手机检查报告索引、手机联系人、手机短信—文本消息、手机来电列表、手机去电列表、手机未接来电列表、图片、铃声、音频和视频部分。
整个获取过程大约需要十分钟。在获取完成后,快速检查 SD 卡发现一个名为 00001.vcf 的文件,其中包含了导出过程中的联系人信息。
电话信息布局良好且相当准确。
数据展示与分析
获取的数据存储在连接到 UFED 系统的闪存驱动器上,包含一个存储视频、音频文件和图片的文件夹以及三个 HTML 文件,这些文件包含了报告数据:
1. 电话簿 2010_11_23 (001).htm
2. 短信消息 2010_11_23 (001).htm
3. 报告.htm
这些文件可以在网页浏览器中查看,报告样本显示在图 6.13 中,其中捕获了详尽的手机信息。
图 6.13 UFED 手机信息报告。
图 6.14 显示了电话联系人的布局。
图 6.14 UFED 电话联系人报告。
图 6.15 按时间顺序显示了短信,并详细说明了短信是发送还是接收。
图 6.15 UFED SMS 报告。
然而,已删除的短信和 MMS 消息不会显示。
通话记录按时间顺序显示,如图 6.16 所示,并包括通话时长。它们被分类为来电、去电和未接部分。
图 6.16 UFED 电话通话报告。
通话记录中删除了几个电话;然而,UFED 能够提取并显示详细信息。
手机上找到的所有图像都会被报告,包括图像的缩略图和详细信息,如文件名、大小、创建日期和时间以及分辨率,如图 6.17 所示。
图 6.17 UFED 图像报告。
已删除的图像没有出现,似乎每张图像都创建了一个副本。音频和视频文件都被报告。报告包括文件名、文件大小、创建日期和时间以及查看或收听媒体的链接,如图 6.18 所示。
图 6.18 UFED 音频和视频报告。
没有返回已删除的视频,而且上传到设备的歌曲也没有出现在报告中。报告中的音频文件来自 Google 地图导航。
Compelson MOBILedit!
以下是由供应商提供的 MOBILedit! 概述:
只需单击一下,MOBILedit! Forensic 就可以从手机中收集所有可能的数据,并在电脑上生成详尽的报告,以便存储或打印。这是最通用的手机解决方案,软件支持大多数 GSM 手机,开放架构允许支持任何手机。系统允许你自定义输出,使其完全适应你司法系统的需求。
MOBILedit! Forensic 对手机进行彻底分析,包括电话簿、最后拨打的号码、未接电话、已接电话、MMS 消息、SMS 消息、照片、视频、文件、手机详情、日历、便签、任务等等。
MOBILedit! Forensic 为全球服务,报告可以用任何语言生成。你可以根据特定需求准备创意模板。你构建所有希望在每个最终报告中出现的文本。它还允许 XML 导出,以便你可以将应用程序与其他系统连接。XSL 模块将所有数据导出并格式化,以便在互联网浏览器中查看。你可以根据需要刻录、发送和分享报告。
MOBILedit! 法医报告可以无需人工干预自动生成。在 MOBILedit! 法医中,无需从 SIM 卡或手机导入或导出数据存根,但在手动调查模式下是可能的。它是只读的,因此可以防止设备上的更改,这可能导致证据的消失。所有项目还通过数字签名中使用的 MD5 哈希码受到后期修改的保护。它可以帮助您快速定位可能修改的位置。
MOBILedit! 法医还经常更新和升级,因此您可以确保使用的是绝对最新的技术。其详尽的报告和用户友好的设计使其成为一种工作的乐趣。
安装
从 www.mobiledit.com 下载了 MOBILedit!4 法医应用程序,安装仅需几分钟。安装完成后,首次运行应用程序,系统会提示您检查更新。
为了激活软件,Compelson 会发送一封带有“激活卡”附件的电子邮件。这个 PDF 文件包括安装说明以及一个无需任何问题即可使用的激活密钥。
获取
要开始获取,检查员首先需要使用 USB 将 Android 设备连接到法医工作站,并确保启用了 USB 调试。MOBILedit! 尝试检测设备,如图 6.19 所示。
图 6.19 检测 Android 设备。
点击“完成”后,出现了提示在设备上安装“连接器”应用的通知,如图 6.20 所示。
图 6.20 安装连接器。
在快速安装后,您为调查创建一个名称,并选择要提取的数据类型。在如图 6.21 所示的示例中,选择了备份“整个文件系统”的选项,该选项无误执行,并显示了如图 6.22 所示的成功状态。
图 6.21 备份整个文件系统。
图 6.22 操作成功完成。
然后,您可以决定是将此添加到现有案例中,还是创建一个新案例。对于本例中,如图 6.23 所示,创建了一个新案例,并选择了 XLS 数据导出格式选项。
图 6.23 数据导出格式。
数据呈现和分析
在获取设备后,MOBILedit 立即显示已获取设备的统计信息,以及可供分析的应用程序数据视图。图 6.24 展示了主屏幕,检查人员可以查看特定设备信息,包括 IMEI 号码、序列号以及设备上的电话内存量、电池信号、网络信号和内存卡可用空间等详细信息。
图 6.24 主屏幕。
在树视图中下一个选项是电话簿,检查人员可以查看电话簿中存储的所有联系人,包括电子邮件地址、电话号码、昵称以及关于联系人的任何备注,如图 6.25 所示。
图 6.25 电话簿。
通话记录紧随其后,被分为未接电话、最后拨打的号码和已接电话,如图 6.26 所示。
图 6.26 通话记录—未接电话。
短信同样被分为不同类别,包括收件箱、已发送和草稿箱。每个部分都包含了消息接收(或发送)的日期和时间、消息内容以及发件人信息。联系人姓名与电话簿链接,因此可以显示姓名和电话号码。图 6.27 展示了短信收件箱。
图 6.27 短信—收件箱。
所有 MMS 消息都显示在“MMS 存储”文件夹中,如图 6.28 所示。在左侧,显示有关消息的信息,包括主题、发送者号码、接收者号码以及日期和时间。在右侧是实际图像的预览。
图 6.28 MMS 存储。
选择日历选项将在报告工具中拉起一个日历,如图 6.29 所示。
图 6.29 日历。
从设备或 SD 卡提取的额外数据显示在“文件”目录中。此目录包含了设备上的文件系统列表。尽管这些文件夹有些是空的(如缓存、配置和数据),但也有包含从设备获取的原始文件的文件夹。例如,在 SD 卡文件夹中,子文件夹“secret stuff”包含两个文件,如图 6.30 所示。
图 6.30 SD 卡文件。
最后,该工具还为指定文件提供了十六进制转储功能。选择“十六进制转储”后,再选择一个文件(在此示例中,选择了一个.jpg 文件),十六进制转储内容将在右侧的十六进制编辑器中显示,如图 6.31 所示。
图 6.31 十六进制转储。
在 Android 上的大多数原始用户数据文件可以在“data”文件夹中找到,当 MOBILedit 在树形视图中为此文件夹(位于“文件”目录下)创建条目时,它并不包含任何文件。
需要注意的是,在采集和分析完成后,“MOBILedit! Connector”应用程序仍然安装在设备上。调查员在调查完成后应考虑手动从设备上卸载该软件。
EnCase Neutrino
以下是供应商提供的中微子概述:
EnCase® Neutrino® 旨在为执法部门、安全分析师和 eDiscovery 专家提供法医级别的移动设备数据收集和审查。调查员可以在任何 EnCase® 产品中处理和分析移动设备数据,同时与其他类型的数字证据一起工作。
该解决方案具有对最常见的移动设备和智能手机操作系统(包括 iPhone、Palm、BlackBerry®、Android、Windows Mobile、Motorola、Nokia、Samsung 和更多)的硬件支持和解析能力。调查员可以收集、分析和保存所有可能相关的数据,包括:
• 设备设置
• 联系人
• 通话记录
• 电子邮件
• 图像
• 短信/彩信
• 日历
• 设备上存储的其他文件
使用 EnCase Neutrino,调查员可以:
• 使用易于使用的向导从各种设备采集数据
• 将来自多个设备和计算机媒体的数据相关联
• 将采集的数据无缝集成到 EnCase 法医或 EnCase 企业版中进行分析
• 快速解析数据,以提高调查过程的速度
• 相比类似产品,访问选定设备上的更多数据
安装
安装 EnCase Neutrino 首先需要安装 EnCase,然后才是 Neutrino。按照屏幕上的指示操作,软件安装顺利进行。要使用该软件,你必须拥有 EnCase 提供的硬件 USB 令牌。
采集
Neutrino 对 Android 设备的采集在单一界面上处理。首先,选择设备、制造商和型号。接下来,输入有关案件和设备的基本信息。最后,将设备连接到你的法医工作站,并点击“采集当前项目”。图 6.32 显示了采集界面。
图 6.32 中微子采集界面。
采集过程不到一分钟就完成了。完成后,点击生成报告以查看采集结果。
数据展示与分析
Neutrino 报告有简短和详细两种。简短报告如图 6.33 所示,显示了详细报告的所有条目,但细节较少。
图 6.33 Neutrino 联系人简报。
并且详细视图如图 6.34 所示,提供了关于联系人的更多详细信息。
图 6.34 详细报告中的中微子联系人。
短信部分也有简略和详细视图。简略视图只显示对话中的另一个电话号码、消息的日期和时间、消息方向(发送或接收)以及消息内容。详细视图,如图 6.35 所示,包括与消息相关的电话号码的名称以及消息的状态等信息。
图 6.35 详细报告中的中微子 SMS。
MMS 消息只出现在详细视图中,如图 6.36 所示。
图 6.36 详细报告中的中微子 MMS。
没有恢复任何已删除的短信。用户网页历史的详细视图,如图 6.37 所示,提供了大量细节。
图 6.37 详细报告中的中微子网页历史。
从设备中恢复的仅有照片是作为 MMS 发送的图片,而不是保存在设备 SD 卡上的照片或视频。
报告可以导出为其他格式,例如 HTML,以便整个报告可以在一页中查看,如图 6.38 所示。
图 6.38 以 HTML 格式导出的中微子报告。
Micro Systemation XRY
以下是由供应商提供的 XRY 概述:
XRY 是由位于斯德哥尔摩的 Micro Systemation(MSAB)公司开发的一款专业的移动设备取证工具。
自 2002 年以来,XRY 一直可用,“XRY Complete”是一个包含软件和硬件的套件,可进行移动设备的逻辑和物理分析。产品配有一个便捷的便携式箱子,内部定制,包含所有必要的硬件,如下所示:
• XRY 取证包软件许可密钥
• 用于 USB、蓝牙和红外连接的通信枢纽
• SIM ID 克隆设备
• 一套 SIM 卡克隆卡
• 带写保护的通用存储卡读卡器
• 用于逻辑和物理获取的完整电缆套件
• XACT 十六进制查看器软件应用
• 用于分发至第三方的 XRY 阅读工具
XRY 是经过法医调查员反馈设计和优化的,向导会引导你完成整个流程以协助检查。新的统一逻辑/物理提取向导和生成的报告有助于以整洁、清晰、专业的方式向检查员展示设备的全部内容。
XRY 的独特功能之一是设备手册,其中包含每个设备完整且详细的可用支持列表;指出了可以检索哪些数据,以及哪些数据无法恢复,这对于调查人员有时同样重要。
所有提取(逻辑或物理)都保存在一个 XRY 文件中,出于法医安全目的保留该文件。从 XRY 文件中,你可以根据需要创建 Word、Excel、Open Office 或 PDF 格式的报告。你可以包括案件数据和相关引用,选择报告中包含哪些数据,然后将其分发给调查中涉及的其他方;律师、检察官或其他调查员。MSAB 提供了一个免费的 XRY 阅读器,你可以将其提供给第三方,让他们在报告上做笔记——同时保持数据的原始法医完整性。
在该软件包内是 XACT 十六进制查看器应用程序,用于对恢复的原始数据进行更详细的检查,并协助搜索和手动解码,以补充 XRY Physical 中可用的自动解码。
XRY 法医包 5.1 版于 2010 年 6 月 28 日发布,增加了对 Apple iPad 的支持。
安装
XRY 是一个 Windows 应用程序,你可以通过供应商提供的单个安装程序进行安装。安装包括一个安装向导,在线检查软件更新,大约需要 15 分钟。该软件需要使用硬件加密狗才能运行。
采集
安装完成后,运行软件,选择“提取数据”,然后选择从手机中提取数据。之后,你必须识别设备类型,这可以通过几种方式完成。对于此示例,通过选择“名称搜索”,搜索 Droid,选择 Motorola Droid A855,然后选择“下一步”执行了搜索。这如图 6.39 所示。
图 6.39 XRY—搜索设备类型。
尽管 MSAB 法医套件支持某些设备的物理提取,但 Android 设备仅支持逻辑提取。选择逻辑采集后,软件会显示可用于提取的数据,如图 6.40 所示。
图 6.40 XRY Droid 提取可用的数据类型。
选择“下一步”,然后选择通过电缆提取数据并进行完整读取的选项,最后点击“下一步”开始数据提取。提取完成后,你会看到如图 6.41 所示的提取完成屏幕。
图 6.41 XRY 提取完成。
数据展示与分析
提取后,应用程序在内部显示数据,易于导航。联系人列表不仅包括联系人的详细信息,还显示了联系人的存储位置,如图 6.42 所示。
图 6.42 XRY 联系人列表。
通话记录提供了通话类型(拨打或接听)、姓名、号码、时间、时长和存储位置,如图 6.43 所示。
图 6.43 XRY 通话记录。
图 6.44 展示了包括号码、姓名、短信内容、时间、状态、存储、索引以及所在文件夹的短信信息。
图 6.44 XRY 短信。
图 6.45 显示,从设备中提取的唯一图像来自一条彩信。
图 6.45 XRY 图像。
其他数据被提取了。然而,它并没有在专门的报告部分中显示。例如,你可以在报告的日志部分查看网页浏览器历史、网站书签和谷歌搜索历史。
MSAB 还有一个名为 XACT 的工具,它提供了特定条目的十六进制视图。例如,图 6.46 展示了短信内容。
图 6.46 XACT—短信内容。
Paraben 设备查扣
以下是供应商提供的 Device Seizure 概述:
Paraben 的 Device Seizure(DS)是一款手持式取证工具,使调查人员能够对大约 2400 种型号的手机、PDA/智能手机和便携式 GPS 设备执行逻辑和物理数据获取、删除数据恢复以及完整数据转储。物理数据获取—通常是找到删除数据的地方—大约有三分之二的支持型号可以做到。此外,DS 被记录并验证为 100%符合取证要求,意味着数字证据在任何情况下都不会被改变。通过任何 PC 的标准 USB 数据线连接,这些功能都是可能的。
过去两年中,谷歌的 Android 移动设备操作系统对行业产生了重大影响。Paraben 专注于与最新的创新保持同步,并将对 Android 操作系统的支持添加到 DS 中。随着 DS 4.0 版本的发布,调查人员能够获取最常见的数据,如通话记录、地址簿和短信。除了这些数据类型,DS 还将获取多媒体文件—彩信、图像、视频和音频文件。可以从 Android 型号获取的完整数据类型列表如下:
• 地址簿,包括联系人分组、组织以及地址簿设置,以及标准的姓名、电话号码和地址
• 短信
• 彩信
• 通话记录
• 联系方式
• 浏览器历史
• 外部图像媒体(元数据)
• 外部图像缩略媒体(元数据)
• 外部媒体、音频和杂项数据(元数据)
• 外部视频(元数据)
• 所有已安装应用程序及其版本的列表
安装
在 Windows 取证工作站上安装了 Paraben DS 版本 4.1.3971.37683。安装过程需要安装许多必要的驱动,这需要相当长的时间。软件在使用前必须注册,可以通过硬件加密狗或通过 Paraben 提供的注册密钥文件来完成。要安装注册密钥文件,只需将文件复制到 DS 安装目录中,该目录通常是 C:\Program Files\Paraben Corporation\Device Seizure。
获取
要开始获取新的 Android 设备,首先你需要打开一个新案例并完成所需的案例信息部分。然后选择“数据获取”,并选择 Android,此时会提供以下指引:
根据这些说明,摩托罗拉手机不被支持。然而,摩托罗拉 Droid 的获取是成功的。
按照说明操作,然后点击“下一步”,此时 DS 尝试识别手机。确保识别的设备信息准确无误,然后如图 6.47 所示点击“下一步”。
图 6.47 设备扣押设备识别。
下一个屏幕提供了 DS 可以从设备中提取的支持数据类型列表。全部被选中,包括获取它可以读取的文件系统部分和 SD 卡,因此获取过程较慢。图 6.48 展示了 DS 获取时间。
图 6.48 设备扣押获取时间。
获取过程在大约两小时后完成,并接受了整理文件的提示。整理文件的过程花费了相当长的时间,但少于两小时。在那时,获取过程完成。图 6.49 展示了 DS 获取完成的输出。
图 6.49 设备扣押获取完成。
数据展示与分析
设备扣押以易于浏览和导航的结构显示获取的数据和应用程序。获取的目录结构如图 6.50 所示。
图 6.50 设备扣押 Droid 目录结构。
联系人不仅提供姓名、备注、电话号码和电子邮件,还提供了一些有用的字段,如联系次数、最后联系时间以及可用的照片,如图 6.51 所示。
图 6.51 设备扣押联系人。
短信报告提供了预期的字段,但已删除的信息并未包括在内。报告没有将联系人数据与电话号码进行交叉参考,因此检查员必须知道电话号码或自行处理交叉参考。图 6.52 展示了 DS 短信。
图 6.52 设备扣押短信。
然而,通话记录确实进行了交叉引用并显示了日期、信息类型、持续时间、号码、号码类型、名称,或者是否为新通话(大概是该号码第一次出现在通话记录中)。图 6.53 显示了通话记录。
图 6.53 设备查获的通话记录。
完整的网络历史记录可供使用并进行分析,包括访问次数和书签。但是,数据视图相当长,仅在 图 6.54 中显示了开头的信息。
图 6.54 设备查获的网络历史记录。
设备查获允许检查员选择任何文件并将其提取到取证工作站进行进一步分析。这对于查看或分析 DS 环境中不支持的原生文件类型很有帮助。由于在获取阶段选择了文件分类选项,因此每个提取的文件都被识别并按类型分组,从而可以快速访问感兴趣的文件。这在 图 6.55 中显示。
图 6.55 设备查获的文件分类器。
viaForensics 的 ViaExtract
以下是通过供应商提供的 viaExtract 概述:
viaExtract 是来自 viaForensics 的最新安卓取证解决方案,该公司是该领域的领先者和创新者。除了他们的移动取证白皮书和书籍外,viaForensics 还为执法和政府部门提供了一个免费的安卓取证解决方案,名为 AFLogical。
基于这一经验,viaForensics 开发了 viaExtract,该工具能够提取、分析和报告安卓设备中的数据。viaExtract 是一个模块化解决方案,接下来将提供基于 viaForensics 研究和开发的安卓取证物理技术。关于 viaExtract 的最新信息可以在网上找到,网址是 viaforensics.com/products/viaextract/
,包括对安卓取证物理技术的支持、其他支持的移动平台以及先进的取证恢复技术。
viaForensics 是一家取证和安全公司,积极调查移动设备和传统计算机。他们作为检查员的直接经验导致开发了一个专门为取证检查员量身定做的工具。该工具旨在频繁更新,因为移动取证学科正在迅速变化。集成到 viaExtract 中的独特调试和报告系统简化了将调试和净化数据发送到 viaForensics 的过程,以协助设计和改进在多样化的安卓生态系统中运行的 viaExtract。
安装
viaExtract 软件作为虚拟机分发,因此它可以在运行支持虚拟化软件的 Microsoft Windows、Apple OS X、Linux 或其他操作系统上运行。该软件完全配置好,包括必要的驱动程序和支持库,这大大简化了安装过程。有几个支持虚拟化软件包是免费的,包括:
• Oracle 的 VirtualBox
• VMWare Player
市场上也有许多商业软件包可供选择。虚拟机从 viaForensics 的网站下载,然后导入到支持的软件中。检查员可以使用虚拟化软件内置的功能,例如在每次案例后恢复软件到原始状态快照,或者直接将其集成到宿主操作系统中,共享数据存储和其他宝贵功能。
收购
将 viaExtract 导入到宿主系统的虚拟化软件并运行后,法医检查员登录到 Ubuntu 虚拟机并运行 viaExtract,如图 Fig. 6.56 所示。
图 6.56 viaExtract 软件。
然后,检查员可以开始一个新案例或打开一个旧案例,如图 Fig. 6.57 所示。
图 6.57 viaExtract—新案例。
输入案例详情后,检查员可以选择直接从 Android 设备提取数据,或者从文件系统上的先前数据提取加载。后者对于检查员使用 viaForensics 的免费 AFLogical 软件从 Android 设备提取数据的案例非常有用。它还允许检查员根据以前设备提取的数据生成新的法医报告,这在使用新报告功能时非常有帮助。
在此示例中,我们将通过点击前进从 Android 设备中提取数据。然后我们会看到加载数据屏幕,提供启用 USB 调试的指导。点击确定后,数据提取就开始了,如图 Fig. 6.58 所示。
图 6.58 通过 viaExtract—数据提取。
数据提取完成后,检查员会看到一个数据提取列表,并可以选择他们希望在法医分析和报告中包含的内容,如图 Fig. 6.59 所示。
图 6.59 通过 viaExtract—法医分析和报告。
完成选择并点击应用后,报告逻辑被执行,数据提取完成。
数据展示和分析
数据提取完成后,viaExtract 向用户展示分析后的数据。通过导航应用程序左侧的选择项,检查员可以查看报告的不同部分。例如,首先展示的是设备信息部分,如图 Fig. 6.60 所示。
图 6.60 viaExtract—设备信息。
接下来,图 6.61 显示了报告中可用的浏览器历史和书签。
图 6.61 viaExtract—浏览器历史和书签。
在此示例中,你可以看到报告视图的几个功能,包括:
• 能够即时筛选报告的任何部分
• 能够对任何一列进行升序或降序排序
在下一个示例中,对 29 条人员记录应用了viaforensics.com的筛选条件,结果剩下 2 条。然而,许多字段显示在截图右侧,如图 6.62 所示。
图 6.62 viaExtract—筛选过的人员记录。
总的来说,viaExtract 目前支持 41 个以上的内容提供者。然而,在下一个版本中,将积极查询大约 100 个内容提供者。如果设备响应内容提供者,提取和随后的报告将成功。图 6.63 是通话记录的一个示例。
图 6.63 viaExtract—通话记录。
图 6.64 显示了视频媒体元数据。
图 6.64 viaExtract—视频媒体元数据。
报告也可以导出为 PDF 格式,如图 6.65 所示。
图 6.65 viaExtract—导出为 PDF。
物理技术
法医技术通常获取目标数据存储的物理映像,从而指数级地恢复更多数据,并且常常绕过程序保护。这些技术不仅可以访问已删除的数据,还可以访问系统不再需要而仅是废弃的数据。例如,一些系统记录上次访问网站的时间,并且每次再次访问该站点时更新日期字段。以前的日期和时间数据并未被明确删除,但系统没有跟踪它们。在采用 YAFFS2 的 Android 设备上,只要垃圾回收没有发生,就可以恢复以前的值。因此,物理技术不仅可以访问已删除的数据,还可以访问系统上的过时数据。
安卓法医物理技术分为两大类:
• 硬件:将硬件连接到设备或物理提取设备组件的方法
• 软件:在具有 root 访问权限的设备上运行的技术,并提供数据分区的完整物理映像
基于硬件的方法需要专业且通常昂贵的设备和培训,但对于无法获得 root 访问权限的设备可能非常有效。基于软件的物理技术是获取的直接路径,通常是最佳起点。当然,在软件技术可行之前,你必须在设备上拥有 root 访问权限。
基于硬件的物理技术
本节提供了两种基于硬件的物理技术:JTAG 和芯片摘除的简要概述。
JTAG
JTAG 是在 20 世纪 80 年代创建的,旨在开发一个用于测试印刷电路板(PCB)上的布线和互连的标准。到 1990 年,该标准已完成,成为电气和电子工程师学会的标准,即 IEEE 1149.1-1990(IEEE SA, n.d.),后来在 2001 年进行了更新,名为 IEEE 1149.1-2001。该标准被广泛接受,如今大多数 PCB 都有 JTAG 测试访问端口(TAPs),便于访问中央处理单元(CPU)。
JTAG TAP 暴露了各种信号,大多数移动设备包括以下内容:
-
TDI—测试数据输入
-
TDO—测试数据输出
-
TCK—测试时钟
-
TMS—测试模式选择
-
TRST—测试重置
-
RTCK—返回测试时钟
JTAG 的一个主要障碍是在 PCB 上定位 TAP 并追踪到 CPU,以确定每个测试功能的负责焊盘。即使芯片制造商已经发布了 CPU 地图,这也很难实现。此外,从芯片追踪 JTAG 功能可能非常困难,可能需要首先从 PCB 上移除 CPU。设备制造商拥有 JTAG 原理图,但通常被认为是公司机密,只发布给授权服务中心。另一种方法是,通过读取每个焊盘的电压来确定每个焊盘的功能,并根据参考电压识别功能。在某些情况下,刷机盒制造商或各种在线团体会发布 JTAG 引脚输出。图 6.66 是一个 T-Mobile HTC G1 JTAG 引脚输出的例子。六个引脚输出由小白圈指示,右侧的图例提供了详细信息。
图 6.66 T-Mobile HTC G-1 PCB。
在大多数情况下,你的焊接线连接到 PCB 上的焊盘,另一端连接到一个特殊设备(刷机盒),通过软件管理 CPU。一些公司制作了定制连接器,支持特定设备,并通过将 PCB 放在两个带有弹簧针的夹具板之间简化与焊盘的连接。弹簧针与 PCB 上的 JTAG 焊盘接触,然后可以轻松连接到刷机盒。然而,有经验的工程师可能会发现直接将引线焊接在 PCB 上可以提供更稳定的连接。
一旦引线连接到适当的焊盘,就必须给主板供电以启动 CPU。每个 CPU 制造商都会发布其硬件的参考电压,这个电压绝不能超过。一些编程器盒子提供了管理电压的选项,但一般来说,应该通过内置数字电压表的 external 电源来管理电力,以确保准确。主板供电后,编程器盒软件能够执行 NAND 闪存的完整二进制内存转储。然而,这种连接是串行的,需要相当长的时间。尽管存在所有这些复杂性,如果正确执行 JTAG 技术,手机可以重新组装并且能够正常工作,不会有数据丢失。
尽管 JTAG 是从 Android 设备 NAND 闪存中提取数据的一种选择,但它非常困难,只有经过足够培训并且具有焊接小型 PCB 连接特定经验的合格人员才应尝试。如果在 JTAG 焊盘上焊接出错或给主板施加了错误的电压,不仅可能导致 JTAG 失效,还可能严重损坏设备。因此,JTAG 通常不是获取 Android 设备物理取证镜像的首选方法。
芯片移除
芯片移除是一种从设备中物理移除 NAND 闪存芯片并在外部进行检查的技术。芯片移除技术允许恢复损坏的设备,并且绕过密码保护的设备。这种移除过程通常是破坏性的——将 NAND 闪存重新连接到 PCB 并使设备运行相当困难。
芯片移除技术有三个主要步骤:
-
NAND 闪存芯片通过焊接拆除或使用喷射热空气和真空的特殊设备来从设备中物理移除。还有一些技术是将芯片加热到特定温度。在这个过程中很容易损坏 NAND 闪存,因此存在用于提取的专业硬件甚至控制软件。
-
移除过程通常会损坏芯片底部的连接器,因此必须先进行清洁,然后再进行修复。修复芯片底部导电球的过程被称为重新焊接。
-
然后将芯片插入专用的硬件设备中,以便读取。这些设备通常必须针对特定的 NAND 闪存芯片进行编程,并且已经支持许多较流行的芯片。
在这一点上,你现在有了存储在 NAND 闪存芯片上的数据的物理镜像。
尽管芯片脱焊过程非常有效,但其进入门槛也很高。设备和工具的成本非常高,检查员必须具备非常专业的培训和技能。在脱焊过程中,NAND 闪存芯片在从 PCB 上移除时可能会损坏。最后,还需要一个防静电的干净房间。虽然地方甚至州执法机构和取证公司可能会发现芯片脱焊的成本过高,但这绝对是一个大型机构在其取证技术组合中会发现有用的有效技术。
基于软件的物理技术和权限
基于软件的物理技术相对于基于硬件的技术有诸多优势。软件技术:
• 更容易执行;
• 通常直接访问文件系统,以便完整复制所有逻辑文件(简化某些分析);
• 对设备或数据损坏的风险非常小。
要执行基于软件的物理技术,首先必须获得 root 权限,然后运行采集程序。
不幸的是,Android 设备默认不启用 root 权限。然而,在某些情况下可能获得 root 权限,我们接下来会介绍其中一些情况。但是,需要记住获取 root 权限的一些主要挑战:
-
获取 root 权限在很多情况下都会改变设备。
-
获取 root 权限的技术不仅因制造商和设备而异,而且针对每个 Android 版本甚至使用的 Linux 内核都不同。仅根据到目前为止开发的 Android 设备和版本,就有数千种可能的组合。
-
许多用于获取 root 权限的漏洞在线上被讨论,而且常常包含不准确的信息。
鉴于此,获取 root 权限可能相当困难,而且常常令人非常沮丧。
有三种主要的 root 权限类型:
-
通过 root 漏洞获得的临时 root 权限,在重启后不会保留。在这种情况下,通常 adb 守护进程不会以 root 身份运行。
-
通过自定义 ROM 或持久 root 漏洞获得的完全 root 访问。自定义 ROM 通常以 root 身份运行 adb 守护进程,而大多数持久 root 漏洞则不会。
-
通过刷入自定义恢复分区或自定义 ROM 的一部分来在恢复模式下获取 root。自定义 ROM 通常以 root 身份运行 adb 守护进程,大多数修改后的恢复分区也是如此。
想要获取 root 权限的 Android 爱好者通常只对完全、持续的 root 权限感兴趣。然而,从取证的角度来看,更倾向于使用临时 root 权限或通过自定义恢复模式获取 root 访问。
如果你需要在新的设备或 Android 版本上获取访问权限,你必须有一个用于测试的单独设备,以确保该过程有效且不会丢失数据。测试虽然耗时,但在这种情况下是一个重要的步骤。
以下各节详细介绍了每个步骤。
su
法医检查员首先应该检查的是设备是否已经拥有 root 权限。这是我们所讨论的任何技术中最简单的,绝对值得花费很短的时间来测试。设备必须启用 USB 调试,即使设备被锁定,你也应该检查。如果设备没有密码锁定,请确保已启用 USB 调试,这将在第三章中介绍。
接下来,将设备连接到你的工作站,尝试通过以下方式请求超级用户访问权限以获取 root 权限:
在此例中,没有授予 root 权限。这是该命令典型的输出结果。然而,以下情况出现在一个已经拥有 root 访问权限的设备上:
与其收到权限被拒绝的错误,不如直接授予 root 权限。这可以通过新的#提示符体现出来。有时设备会允许 root 访问,但要求用户点击设备上显示的提示上的 OK 来授权权限。如果设备没有密码保护,你应该检查是否有提示显示。
研究 Root 权限漏洞
如果设备尚未拥有 root 权限,你可以在线研究可能的技巧。这个过程可能会非常令人沮丧,因为许多经验不足的人在各种讨论板上寻求帮助。然而,尽管存在大量不准确的信息,也有一些知识渊博的资源和技术是确实有效的。
尽管有许多讨论 Android root 漏洞的网站,但有一个网站无疑是最出色的。xda-developers 网站极其受欢迎且活跃,它自称是“Android 和 Windows Mobile 平台智能手机爱好者和开发者最大的互联网社区”(Android & Windows Phone, n.d.)。其他许多网站发布了各种 root 漏洞,但通常都会链接到 xda-developers 上的一个讨论主题。
研究 root 漏洞的最佳方法通常是使用你喜欢的搜索引擎简单地搜索互联网,拥有一个测试设备,以及大量的耐心。
恢复模式
恢复模式是 Android 的一个操作模式,旨在应用更新、格式化设备以及执行设备上的其他维护工作。大多数设备上的默认恢复模式非常基础,只提供一些有限的功能,而且肯定不会在 shell 中提供 root 权限。
另一方面,自定义恢复分区几乎总是允许通过 shell 获取 root 权限。这些新的恢复分区通常由用户在设备被 root 时安装,并提供各种简化自定义 ROMS 备份和更新过程的功能。
与研究 root 漏洞一样,安装自定义恢复分区的检查员应该极度小心,因为该过程通常包含可能导致设备无法使用的内核和无线电更新(通常称为“变砖”),如果设备、内核和无线电固件之间存在不兼容。首先必须在实验室设备上进行大量测试,以确保没有问题发生。并且法医检查员应该了解在安装自定义恢复固件时设备上正在被修改的内容。
支持恢复模式的软件存储在专用分区上,体积相当小。在许多设备上,你可以通过检查/proc/mtd 来了解恢复分区的详细信息:
这个列表来自 T-Mobile HTC G1,你可以看到恢复分区的容量为 0x500000 字节,即 5 MB(0x500000 = 5,242,880,然后除以 1024 两次转换为 KB,最后为 MB)。以下是本书中使用的其他手机的大小:
• T-Mobile HTC G1:5 MB
• HTC Incredible:4 MB
• 摩托罗拉 Droid:4 MB
• 谷歌 Nexus One:4 MB
这有助于我们理解在下一节中探索替换虽小但重要的恢复分区技术。
在上一节介绍绕过密码保护设备的技术时,访问恢复模式是可能的解决方案之一。同样,建议检查恢复分区是否具有 root 权限,因为它将启用基于软件的物理技术。首先,按照表 6.2 所述启动设备进入恢复模式,或者直接在互联网上搜索你设备的特定键组合。设备进入恢复模式后,将其连接到你的 Ubuntu VM,并按以下方式运行 adb:
在这个情况下,adb 发现了一个处于恢复模式的设备。然而,许多设备在恢复模式下根本不支持 adb 访问,尤其是在原厂设备上。在这种情况下,你可以按照以下方法判断 shell 是否具有 root 权限:
如我们之前所讨论的,如果你看到一个#提示符,这表示你有 root 权限。如果你看到的是$提示符,则你没有 root 权限。不过,你至少应该尝试通过运行 su 命令来获取它们。
引导加载程序
如 第二章 所讨论的,引导加载器是 Android 启动过程中早期执行的小程序,负责(除其他细节外)选择和加载主内核。在某些设备上,存在特殊软件,通常由制造商开发,可以与引导加载器交互。这种软件能够将新镜像写入设备的 NAND 闪存。制造商使用此软件修复无法正常工作的设备,可能在其他情况下如开发和测试也会使用。法医检查员也可以使用该软件将实用程序或利用程序刷新到设备的 NAND 闪存,这将提供 root 权限。然而,大多数设备的引导加载器在出厂时处于锁定状态,这阻止了此类更新。
一个与 Motorola 安卓设备交互的软件示例是 Motorola 开发的名为 RSD Lite 的程序。RSD Lite 是专有软件,似乎只分发给 Motorola 服务中心用于设备维修。可以认为任何使用此软件的人都拥有完全授权,本概述仅作为某些安卓设备刷新操作的示例。
有许多网站讨论 RSD Lite 并提供该软件的使用指南。modmymobile.com 就是这样一个网站,它提供了一篇名为“[指南] 使用 RSD Lite 版本刷新 Linux Motorola 手机”的文章,该文章提供了软件的逐步操作说明([Guide] Flashing Linux, n.d.]。
在设备得到支持且引导加载器已解锁的情况下,你可以将设备连接到工作站,然后运行软件,软件会检测到手机。然后你必须提供适当的 .sbf 文件,然后点击开始,如 图 6.67 所示刷新设备。
图 6.67 RSD Lite。
完成过程并重新启动设备后,新的恢复分区(以及由使用的 .sbf 文件修改的任何其他区域)就准备好了。对于有适当授权使用 RSD Lite 的法医分析师来说,RSD Lite 可能是一个很好的选择。
sbf_flash
与 Motorola 的 RSD Lite 类似的一个工具是 sbf_flash,它没有 RSD Lite 的许可和使用的限制。这个应用程序是由一个安卓爱好者开发并在网上发布的,虽然在网上很多地方都可以找到,但最好是从作者的博客 OPTICALDELUSION 上获取,该博客会在新版本可用时更新。这个工具是在 Linux 上开发的,现在也可以在 OS X 上运行,因此大大简化了通过解锁引导加载器向 NAND 闪存刷新数据的过程。sbf_flash 的最新版本是 1.15,它支持以下功能:
要使用 sbf_flash,你首先必须确认设备是被支持的。对于本例,我们将涵盖摩托罗拉 Droid;然而,其他设备也被支持。设备必须置于引导加载模式,这可以通过在按下电源键的同时按住 D-pad 上的上方向键来实现。在摩托罗拉 Droid 上,引导加载程序很容易通过一个全黑的屏幕识别,屏幕上有白色的内核版本、USB 状态和电池状态文本。在尝试此过程之前,请确保电池充满电,因为如果刷新过程中断电,你可能会很容易地损坏设备。此外,你必须在取证工作站上保存 SBF 文件,以便你可以将其刷新到设备上。在进行目标设备操作之前,必须进行大量测试以确保兼容性和对过程的详细了解。
当 Droid 处于引导加载模式时,我们可以使用 sbf_flash 查询设备,如下所示:
sbf_flash 工具查找处于引导加载模式的设备,并立即将镜像文件刷新到 NAND 闪存。更新过程的状态会在屏幕上显示,之后 Droid 将重新启动。
你应该准备好立即将设备引导进入恢复模式,因为摩托罗拉 Droid 后续版本的固件实现了一个检查现有恢复分区与该 Android 版本的标准恢复分区的哈希签名是否一致的程序。如果有差异,系统将在引导过程中重建标准恢复分区,从而覆盖修改后的恢复镜像。
一旦刷新了新的 SBF 文件,并且设备在修改后的恢复模式下运行,你将获得 root 权限,并可以继续进行基于软件的物理技术操作。
fastboot
Fastboot 是另一种通过 USB 向 NAND 闪存刷新图像的工具。Fastboot 的源代码包含在 AOSP 中,因此当你编译 AOSP 代码时,该工具会被构建。与 sbf_flash 一样,引导加载程序必须支持 fastboot,这不仅需要一个兼容的引导加载程序,还需要一个关闭了安全机制的引导加载程序(S-OFF)。
Fastboot 最初是在由 HTC 制造的谷歌 Android 开发者手机(ADP)上使用的。因此,关于 fastboot 的许多文档和参考资料都指向 ADP,HTC 有一个关于该工具的有用参考页面(HTC—开发者中心,n.d.)。这个页面不仅包含 ADP 设备的各种标准 NAND 闪存镜像文件,还提供了使用 fastboot 和访问设备上适当模式的说明(HTC—开发者中心,n.d.):
要进入 fastboot 模式,在按下 BACK 键的同时开机(或重启设备)。一直按住 BACK 键,直到引导加载程序屏幕可见并显示“FASTBOOT”。现在设备处于 fastboot 模式,可以接收 fastboot 命令。如果你想在此刻退出 fastboot 模式,可以按住 MENU+SEND+END 键(在 ADP 上,SEND 是“通话”键,END 是“结束通话”键)。
请注意,引导加载程序屏幕可能会因设备而异。对于 ADP 设备,引导加载程序屏幕会显示滑板机器人图像。其他设备可能会显示不同的图像或颜色图案。在所有情况下,引导加载程序屏幕在 fastboot 模式下会显示“FASTBOOT”文本。引导加载程序还会显示无线电版本。
进入 fastboot 模式后,使用以下命令验证 fastboot 是否检测到设备:
Fastboot 提供了许多选项,当你使用以下帮助参数执行 fastboot 时,这些选项会被详细列出:
如你所见,一旦进入 flashboot 模式,刷新修改后的恢复分区就相当简单了:
此过程完成后,你可以将手机重启到恢复模式,并继续使用基于软件的物理成像技术。
AFPhysical 技术
AFPhysical 技术由 viaForensics 开发,用于提供 Android NAND 闪存分区的物理磁盘映像。该技术需要在设备上拥有 root 权限,并且应该支持任何 Android 设备。然而,这个过程并不简单,取证分析师需要根据所调查的具体设备调整技术。这是由于 Android 设备之间存在很大的差异,不仅不同制造商之间存在差异,而且运行不同版本 Android 的设备之间也存在差异。
AFPhysical 的整个过程相当简单:
-
在目标 Android 设备上获取 root 权限。
-
确定需要成像的 NAND 闪存分区。
-
将取证二进制文件上传到目标 Android 设备。
-
获取 NAND 闪存分区的物理映像。
-
如果在非易失性存储上存储了取证二进制文件,请将其删除。
无论使用哪种技术,都假定你在设备上拥有 root 权限。在这个例子中,我们将使用摩托罗拉 Droid。由于我们能够将修改后的恢复分区刷新到摩托罗拉 Droid,即使设备被密码锁定,这项技术也能在设备上工作。
在我们刷新了修改后的恢复分区并重启到恢复模式后,将设备连接到我们的 Ubuntu VM,并通过运行 adb devices 验证 adb 是否可以定位到设备。
在那里,访问 shell 以确保你有 root 权限:
在这一点上,我们需要更多地了解手机,以便决定需要物理镜像的内容。首先应该检查已挂载的文件系统(如果有):
现在,我们知道设备使用 MTD 来访问 NAND 闪存以及 YAFFS2。为了确定 MTD 公开的分区,我们执行以下操作:
审查员应选择对所有 MTD 分区进行镜像。然而,对于本例,我们将专注于 mtd8,即用户数据分区。
由于我们现在准备获取设备,如果有些术语或数据结构令人困惑,可以参考第四章中关于 NAND 闪存和文件系统的主题。一旦你拥有一个具有 root 权限的设备,就可以使用四种 Android 物理获取策略:
-
对所有分区进行完整的 nanddump 操作,包括数据和 OOB(推荐)
-
对分区进行 dd 镜像,只获取数据,不获取 OOB
-
使用 tar 进行文件的逻辑获取
-
使用 adb 进行文件的逻辑获取
此外,有两种主要方式可以保存从设备获取的数据:
-
使用 adb 端口转发通过 USB 在 Ubuntu 工作站和 Android 设备之间建立网络连接
-
将 SD 卡插入设备,挂载并在本地保存
这两种方法都有优点。使用 adb 端口转发,你无需插入自己的设备,并且可以立即在工作站上创建文件。当你保存到 SD 卡时,获取速度会快得多。这两种方法都是有效的,并将在此处进行演示。
我们将从用户数据分区的完整 nanddump 开始,因为这将提供最完整的数据取证副本。为了实现 nanddump,你必须拥有为 ARM 平台编译的 nanddump 版本。交叉编译 nanddump 超出了本书的范围。但是,你可以尝试在网上搜索该程序,或者按照网上发布的指南操作。
提示
为 ARM 进行交叉编译
将源代码交叉编译以在 ARM 平台上运行可能相当困难,而且网上对此的支持也很少。一个可能的解决方案是使用 Android 的本地开发工具包(NDK)来构建兼容的二进制文件。另一个选择是使用 Linux 并安装交叉编译器,例如从www.codesourcery.com/sgpp/lite/arm/portal/release1039
为 ARM GNU/Linux 安装 Code Sourcery 的 G++ Lite 2009q3-67。安装交叉编译器后,你必须修改源代码的 Makefile 以指示交叉编译选项。还可以访问本书的网站viaforensics.com/education/android-forensics-mobile-security-book/
以获取未来的更新。
为了避免向 NAND 闪存写入任何数据,我们可以再次检查 mount 命令的输出,并注意“/dev”目录是 tmpfs,因此存储在 RAM 中。因此,我们可以将取证工具推送到“/dev”:
接下来,我们需要让设备上的程序可执行。为此,我们使用 chmod 命令,它更改文件的权限,包括执行标志。我们将设置所有文件,允许任何用户读取或执行程序:
如你所见,在我们对程序执行了“chmod 755”命令之后,它们现在都设置了可执行位,这在文件权限中的“x”表示。
如果你决定将 nanddump 保存到 SD 卡上,请确保你将一个格式正确的 SD 卡放入设备中,并将其挂载在系统上。然后我们可以如下执行 nanddump:
最后,你可以使用 adb pull 将其传输到 Ubuntu VM,或者拔下 SD 卡并通过直接 USB 连接复制,后者要快得多。
注意
MD5 哈希
尽管在获取设备期间没有挂载用户数据分区,但“/dev/mtd/mtd8ro”的 md5sum 哈希签名即使没有任何写入也会改变。这是由于 NAND 闪存的特性,操作系统和内存几乎始终处于变化状态,由于磨损均衡、坏块管理和其他机制,即使用户数据没有变化也会发生变化。最好的做法是对生成的 NAND 闪存文件执行 md5sum,以确保从那时起确保完整性。
保存 NAND 闪存文件或任何其他成像数据的第二种方法是使用 netcat,这是一个允许你将命令输出重定向到网络的工具。对于这种方法,你需要两个活跃的终端或 ssh 会话。我们将它们称为 Session0 和 Session1。所有 Session0 命令都在 Ubuntu VM 上运行,因此我们不会从 Session0 进入 Android 设备的 shell。需要在 Android 设备的 shell 中执行的所有命令都将在 Session1 中进行。
首先,我们使用 adb 端口转发功能启用两个端点之间的网络连接:
这个命令本质上是连接了 Android 设备和 Ubuntu VM 上的 31337 端口。接下来,我们在 Android 设备上执行 nanddump 并将输出管道到 netcat:
现在 Android 设备正在通过 netcat 发送 nanddump 数据,我们需要在 Ubuntu 虚拟机端接收它:
当 nanddump 完成后,它会像 Ubuntu 虚拟机上的 netcat 一样简单地退出,没有任何额外的输出。我们可以使用 ls 命令验证 nanddump 是否已经接收到了工作站上:
在这一点上,你可以继续对调查所需的所有 MTD 分区进行物理成像,这至少应包括用户数据和缓存分区。
在第七章中,我们提供了一个程序,可以帮助你从 nanddump 中提取 OOB 数据,以协助进行文件雕刻等法医处理。由于你可以以这种方式生成 dd 镜像,因此无需使用 Android 设备获取 dd 镜像。然而,dd 已内置于 Android 中,因此我们提供了这个例子,它类似于 nanddump 例子的使用,不同之处在于它使用了 dd 工具,因此不会捕获 OOB 数据。本例使用了参考的 HTC Incredible。
由于 Android 设备、MTD、YAFFS2 和其他一些不便之处存在差异,并不总是能够挂载获取的 nanddump 镜像并提取逻辑文件。既然你已经拥有足够的权限,最好提取所需的逻辑数据。这可以通过使用递归 adb pull 来实现,因为设备上运行的 adb 守护进程具有 root 权限。你也可以使用诸如 tar 之类的工具将数据复制到一个归档文件中。在任何一种情况下,你都必须确保所需的文件系统已挂载。一些修改过的恢复分区提供了一个用户界面来挂载文件系统。不过,你也可以在命令行上执行此操作,并只读挂载文件系统。在上面提到的摩托罗拉 Droid 上,执行以下操作:
第一个命令以只读方式挂载“/data”分区。第二个命令获取已经挂载的“/cache”目录并将其重新挂载为只读。现在你可以执行 adb pull:
最后一个选项是使用 tar 工具,它通常将文件和目录放入一个称为 tarball 的单个归档中。
在这个例子中,我们传递给 tar 两个我们想要归档的目录:“/data/data”中包含短信/彩信的目录和“/cache”目录。我们将归档文件通过网络发送,并在 Ubuntu VM 上接收。但你也可以直接将归档保存到 SD 卡上。
一旦你在 Android 设备上拥有 root 权限并充分理解了设备的架构,你可以使用 nanddump、dd、tar、netcat 和 adb 来创建法医镜像或仅仅复制数据进行分析。
总结
有几种技术可用于对 Android 设备进行法医获取。如果设备设有密码保护,你必须绕过或避开保护以提取数据。尽管存在许多绕过密码的技术,但在每种情况下都不可能实现这一点。一旦设备可以访问,法医分析师可以选择从逻辑获取开始,主要关注通过内容提供者可以访问的未删除数据,或者更彻底但技术上更具挑战性的物理获取。虽然物理获取会产生更多的数据,但它通常需要更复杂的分析技术,这将在第七章中介绍。
参考文献
1. ACPO Good Practice Guide for Computer-Based Electronic Evidence—7Safe Information Security. (未注明日期). 摘自 7safe.com/electronic_evidence/index.html#
,2011 年 2 月 19 日检索。
2. Android & Windows Phone: Tablets, Apps, & ROMs @ xda-developers. (未注明日期). 摘自 www.xda-developers.com/
,2011 年 2 月 23 日检索。
3. Aviv, Gibson, Mossop, Blaze, & Smith. (未注明日期). 智能手机触摸屏上的污迹攻击. 摘自 www.usenix.org/events/woot10/tech/full_papers/Aviv.pdf
,2011 年 2 月 21 日检索。
4. Cannon, T. (未注明日期). Android 锁屏绕过. 摘自 thomascannon.net/blog/2011/02/android-lock-screen-bypass/
,2011 年 2 月 21 日检索。
5. dc3dd. (未注明日期). 摘自 dc3dd.sourceforge.net/
,2011 年 2 月 22 日检索。
6. Government Employment & Payroll. (未注明日期). 摘自 www.census.gov/govs/apes/
,2011 年 2 月 19 日检索。
7. [指南] 使用 RSD Lite 版本刷新 Linux 摩托罗拉. (未注明日期). 摘自 modmymobile.com/forums/8-guides-downloads-forum-suggestions/218651-guide-flashing-linux-motorolas-rsd-lite-versions.html,2011 年 2 月 24 日检索。
8. HTC—Developer Center. (未注明日期). 摘自 developer.htc.com/adp.html
,2011 年 2 月 28 日检索。
9. IEEE SA—1149.1–1990—IEEE Standard Test Access Port and Boundary-Scan Architecture. (未注明日期). 摘自 standards.ieee.org/findstds/standard/1149.1-1990.html
,2011 年 2 月 23 日检索。
10. RerWare, LLC: Android Backup and BlackBerry Backup—MyBackup Pro. (未注明日期). 摘自 www.rerware.com/
,2011 年 2 月 22 日检索。