標籤:

WhatsApp取證技術:如何在未Root的Android設備上解密資料庫

譯文聲明本文是翻譯文章,文章原作者SalvationDATA,文章來源:blog.salvationdata.com

原文地址:blog.salvationdata.com/

一、前言

WhatsApp是世界上最受歡迎的智能手機即時通訊應用之一。現如今,全世界各地每月有超過13億的用戶活躍在WhatsApp上,使用該應用進行免費通信(2017年7月份的統計數據)。WhatsApp採用了基於whisper systems的通信協議,因此即便有人成功攔截通信數據,這種點對點通信數據仍然可以保持安全。顯而易見的是,這些通信數據中可能包含調查人員非常關心的與案件有關的重要信息,因此現在WhatsApp已經成為移動取證方面最炙手可熱的一個領域。然而眾所周知,智能手機的調查取證並沒有那麼簡單。調查人員可能會遇到各種各樣的問題(如加密資料庫、系統安全機制、消息被刪除等等)。因此在本文中,我們會介紹如何解密WhatsApp的加密資料庫、如何繞過WhatsApp的加密機制以及如何恢復已刪除的WhatsApp消息。

二、如何解密WhatsApp資料庫

與許多智能手機應用一樣,WhatsApp會將數據存放在SQLite資料庫文件中。對於Android設備上的WhatsApp來說,兩個資料庫最為重要,一個是msgstore.db,包含聊天記錄;一個是wa.db,包含聯繫人列表。處理這些資料庫比較簡單,因為WhatsApp具有備份功能,會將資料庫備份到SD卡上,無需任何許可權(比如root許可權)就能訪問。然而,安裝最新的安全更新後,WhatsApp資料庫就會被加密處理,無法再直接分析,給執法調查人員帶來極大的挑戰。聊天記錄、消息記錄以及通話記錄使用的是AES-256標準,而類似照片、視頻等媒體文件沒有加密處理。並且WhatsApp的加密方式已經從Crypt5、Crypt7、Crypt8更新到了Crypt12。

那麼,此時我們該怎麼解密WhatsApp資料庫呢?最關鍵的步驟是獲取加密密鑰(cipher key)。當用戶首次進行WhatsApp備份時,就會生成加密密鑰,密鑰永遠不會存儲在雲端,只會保存在智能手機上,而且每個智能手機對應不同的密鑰。因此,為了解密資料庫,我們首先必須從創建備份時所使用的那台手機上提取加密密鑰。加密密鑰的具體路徑為:userdata/data/com.whatsapp/files/key

根據SalvationDATA數據取證專家的研究結果,我們研發了一種專門的演算法,可以使用這個key文件來解密WhatsApp資料庫。我們不久後會公布這款工具,將其集成到 SmartPhone Forensic System(SPF)中,讓不具備任何計算機編程基礎的調查人員能夠順利處理WhatsApp的加密資料庫。用戶只需導入key文件以及加密的資料庫文件,程序就可以自動生成正確的未加密的資料庫文件。

三、如何繞過WhatsApp加密機制

然而,如果不root設備,想要獲取key文件並不會一帆風順。因此,接下來我們討論下如何繞過WhatsApp的加密機制。換句話說,如何在不具備root訪問許可權的前提下提取WhatsApp數據。

key文件以及未加密的資料庫始終存儲在WhatsApp目錄中。如果調查人員可以接觸這些文件,那麼就能查看當前設備上WhatsApp的通信記錄。唯一的問題在於,如果沒有root許可權,我們無法直接訪問這些文件。

在不具備root許可權的情況下,有兩種方法可以提取WhatsApp數據。

1、系統備份&還原

第一種方法是利用Android系統的備份及還原功能。許多Android手機廠商允許用戶使用內置的系統應用創建備份。利用這種方式創建的備份存儲在SD卡中,沒有經過加密處理。因此,執法部門可以使用這種簡單的方法訪問WhatsApp的通訊記錄。

如下圖所示,我們可以使用OPPO智能手機來創建WhatsApp的備份。用戶可以在Tools文件夾中找到「Backup Restore」應用,創建新的備份,記得要勾選WhatsApp。

然後,我們就可以在手機的SD卡上找到WhatsApp備份數據。這個備份中包括所有未加密的資料庫文件以及WhatsApp的key文件。現在,我們要做的就是使用移動取證工具來分析目標資料庫。

2、降級備份

另一種方法就是降級WhatsApp應用,降級到不具備加密機制的那個版本。v.2.11.431版的WhatsApp是沒有強制使用加密備份的最後一個版本。因此,我們可以在不刪除用戶數據的前提下將WhatsApp降級到v.2.11.431版,然後使用老版本的WhatsApp創建備份文件,然後提取所需的資料庫。

這個過程需要操作人員具備專業技能,並伴隨著永久性丟失數據的風險。因此,我們強烈建議用戶使用專業的取證工具進行版本降級。

四、如何恢復已刪除的WhatsApp消息

現在我們已經知道如何從智能機中提取WhatsApp資料庫文件,接下來看看如何利用資料庫文件,在Android以及iOS設備上恢復已刪除的WhatsApp消息。

用戶可以通過兩種方法來刪除WhatsApp的消息。用戶可以逐條刪除消息,或者使用「clear/delete」聊天按鈕一次性刪除所有消息。根據我們的測試結果,不論用戶使用哪種方式刪除消息,我們都可以使用下面的方法進行恢復。

前面我們提到過,WhatsApp使用SQLite資料庫來存儲消息。與Android系統不同的是,iOS系統會將WhatsApp相關的所有數據存放在ChatStorage.sqlite這個資料庫中。這些資料庫文件通常會附帶後綴為」-wal」的緩存文件。大多數情況下,這些緩存文件的大小為0,但如果這些緩存文件的大小不為0,那麼就可能包含尚未存儲在資料庫中的重要數據。一旦出現這種情況,我們必須謹慎處理,因為如果我們不在意這些緩存文件,那麼存放在其中的信息可能就會被覆蓋掉,永遠無法找回。

根據我們的分析,可以正常訪問的WhatsApp消息存儲在msgstore.db中,而已刪除的消息存放在msgstore.db-wal中,這個文件正是消息的緩存文件。WhatsApp始終會把消息先存放在緩存文件中,然後再保存到真正的資料庫中。

有趣的是,有些時候緩存文件會比資料庫文件更大。這是因為一條消息只能以單條記錄存放在資料庫中,但緩存文件中並沒有這種限制。一條消息可能同時存在多條記錄。因此,我們有機會能恢復已刪除或者已丟失的WhatsApp消息。

然而,為了避免覆蓋緩存文件中已有的數據,在正確處理緩存文件之前,我們不能直接打開資料庫文件。我們必須先處理緩存文件,匹配特徵,然後保存並分析緩存文件中的所有數據。

以「this is a test message」這條消息為例。當用戶刪除這條消息時,該消息對應的那條記錄通常也會從msgstore.db中刪除。

然而,msgstore.db-wal緩存文件中可能還保留這條消息的一些記錄。「This is a test message」這條消息被刪除前後的情況如下圖所示。我們可以看到,當該消息被刪除後,相關數據仍然保存在緩存文件中,並且記錄的偏移位置也保持不變。

因此,通過分析並提取msgstore.db-wal緩存文件中的數據,我們給出了恢復已刪除或已丟失的WhatsApp消息的一種方法。前面提到的這種方法可以有效並可靠地提取出已刪除的WhatsApp數據,也是恢復已刪除消息和已清空聊天記錄的完美解決方案。

五、總結

根據SalvationDATA數字取證專家的研究結果,我們可以在未Root的Android設備上解密WhatsApp的加密資料庫,並且也能在Android以及iOS設備上恢復已刪除的WhatsApp消息。提醒一下,前面提到的所有技術及解決方案已經或者即將公布,會集成到SmartPhone Forensic System(SPF)中。希望本文能進一步幫助DFIR(數字取證與應急響應)社區處理移動設備,收集儘可能多的數字證據。後面我們會為大家提供更多實用的數字取證方案。

推薦閱讀:

WhatsApp 為什麼採用收費模式?
Android 沒有沙盒保護機制嗎,WhatsApp 信息為何可被隨意訪問?
矽谷之路59:如何設計WhatsApp (二)

TAG:WhatsApp |