添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
檔案深度分析

2020-2-15 by 高田鑑識

2022-6-23 (更新 Python 2.x 使用說明)

2019年是鑑識界的重大元年,Cellebrite 也在年底列出了10大重要 突破 ,其中第一名的 checkm8 漏洞,可讓 iOS 裝置支援完整檔案系統提取(Full File System);原本無法透過 Advanced Logical 提取的的檔案或資料庫,藉著 FFS 可讓鑑識同仁取得更多甚至是破案關鍵的重要數位證據。

但如果了解 iOS 檔案系統架構的鑑識同仁,應該清楚理解採用 File Based Encryption(FBE) 加密的裝置,當任一個檔案刪除後,位於該檔案 metadata 內的 File Key 金鑰(圖一藍色框)也被刪除。

圖一、iOS資料安全架構

沒有了這把 File Key 金鑰,即使可以採用物理提取未分配的空間(unallocated space),最後獲得的也只是一堆被雜湊過後的數據,除非有無限的時間去計算反推,以現知的工具並沒有任何辦法恢復刪除的檔案或資料(除非破解 Secure Enclave, 細節可參考 iOS 檔案加密機制 文章 )。

圖二、各提取模式可獲取之內容

刪除的聊天資訊?

不過最近很多鑑識同仁成功採用 FFS 提取 iPhone 5S – iPhone X 裝置後,透過 PA 解析開始又出現已刪除的資料,包含 Telegram, LINE 與網頁搜尋紀錄等等;若以 File based Encryption 的安全性,已刪除的檔案應該是無法成功被提取或採用 Carve 功能拼湊而回,但為什麼 PA 上再次呈現已刪除的數據?

如果我們深入調查,其實可以發現很多 APPs 皆採用資料庫來儲存訊息,尤其是即時通訊 APP,如 LINE 與 Telegram 皆採用 SQLite 資料庫。下圖為從 PA 解析出的一則已刪除訊息。從 source file 可得知資料庫檔案名稱為 db_sqlite-wal,訊息儲存於 t2 表內。

圖三、PA 解析的已刪除資訊

Android 從版本9,iOS 從版本 7 開始,就將原本資料庫 Rollback Journal 回復日誌模式,預設變更為 WAL 模式。而採用 WAL 的 databases 目錄下會有 *.db、*.db-shm、*.db-wal 三個檔案。以下為 iOS 裝置採 FFS 提取後 LINE 目錄下的檔案清單。

圖四、LINE 目錄清單

SQLite 資料庫介紹

SQLite是一種廣泛使用的資料庫格式,幾乎在任何平台上皆可看到,熟悉PA的鑑識人員,在分析行動裝置的過程,應可發現有許多重要內容皆採用資料庫格式儲存,而比例最多則是SQLite。以下列出部分行動裝置較常用的資料庫種類:

MySQL: 開源,多執行緒且易於使用的SQL數據庫。

PostgreSQL: 高度可客製化且功能強大的開源關聯式資料庫。

MariaDB: 開源關聯式資料庫,由MySQL的原始開發人員開發維護。

Cassandra: 一個免費的開源NoSQL數據庫,旨在處理各種規模的大量非結構化數據。

SQLite: 嵌入式資料庫,常用用法是在行動裝置上供APP儲存資料使用, 且一個APP只允許對應一個db檔

交易模型(Transaction Model)

早期的 SQLite 版本採用回復日誌模式(Rollback Journal)來防止資料庫寫入錯誤。回復日誌的主要目的是為了要讓 SQLite 可以完成「 交易 」 (Transaction),當交易失敗或中斷時可用此檔案來回復,來確保資料完整與一致性。簡易來說,A 匯款至 B 帳戶,錢不會因為匯款過程因銀行系統或用戶端裝置斷電而造成款項卡在某處,匯款結果只會有成功或失敗。而 SQLite 在 3.7 版本後引入 WAL 日誌模式,兩者的差異如下說明:

> 回復日誌 (Rollback Journal):