Python取證 - 移動取證



對標準計算機硬體(如硬碟)進行的取證調查和分析已經發展成為一個穩定的學科,並藉助分析非標準硬體或瞬態證據的技術來進行。

儘管智慧手機在數字調查中越來越常用,但它們仍然被認為是非標準的。

取證分析

取證調查搜尋的資料包括智慧手機接收的呼叫或撥打的號碼。它可能包括簡訊、照片或任何其他犯罪證據。大多數智慧手機都具有使用密碼或字母數字字元的螢幕鎖定功能。

這裡,我們將舉一個例子來說明Python如何幫助破解螢幕鎖定密碼以從智慧手機檢索資料。

手動檢查

Android支援使用PIN碼或字母數字密碼的密碼鎖。兩種密碼的長度都要求在4到16位數字或字元之間。智慧手機的密碼儲存在Android系統中的一個名為password.key的特殊檔案中,該檔案位於/data/system目錄下。

Android儲存密碼的加鹽SHA1雜湊值和MD5雜湊值。這些密碼可以用以下程式碼處理。

public byte[] passwordToHash(String password) {

   if (password == null) { 
      return null; 
   }

   String algo = null;
   byte[] hashed = null;

   try { 
      byte[] saltedPassword = (password + getSalt()).getBytes(); 
      byte[] sha1 = MessageDigest.getInstance(algo = "SHA-1").digest(saltedPassword);
      byte[] md5 = MessageDigest.getInstance(algo = "MD5").digest(saltedPassword); 
      hashed = (toHex(sha1) + toHex(md5)).getBytes(); 
   } catch (NoSuchAlgorithmException e) { 
      Log.w(TAG, "Failed to encode string because of missing algorithm: " + algo); 
   }
   
   return hashed;
}

由於雜湊密碼儲存在salt檔案中,因此使用字典攻擊來破解密碼是不可行的。這個salt是64位隨機整數的十六進位制表示字串。使用已ROOT的智慧手機JTAG介面卡很容易訪問salt

已ROOT的智慧手機

檔案/data/system/password.key的轉儲儲存在SQLite資料庫的lockscreen.password_salt鍵下。在settings.db中,密碼被儲存,其值在下面的截圖中清晰可見。

Rooted Smartphone

JTAG介面卡

一種稱為JTAG(聯合測試行動組)介面卡的專用硬體可用於訪問salt。類似地,Riff-BoxJIG-介面卡也可以用於實現相同的功能。

使用從Riff-box獲得的資訊,我們可以找到加密資料的位 置,即salt。以下是規則:

  • 搜尋關聯字串“lockscreen.password_salt”。

  • 位元組表示salt的實際寬度,即其長度

  • 這就是實際搜尋以獲取儲存的智慧手機密碼/PIN的長度。

這套規則有助於獲取合適的salt資料。

JTAG Adapter
廣告