如何暴力破解舊版 Android LINE 聊天室備份檔案

專案探討

2022-4-1 by 高田鑑識

前言

本文章將介紹如何使用 GitHub 上由 駭客女孩 Emma 所發表的 memories 程式,來進行舊版 LINE 聊天室備份檔案的暴力破解。另外為了降低安裝門檻,將延續使用 Docker Hub 的 kaotenforensic/crack-wechat 映像檔。該映像檔已針對 Emma 程式所需的環境,包括  bovarysme / memories 的原始碼,與執行原始碼的  GO 程式語言,讓各位鑑識人員可更簡易的進行破解作業。

如何在 Windows 環境執行 Docker,可參考上一篇「如何暴力破解 Android WeChat 資料庫」,該文章有詳細說明安裝程序。

bovarysme/memories 程式介紹

針對舊版本 LINE for Android 的加密聊天室備份檔案進行暴力破解。 早期 Android 版本的 LINE 具有將個人聊天室備份為 ZIP 檔案的功能。 每個備份都包含聊天室內的圖檔(未加密的縮圖與圖檔本身) 與採用  AES in ECB 模式加密後的SQLite 檔案,在支援 AES-NI 的 CPU 上最慢可以在 15 分鐘內將加密資料轉換成 SQLite 檔案。

每個 LINE 使用者都有一個以 u 開頭後跟 32 個十六進制的內部 ID(例如 u61726520762e206375746520f09f929c),在 Android App 中稱為 PROFILE_MID 或 tmId。 (此 ID 與 Line App 的使用者名稱 ID 不同,也不同於 LINE Messaging API 的 userId)。雖然使用者看不到該 ID,但透過使用 LINE for Google Chrome 和 Chrome 開發者工具可輕易找到。

產生聊天室備份時,會將使用者與聊天對象兩個 ID 串聯一起並 hashCode()。 然後將生成的 32 位整數用作初始化向量 (IV) 以導出 128 位加密金鑰,並使用帶有 PKCS#5 填充的 AES-ECB 對聊天資料庫進行加密。該資料庫檔案位置會在 linebackupchat 目錄底下。

而在 linebackupimage 目錄下的圖檔可直接使用看圖軟體直接打開。

LINE 備份檔案目錄結構

破解方式

除了從 32 位整數產生加密密鑰之外,使用的金鑰衍生函式 (KDF) 透過 CPU 運算速度很快 (相對於 Wechat 所使用的 PBKDF2,LINE Backup 暴力破解所需時間相對少),並且只使用一次。 這代表金鑰總數只有 2^32 次方,可以快速被比對。找出正確的金鑰方式是透過初始化向量 (IV) 運算出每一個可能的金鑰,並使用它來嘗試解開檔案並比對檔案的前 16 bytes 的資料,若為 「SQLite format 3×00」代表找到正確的金鑰 (如下圖所示)。 使用該暴力破解方式,可在 4 分鐘使用一台筆記本電腦(i5-2540M @ 2.60GHz)上解開加密檔案並恢復成 SQLite 檔案格式。

暴力破解流程

1. 安裝 Docker Desktop

首先請先至 Docker 網站,下載並安裝好 Docker Desktop。另請確認 Windows 環境是否有安裝 WSL。

2. 從 Docker Hub 倉庫取得暴力破解映像檔 (Image)

安裝完成後請開啟 DOS 或 PowerShell,並執行以下指令。

複製

指令一、從 Docker Hub 下載 crack-wechat:memories

若電腦上已經有上個一版本的 crack-wechat Docker 映像檔,執行後僅會下載針對本次更新的 layer 。

執行結果

3. 將映像檔新建一個容器並啟動

取得映像檔後,在 DOS 或 PowerShell 下,輸入以下指令啟動容器。

複製

指令二、啟動映像檔

4. 複製加密的 LINE 資料庫檔案至容器內

使用 Docker cp 指令將兩個檔案複製進容器的 /tmp 資料夾,在 Windows 執行指令時請確認位置在 linebackupchat 目錄底下。

複製

指令三、docker cp 指令

複製檔案進容器

5. SSH 進入 ubuntu 虛擬系統

由於虛擬機是執行在本機上,本機的 port 1212 對應的是虛擬機的 port 22。請輸入以下指令即可採 SSH 連線到 ubuntu 虛擬機。登入密碼請與高田同仁聯繫。

複製

指令四、SSH 進 ubuntu 系統

6. 開始暴力破解 LINE 備份檔案

ssh 登入 docker 容器後請執行以下指令,以下範例破解的檔案名稱為: chat-1234567890a,執行前請務必記得更換正確的檔案名稱。

複製

指令五、執行 memories 暴力破解程式

破解過程約 5~15 分鐘,成功後會在 /tmp 資料夾下看到 chat-1234567890a.sqlite 與 key.bin 檔案。key.bin 為加密用的 IV 金鑰,但我們僅需 SQLite 檔案。

7. 從容器內複製出破解的 SQLite 資料庫

回到 DOS 或 Powershell 畫面下,並執行以下指令將 SQLite 檔案複製到 Windows 下。

複製

指令七、從 Windows 上複製容器內的檔案

Windows 目錄下多了 sqlite & bin 檔案。

使用 DB Browser for SQLite 打開檔案

最後使用 DB Browser for SQLite 打開聊天室內容,可以直接瀏覽資料表 chat_history 查看兩個人的對話內容。或是使用 SQL 指令將內容整理列出。

複製

指令八、SQLite 指令

聊天室結果