透過 knowledgeC.db
分析使用者生活模式(一)

2019-6-13 by 高田鑑識

手機已是人們生活的日常,幾乎很少遠離人們超過 5 公尺的距離。

而本文章要深入探討 iOS 裝置紀錄用戶與 APP 行為模式資料庫、knowledgeC.db,該資料庫記錄著在使用者在手機上各種使用模式,如螢幕開關次數,電池使用情況,APP 使用次數等等,紀錄的資訊比一般人想像的還更加完整。

KnowledgeC.db 資料庫存放的位置如下:

  • /private/var/mobile/Library/CoreDuet/Knowledge/knowledgeC.db

因該資料庫紀錄的資訊牽涉太多個人使用行為,所以透過一般的 iTunes 備份方式,或 Cellebrite 的 4PC 與 Physical Analyzer 是無法取得該檔案。已知的方式有

1. Jailbreak – 「Physical/Logical」 Dump
2. Cellebrite CAS/Premium
3. GrayShift’s GrayKey

GrayShift’s GrayKey

GrayShift’s GrayKey JB裝置

一舉一動 KnowledgeC 完全紀錄

在數位鑑識領域,如能精準的取得用戶與 APP 的使用資訊,對於案情調查可有極大幫助。而 iPhone 與 Mac 上藉由 KnowledgeC.db 資料庫裡自動記錄的「生活模式/Pattern-of-Life」資料,可完整描述使用者與手機的生活記事。以下為幾個紀載生活資訊的資料庫,也是本文章要關注的重點

  • Application Usage
  • Application Activities
  • Safari Browser History
  • Device Power Status
  • Lock Status (iOS Only)
  • Battery Usage (iOS Only)
  • App Installations (iOS Only)
  • Audio Status (iOS Only)

我們可以使用其中一些記錄來幫助回答調查上面臨的問題或任何類型的調查。

  • 該用戶使用了哪些 APP? 他們多久使用一次 APP? 使用這個 APP 有多長時間了?
  • 他們瀏覽了哪些網站? 是否有在網站上研究特定資訊並將資訊放入另一個 APP 裡?
  • 他們在哪裡問路? 他們開車分心嗎?
  • 他們多久檢查一下 e-mail? 是什麼導致他們點擊特定的電子郵件並感染病毒?
  • 他們多久聊天一次? 他們和誰聊天?

knowledgeC.db 資料庫裡有許多資料表與欄位。本文章只會介紹其中三個特別有趣的資料表。 建議您也可以查看自己的數據,以發現其他具有調查價值的項目。

註:該資料庫中的 timestamp 使用 Mac Epoch 時間(01/01/2001 00:00:00 UTC)。

ZOBJECT

ZOBJECT – 該資料表(Database Table)包含大約 4 週與超過上千條潛在使用行為紀錄。 本文章會使用該資料表作為主要分析,並在本文探討的過程中根據需要另引用其它資料表。 ZOBJECT 紀錄裡可引用的其它資料表,如下:

  • ZSOURCE – ZOBJECT 所有紀錄的來源
  • ZSTRUCTUREDMETADATA – 與 ZOBJECT 紀錄相關聯的 metadata

分析 ZOBJECT 資料表後,似乎有一個「類別/Type」與 ZSTREAMNAME 的欄位有相連。使用以下 SQLite 查詢指令,可以看到有哪一些「類別」。

SQLite 查詢指令

複製

iOS 上的 knowledgeC.db 資料庫執行 SQL Query 指令後輸出以下「類型」:

  • “/app/activity”
  • “/app/inFocus”
  • “/app/install”
  •  “/app/intents”
  • “/audio/outputRoute”
  • “/device/batteryPercentage”
  • “/device/isLocked”
  • “/device/isPluggedIn”
  • “/display/isBacklit”
  • “/display/orientation”
  • “/inferred/motion”
  • “/media/nowPlaying”
  • “/portrait/entity”
  • “/safari/history”
  • “/search/feedback”
  • “/user/isFirstBacklightOnAfterWakeup”
  • “/widgets/viewed”

APP 的使用紀錄

先從「/app/inFocus」開始分析。這個「分類」在 macOS 和 iOS 上皆有,從這可得知哪一個 APP 在哪個時間點有被執行,並使用多久。使用以下 SQL 指令查詢

SQLite 查詢指令

複製

此查詢僅使用 ZOBJECT 表中的紀錄(尚不需要JOINS!)。
– 在 ZSTREAMNAME 中使用 WHERE 語法過濾掉其它紀錄,僅呈現「/app/inFocus」相關紀錄。
– 另使用 ORDER BY 語法針對「START」 timestamp 的輸出進行了排序。

對於這些查詢中的所有 timestamp,須增加 978307200 秒以便將Mac Epoch 轉換為 Unix Epoch 值。 SQLite 不知道 Mac Epoch 是什麼 – 如果您正在進行任何 Mac / iOS 取證資料庫分析,指令中直接增加秒數是一個快速轉換方式;若使用 Cellebrite 的 PA,可直接點選時間格式,PA 會自動將時間戳記轉換成您的時區時間呈現。

執行後可抓出以下欄位:

  • ZCREATIONDATE – 什麼時候該紀錄寫進資料庫。
  • ZSTARTDAYOFWEEK – 發生在星期幾? (指令有做資料轉換)。
  • ZSECONDSFROMGMT – The GMT offset in seconds。將該資料除以 3600 秒,可轉換成 GMT 的 offset。這個資訊可知道如果手機使用者過去幾個禮拜是否有跨不同時區(旅行)。
  • ZSTARTDATE and ZENDDATE – 開始與結束的紀錄。而 Usage in Seconds 欄位是將 START and END Date 這兩個欄位相減,而得出的使用時間資料。
  • ZSTREAMNAME – 使用類別,因 Query 是針對 /app/InFocus,所以這裡僅會出現 /app/InFocus。
  • ZVALUESTRING – APP 的 ID 名稱。

KnowledgeC 資料庫分析總結

上面的範例是手機上發生的一小部分事件。 一旦你獲得了所有可用的數據 (knowledgeC可紀錄4個禮拜的資料!),你就可以了解並分析手機使用者的生活模式了。

  • 手機使用頻率?
  • 使用什麼 APP?
  • APP 如何使用?多久一次,每次使用多久?

這些資料可協助分析用戶使用模式,但還是有一些限制!該資料庫僅紀錄 GUI 介面的 APP。用戶如果使用 Terminal 的 APP,您只能看到 com.apple.Terminal 占用很長的時間,但無法透過這個方式知道該用戶在 Terminal 內的使用過程,如連線到特定主機刪除或更改檔案等等。

以上是基本的 knowledgeC 資料庫的介紹,主要是讓鑑識人理解行動裝置自動會紀錄的事件有哪些,可否利用這些紀錄另外架構出嫌疑人的生活行為,進而協助案情調查。未來 Cellebrite Physical Analyzer 會針對該資料庫提供更完整的自動分析,可免除鑑識人員學習 SQL 資料庫指令的門檻!