移动取证探秘:深挖iOS版Evernote的技术痕迹与隐私数据

本文详细探讨了iOS版Evernote应用的取证分析过程,揭示了其日志文件与数据库存储的丰富技术细节,包括用户活动轨迹、地理位置信息和设备数据,并展示了如何利用开源工具进行数据提取与SQL查询。

iOS版Evernote

移动取证

概述

在我们的取证检查中,不断涌现新的iOS应用。我发现,我们通常用于从移动设备获取和分析数据的商业工具无法解析大多数第三方应用。这是应用更新周期固有的问题。我们实在不能责怪这些商业产品或开发者,他们实际上是在打一场徒劳的战斗。 因此,在这项测试中,我使用了一些开源工具来获取我运行iOS 12.1的iPhone 7的备份。我已经使用Evernote好几年了,但奇怪的是,在调查过程中从未真正遇到过它。 最近,我一直在手机上的Evernote应用中访问课程讲师创建的共享教学笔记,并发现了一些与日志记录和位置相关的非常有趣的人工痕迹。 我不会过多介绍你可以从应用程序存储的Evernote plist和数据库文件中获取的信息,但以下是我认为一些更有趣的发现:

应用程序日志记录

Evernote保留了许多与iOS上应用程序使用相关的日志,这些日志包含关于其预期用途的声明,这非常方便: “活动日志包含Evernote应用程序执行步骤的详细列表,以及有关您的帐户、设备和位置信息(如果启用)的信息。您的笔记标题、标签、笔记本名称和偶尔的笔记内容也可能包含在内。我们将您的活动日志数据视为机密,我们的隐私政策 (https://evernote.com/privacy) 条款适用。如果向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版本
  • 创建日志时使用的运营商
  • 笔记标题 这些日志中存储了许多时间戳,显然是有关应用程序功能、用户活动以及目标可能使用过的先前设备的信息源泉。 我发现有一些条目很有趣,这些行包含文本"Preview updated"。在大多数情况下,会出现笔记标题,但有些条目似乎是错误条目。

正如你所看到的,这里有一些重复,这就是为什么我认为这些日志条目直接与应用程序启动时显示给用户的笔记预览相关。这在证明特定时间对笔记或设备使用的认知方面会很有用。

通过数据库文件对第三方进行地理定位

那么,当我开始这次探索时,我预计我们可能会发现一些包含笔记和其他诸如使用历史记录和内容等信息的数据库。我没有预料到会发现与公开分享其笔记本的个人的行踪相关的非常具体的信息。 我提取了以下数据库进行检查: 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,以及最重要的地理位置信息。

我从中识别出最有价值信息的Evernote共享笔记本是由我参加的教学活动的讲师(笔记作者)分享的。这似乎是最值得审阅的。 我做的第一件事是查看共享笔记本中出现的一个位置,并将坐标输入谷歌地图,看看是怎么回事。

看起来这位笔记作者可能在2016年在华盛顿的杜邦环岛酒店待过一段时间。从地理位置信息来看,这家酒店当时实际上是移动的,并且位于这位年轻人的头顶上。 我仔细查看了提取的数据库条目,并通过筛选笔记作者列,快速识别出了许多创建笔记或笔记作者向其笔记本添加笔记的地点。有许多条目带有相关位置。这些地点范围从新加坡和伦敦到美国的多个地点。 这些地点大多数似乎是酒店,尽管一个住宅地址也出现了多次,我怀疑这是笔记作者的家庭住址。 需要注意的是,大部分这些地理位置信息似乎是通过使用Evernote桌面应用程序添加的,而不是移动应用程序,尽管两者都允许向笔记添加位置。启用定位服务和共享笔记本需要在安装时和创建共享笔记本时进行特定的用户交互。

为什么这些信息很有趣?

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

我们可以推断出什么?

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

这可能如何被滥用?

试图获取个人或多人信息的恶意行为者可能会找到方法来抓取公开可访问的Evernote笔记本的URL。这可能使他们能够利用这些信息来了解行踪、家庭住址等信息以进行盗窃等。 一旦恶意行为者使用其iOS设备上的账户订阅了这些笔记本,转储LocalNoteStore.sqlite文件并找出所有这些信息,包括工作和业务地址,将是轻而易举的事。

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

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