移动取证(Mobile Forensics)
对诸如硬盘之类的标准计算机硬件的取证调查和分析已经发展成为一种稳定的学科,并且借助于分析非标准硬件或瞬时证据的技术。
尽管智能手机越来越多地用于数字调查,但它们仍然被认为是非标准的。
法医分析
法医调查从智能手机中搜索接收的电话或拨打的号码等数据。 它可以包括短信,照片或任何其他有罪证据。 大多数智能手机都具有使用密码或字母数字字符的屏幕锁定功能。
在这里,我们将举例说明Python如何帮助破解屏幕锁定密码以从智能手机中检索数据。
手动检查
Android支持使用PIN码或字母数字密码进行密码锁定。 两个密码的限制要求在4到16位或字符之间。 智能手机的密码存储在Android系统中,位于/data/system名为password.key的特殊文件中。
Android存储salted 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 file ,因此在dictionary attack的帮助下破解密码是不可行的。 该salt是一个64位随机整数的十六进制表示字符串。 使用Rooted Smartphone或JTAG Adapter很容易访问salt 。
扎根的智能手机
文件/data/system/password.key的转储存储在lockscreen.password_salt键下的SQLite数据库中。 在settings.db ,将存储密码,并在以下屏幕截图中清楚地显示该值。
JTAG适配器
可以使用称为JTAG(联合测试操作组)适配器的特殊硬件来访问salt 。 类似地, Riff-Box或JIG-Adapter也可用于相同的功能。
使用从Riff-box获得的信息,我们可以找到加密数据的位置,即salt 。 以下是规则 -
搜索关联的字符串“lockscreen.password_salt”。
该字节表示盐的实际宽度,即其length 。
这是实际搜索的长度,以获取智能手机的存储密码/引脚。
这些规则有助于获取适当的盐数据。