iOS版Evernote数字取证技术深度解析

本文详细分析了iOS版Evernote应用在数字取证中的关键技术发现,包括应用日志记录机制、SQLite数据库结构解析、地理位置数据提取方法,以及如何通过开源工具获取和分析这些数字证据。

概述

在移动设备取证调查中,我们经常遇到新的iOS应用程序。我发现常用于获取和分析移动设备数据的商业工具无法解析大多数第三方应用程序的数据。这是应用程序更新周期带来的固有问题。

在此次测试中,我使用了一些开源工具获取运行iOS 12.1的iPhone 7的备份。虽然我使用Evernote已有多年,但在调查过程中却很少遇到它。

最近我使用手机上的Evernote应用程序访问由课程讲师创建的共享教学笔记本,发现了一些与日志记录和位置相关的有趣数字痕迹。

应用程序日志记录

Evernote在iOS上保留了多个与应用程序使用相关的日志,这些日志包含关于其预期用途的声明:

“活动日志包含Evernote应用程序执行步骤的详细列表,以及关于您的账户、设备和位置信息(如果启用)的信息。您的笔记标题、标签、笔记本名称和偶尔的笔记内容也可能包含在内。我们将您的活动日志数据视为机密数据,并适用我们的隐私政策条款。在将日志发送给Evernote时,您可能希望先将文件通过电子邮件发送给自己,并编辑掉任何敏感信息。”

仅基于此声明,作为日志分析人员,我自然会被这些日志所吸引。

日志在iOS中的存储位置: iOS-Backup/Documents/Logs

从下面的日志名称可以看出,它们遵循标准的命名约定,快速查看文件名可显示有用的时间线信息:

1
2
3
4
5
6
7
com.evernote.iPhone.Evernote 2018-04-21--21-39-27-026.log
com.evernote.iPhone.Evernote 2018-05-04--02-28-25-844.log
com.evernote.iPhone.Evernote 2018-05-09--01-59-14-135.log
com.evernote.iPhone.Evernote 2018-05-17--07-12-09-464.log
com.evernote.iPhone.Evernote 2018-07-21--03-38-13-286.log
com.evernote.iPhone.Evernote 2018-08-23--07-51-43-715.log
com.evernote.iPhone.Evernote 2018-11-07--10-17-36-152.log

使用简单的cat命令可以聚合这些文件以进行批量搜索:

1
cat /logs/*.log > /new-logs/All-evernotelogs.log

从这些日志中可以收集到的有用信息包括:

  • Evernote用户名
  • 创建日志时的硬件(iPhone型号)和iOS版本
  • 创建日志时使用的运营商
  • 笔记标题

这些日志中包含许多时间戳,显然是关于应用程序功能、用户活动和目标可能使用的先前设备的信息宝库。

通过数据库文件进行地理位置定位

当我开始这项研究时,我预计会发现一些包含笔记和其他内容(如使用历史记录)的数据库。但我没有预料到会发现与公开共享笔记本的个人移动相关的非常具体的信息。

我提取了以下数据库进行检查: iOS-backup/Documents/pending/3*2*9*1-personal-www.evernote.com/LocalNoteStore.sqlite

该数据库包含大量对取证有价值的Evernote信息:

  • 时间戳:笔记创建、删除、最后查看、最后更新和共享日期
  • 笔记作者:通常是用于注册Evernote账户的电子邮件地址
  • 最后编辑笔记的Evernote用户
  • 笔记标题
  • 笔记URL
  • 笔记创建的纬度、经度和高度:如果在创建笔记时启用了定位服务
  • 源应用程序:iPhone、网络浏览器或Mac(这些是我测试的方法,可能还有其他Android方法)

我编写了一个快速的SQL查询来从包含所有相关笔记信息的’ZENNOTE’表中解析出一些相关信息:

1
2
3
4
5
6
7
8
9
Select DateTime(ZDATECREATED + 978307200, 'unixepoch') as 'Date Created (UTC)',
DateTime(ZDATEDELETED + 978307200, 'unixepoch') as 'Date Deleted (UTC)',
DateTime(ZDATELASTVIEWED + 978307200, 'unixepoch') as 'Date Last Viewed (UTC)'
DateTime(ZDATEUPDATED + 978307200, 'unixepoch') as 'Date Updated (UTC)',
ZAUTHOR as 'Note Author', ZTITLE as 'Note Title',
ZSOURCEURL as 'Note URL', ZLATITUDE as 'Latitiude',
ZLONGITUDE as 'Longitude', ZSOURCE as 'Source',
ZSOURCEAPPLICATION as 'Source Application'
from ZENNOTE

从上面的查询和下面的一些示例结果可以看出,我们可以确定与特定笔记相关的许多时间戳。我们还可以看到用于创建笔记的应用程序(移动或桌面)、作者姓名、笔记的源URL,以及最重要的地理位置信息。

为什么这些信息有趣?

  • 许多不同的用户可以添加到共享的、公开访问的笔记本中
  • 我们可以通过自己的iOS设备和Evernote账户跟踪他们随时间推移的活动

我们可以推断出什么?

  • 与设备/应用程序用户关联的电子邮件地址(笔记作者)
  • 与个人关联的其他联系人(最后编辑者)
  • 与应用程序使用和特定笔记相关的活动(笔记标题、创建日期、删除日期等)
  • 随时间变化的位置信息(纬度、经度、高度)
  • 特定个人使用的设备(来源)

这可能如何被滥用?

试图查找个人或许多人信息的恶意行为者可能会找到抓取公开访问的Evernote笔记本URL的方法。这可能使他们能够利用这些信息了解移动情况、家庭等位置以进行盗窃等。

一旦恶意行为者使用其iOS设备上的账户订阅了这些笔记本,转储LocalNoteStore.sqlite文件并找到所有这些信息(包括工作和商业地址)将变得轻而易举。

更新:我没有在2018年底发布这些发现,而是联系了Evernote,他们随后禁用了在公共笔记本中共享笔记位置的功能。Evernote很友好地将我列入他们2019年安全贡献者名单。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计