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 设计