如何破解 Android WeChat 資料庫
專案探討
2020-11-29 by 高田鑑識
前言
微信 (WeChat) App 在 Android 平台上採取不同於 iOS 資料保護方式,為提供更安全的資料防護,Android 平台上會採加密方式儲存 EnMicroMsg.db 資料庫 (該資料庫內有所有的對話內容);而在 iOS 平台上則套用 Apple 既有的 File Based Encryption 加密機制保護,並不會針對資料庫做額外的加密處理。因此,在數位鑑識過程,若從 Android 提取出的微信資料庫無法正常解析,則重要資訊可能無法判讀。藉由本文章希望可以協助鑑識人員透過簡易流程,將資料庫解密成功並找出重要關鍵資訊。
微信資料庫加密方式
加密演算法使用的兩個值
- IMEI
- UIN
取得解開資料庫的密碼大致上為透過 MD5 計算出 (IMEI + UIN) 的雜湊值,該雜湊值前 7 位數值則為解開微信資料庫的密碼。
1. IMEI
如何取得 IMEI 值?
-
- *#06#:可透過撥號介面輸入短碼取得
- 可從「設定」、「關於裝置」內顯示
- 透過記錄在 DENGTA_META.XML 內取得
- 微信採用預設的 IMEI 碼:1234567890ABCDEF
需注意的是,藉由上述項次一與二取得的 IMEI 碼,不一定為微信採用的 IMEI。若手機有多個門號功能,可能會採用第二個甚至第三個 IMEI 值。另外還有一個情況,因微信有可能無法讀取到裝置的 IMEI 值,這時會採用預設的 IMEI 碼來計算雜湊值。
2. UIN 值 (User Information 值)
UIN 值可在以下幾個檔案內找到:
-
- /data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml
- /data/data/com.tencent.mm/shared_prefs/auth_hold_prefs.xml
註:若 UIN 有負號,與 IMEI 合併時需保留負號。
![uin](https://www.kaotenforensic.com/wp-content/uploads/2020/11/uin.png)
圖一、system_config_prefs.xml
計算 MD5 + UIN 雜湊值
藉由以上方式,可得知 IMEI 與 UIN 值,現在需合併這兩個值來計算 MD5 雜湊值。
註:由於測試裝置 WeChat 無法取得 IMEI 碼,測試結果微信採用預設 IMEI 值來進行加密。
值一、IMEI+UIN 值
注意事項
1. MD5(IMEI+uin)的輸入字符串有大小寫要求嗎?
如果 IMEI 值有英文的話,需要將其轉變為大寫,否則計算的 MD5 值會不同。
2. MD5(IMEI+uin)的輸出結果作為密碼有大小寫限制嗎?
是的,計算出的結果須為小寫,並僅取前 7 碼。
方法一、使用 DOS certutil 指令
先將 IMEI 與 UNI 值使用記事本存放於內。
![imeiuin](https://www.kaotenforensic.com/wp-content/uploads/2020/11/imeiuin.png)
圖二、imeiuin.txt
再藉由 DOS 的 certutil 指令計算出 txt 檔案內的內容
指令一、certutil
方法二、使用線上 MD5 Hash Generator 網站
先複製 IMEI 與 UNI 值,並直接在 MD5 Hash Generator 上貼上即可產生雜奏值。
![MD5 Hash](https://www.kaotenforensic.com/wp-content/uploads/2020/11/MD5-Hash.png)
圖三、MD5 Hash Generator 網站
透過 SQLite Cipher 解密並開啟資料庫
由於解開資料庫的方式甚多,以下介紹透過 GitHub 客製化的 SQLite Cipher 程式開啟加密資料庫。只要點選 EnMicroMsg.db 檔案並輸入密碼,即可解開。
![SQLite Cipher](https://www.kaotenforensic.com/wp-content/uploads/2020/11/SQLite-Cipher.png)
圖四、SQLite Cipher 開啟 EnMicroMsg.db
![EnMicroMSG.db](https://www.kaotenforensic.com/wp-content/uploads/2020/11/EnMicroMSG.db_.png)
圖五、EnMicroMsg.db 資料
有關進階的 SQLite 語法使用指令,可參考 「iPhone LINE SQLite資料庫分析與語法操作」。