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

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

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

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

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

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

GrayShift’s GrayKey

GrayShift’s GrayKey JB裝置

一舉一動手機完全紀錄

在數位鑑識領域,如能精準的取得用戶與APP的使用資訊,對於案情調查可有極大幫助。而iPhone手機上藉由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 – 該資料表(Database Table)包含大約4週與超過上千條潛在個資紀錄。 本文章會使用該資料表作為主要分析表,並在本文探討的過程中根據需要另引用其他資料表。 ZOBJECT裡的紀錄可能引用的其它資料表,如下:

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

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

knowledgeC.db資料庫在iOS上的系統中輸出以下“類型”:

  • “/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查詢

此查詢僅使用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可紀錄4個禮拜的資料!),你就可以開始看到手機使用者的生活模式了。

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

這些資料可協助分析手機使用模式,但還是有一些限制! 該使用數據實際上僅適用於GUI介面的APP。如果用戶總是使用如Terminal的APP,您只能看到com.apple.Terminal占用很長的時間,但無法透過這個方式理解Terminal的實際使用內容。

以上是基本的knowledgeC資料庫的分析介紹,接下來會針對APP更細節的使用資訊作分析! 請拭目以待~