手機取證與電腦取證的特性不同,而且存在著一些瓶頸有待突破,尤其是當商業版的手機鑑識工具力有未逮之時,便需要鑑識人員發揮經驗及技術,在確保手機內資料無破壞之虞的情況下擷取出重要跡證。
找出加密規則
鑑識人員參酌各項資料終於研究出其加密規則,是以IMEI的15碼加上WeChat UIN的10碼所組成的字串進行MD5 Hash值運算,再取運算結果的前7碼,這便是用以開啟加密資料庫的Key值。
先說明何謂「IMEI」,國際行動設備識別碼(International Mobile Equipment Identity,IMEI)即俗稱的手機序列號,用於行動電話網路中來識別每一部手機等行動通訊裝置,相當於行動通訊裝置的「身分證」。
IMEI共有15位數字,前6位(TAC)是型號核准號碼,代表手機類型。接著2位(FAC)是最後裝配號,代表產地。後6位(SNR)是流水號,代表生產序號。最後1位(SP)一般為0,是檢驗碼。而何謂「WeChat UIN」,UIN即是User Information之意,乃是WeChat帳戶的識別碼。
行動通訊裝置上的App若有採用加密機制,用於加密的Key往往會與IMEI或是該App的帳號有所關聯,或是再加個Salt值進行混淆等等,因此諸如此類的訊息是不可輕忽的重要線索。
取得IMEI和UIN
那要如何取得IMEI呢?有以下三種方式,第一個方式是從手機外包盒上可查看到,第二個則是將手機背蓋打開,取出電池後,便可順利找到,如圖7所示。
|
▲圖7 手機背面可以找到IMEI。 |
那第三種方式呢?因為IMEI也存在於手機記憶體中,因此可將手機開機並輸入「*#06#」,便可得到IMEI,如圖8所示。
|
▲圖8 輸入「*#06#」也可找到IMEI。 |
至於如何取得WeChat UIN呢?它存放在名為「system_config_prefs.xml」的檔案內,其在手機中的存放路徑為「/data/data/com.tencent.mm/shared_prefs/」,如圖9所示。
|
▲圖9 「system_config_prefs.xml」檔案在手機中的存放路徑。 |
只要開啟該檔案,搜尋關鍵字「UIN」,就可以順利找到其值,如圖10所示。
|
▲圖10 搜尋關鍵字「UIN」,即可順利找到其值。 |
得到IMEI和WeChat UIN之後,便已掌握關鍵訊息了,接著便可開始進行破解加密資料庫的工作。
算出加密的Key值
開啟gedit文字編輯器,將IMEI與WeChat UIN輸入,如圖11所示儲存在名為「IMEI-and-UIN」的文字檔內,以利後續處理。
|
▲圖11 將IMEI與UIN存成文字檔。 |
要注意的是,千萬不要自作聰明,在IMEI與UIN中間加入連字號或任何符號,那無論如何都無法算出正確的Key值。
接著,執行指令「cat IMEI-and-UIN | md5sum | cut -c -7」,如圖12所示。
|
▲圖12 執行解出Key的指令。 |
千萬別被讓這麼長一串指令給嚇到了,以下將其拆解成三段來做說明。首先,第一段「cat IMEI-and-UIN」的用意在於讀取該文字檔中的字串值,同時搭配管線指令(pipe)進行MD5 Hash值的運算;第二段是「| md5sum」,再將執行結果pipe到指令「cut -c -7」去取得前7碼;第三段是「| cut -c -7」,最後所得到的7個字符即為解密所需要的Key值,如圖13所示。
|
▲圖13 得到Key值。 |
另一方面,因其所使用的加密機制為SQLCipher,是開源軟體,因此可以在GitHub等網站順利取得相關資源。想在取證分析工作站上運行SQLCipher,必須下載sqlcipher_2.1.1-2_amd64.deb與libsqlcipher0_2.1.1-2_amd64.deb這兩個套件,如圖14所示。
|
▲圖14 運行SQLCipher所需的兩個套件。 |