📜  Python取证-移动取证

📅  最后修改于: 2020-11-06 05:31:09             🧑  作者: Mango


对标准计算机硬件(例如硬盘)的取证调查和分析已发展成为一门稳定的学科,并且在分析非标准硬件或瞬态证据的技术的帮助下得以跟进。

尽管智能手机越来越多地用于数字调查,但它们仍被认为是非标准的。

法医分析

法医调查会从智能手机中搜索数据,例如已接电话或已拨电话。它可以包括短信,照片或其他任何有罪证供。大多数智能手机具有使用密码或字母数字字符的屏幕锁定功能。

在这里,我们将以一个示例来说明Python如何帮助破解锁屏密码以从智能手机检索数据。

体检

Android支持使用PIN码或字母数字密码进行密码锁定。两个密码短语的限制必须在4到16位数字或字符。智能手机的密码存储在Android系统中的一个特殊文件中,该文件位于/ data / system中的password.key

Android会存储密码的盐化SHA1-hashsum和MD5-hashsum。这些密码可以在以下代码中进行处理。

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;
}

由于散列密码存储在盐文件中,因此无法借助字典攻击来破解密码。此是64位随机整数的十六进制表示形式的字符串。使用Rooted SmartphoneJTAG Adapter可以轻松获取

植根智能手机

/data/system/password.key文件的转储存储在SQLite数据库中的lockscreen.password_salt键下。在settings.db下,存储了密码,该值在以下屏幕截图中清晰可见。

植根智能手机

JTAG适配器

可以使用称为JTAG(联合测试操作组)适配器的特殊硬件来访问salt 。同样, Riff-BoxJIG-Adapter也可以用于相同的功能。

使用从Riff-box获得的信息,我们可以找到加密数据的位置,即salt 。以下是规则-

  • 搜索关联的字符串“ lockscreen.password_salt”。

  • 该字节代表盐的实际宽度,即盐的长度

  • 这是实际搜索以获取存储的智能手机密码/ PIN码的长度。

这些规则集有助于获取适当的盐数据。

JTAG适配器