Python取证 - 移动取证

对硬盘等标准计算机硬件的取证调查和分析已经发展成为一门稳定的学科,随后借助于分析非标准硬件或瞬时证据的技术.

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

Forensic Analysis

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

这里,我们将举例说明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;
}

字典攻击的帮助下破解密码是不可行的,因为存储了散列密码在 salt文件中.这个 salt 是一个64位随机整数的十六进制表示字符串.使用 Rooted Smartphone JTAG Adapter 可以轻松访问 salt .

Rooted Smartphone

文件/data/system/password.key 的转储存储在 lockscreen.password_salt 键下的SQLite数据库中.在 settings.db 下,存储密码,并在以下屏幕截图中清楚地显示该值.

Rooted Smartphone

JTAG适配器

可以使用称为JTAG(联合测试行动组)适配器的特殊硬件来访问的.同样, Riff-Box JIG-Adapter 也可以用于相同的功能.

使用从Riff-box,我们可以找到加密数据的位置,即 salt .以下是规则 :

  • 搜索相关字符串"lockscreen.password_salt."

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

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

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

JTAG Adapter