Python Forensics - Мобильная криминалистика

Криминалистическое расследование и анализ стандартного компьютерного оборудования, такого как жесткие диски, превратились в стабильную дисциплину, и за ней следят с помощью методов анализа нестандартного оборудования или временных доказательств.

Хотя смартфоны все чаще используются в цифровых расследованиях, они по-прежнему считаются нестандартными.

Судебно-медицинский анализ

Криминалистические расследования ищут такие данные, как принятые звонки или набранные номера со смартфона. Он может включать текстовые сообщения, фотографии или любые другие уличающие доказательства. Большинство смартфонов имеют функции блокировки экрана с помощью паролей или буквенно-цифровых символов.

Здесь мы рассмотрим пример, чтобы показать, как Python может помочь взломать пароль блокировки экрана для получения данных со смартфона.

Ручное обследование

Android поддерживает блокировку паролей с помощью ПИН-кода или буквенно-цифрового пароля. Максимальное количество паролей должно составлять от 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;
}

Взломать пароль с помощью dictionary attack поскольку хешированный пароль хранится в salt file. Этотsaltпредставляет собой строку шестнадцатеричного представления случайного целого числа размером 64 бита. Легко получить доступ кsalt используя Rooted Smartphone или же JTAG Adapter.

Смартфон с root-доступом

Дамп файла /data/system/password.key хранится в базе данных SQLite под lockscreen.password_saltключ. Подsettings.db, пароль сохраняется, и значение четко видно на следующем снимке экрана.

Адаптер JTAG

Специальное оборудование, известное как адаптер JTAG (Joint Test Action Group), может использоваться для доступа к salt. АналогичноRiff-Box или JIG-Adapter также может использоваться для тех же функций.

Используя информацию, полученную из Riff-бокса, мы можем найти положение зашифрованных данных, т.е. salt. Ниже приведены правила -

  • Найдите связанную строку «lockscreen.password_salt».

  • Байт представляет собой фактическую ширину соли, которая является ее length.

  • Это длина, которую на самом деле ищут, чтобы получить сохраненный пароль / пин-код смартфонов.

Этот набор правил помогает получить соответствующие данные о соли.