Python Forensics - Forensics mobiles

L'enquête et l'analyse médico-légale du matériel informatique standard tel que les disques durs sont devenues une discipline stable et sont suivies à l'aide de techniques permettant d'analyser du matériel non standard ou des preuves transitoires.

Bien que les smartphones soient de plus en plus utilisés dans les enquêtes numériques, ils sont toujours considérés comme non standard.

Analyse médico-légale

Les enquêtes médico-légales recherchent des données telles que les appels reçus ou les numéros composés à partir du smartphone. Il peut inclure des messages texte, des photos ou toute autre preuve incriminante. La plupart des smartphones disposent de fonctions de verrouillage d'écran à l'aide de mots de passe ou de caractères alphanumériques.

Ici, nous allons prendre un exemple pour montrer comment Python peut aider à déchiffrer le mot de passe de verrouillage d'écran pour récupérer des données à partir d'un smartphone.

Examen manuel

Android prend en charge le verrouillage par mot de passe avec code PIN ou mot de passe alphanumérique. La limite des deux phrases de passe doit être comprise entre 4 et 16 chiffres ou caractères. Le mot de passe d'un smartphone est stocké dans le système Android dans un fichier spécial appelépassword.key dans /data/system.

Android stocke un hashsum SHA1 salé et un hashsum MD5 du mot de passe. Ces mots de passe peuvent être traités dans le code suivant.

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

Il n'est pas possible de déchiffrer le mot de passe à l'aide de dictionary attack car le mot de passe haché est stocké dans un salt file. Cesaltest une chaîne de représentation hexadécimale d'un entier aléatoire de 64 bits. Il est facile d'accéder ausalt en utilisant Rooted Smartphone ou JTAG Adapter.

Smartphone enraciné

Le vidage du fichier /data/system/password.key est stocké dans la base de données SQLite sous le lockscreen.password_saltclé. En dessous desettings.db, le mot de passe est stocké et la valeur est clairement visible dans la capture d'écran suivante.

Adaptateur JTAG

Un matériel spécial appelé adaptateur JTAG (Joint Test Action Group) peut être utilisé pour accéder au salt. De même, unRiff-Box ou un JIG-Adapter peut également être utilisé pour la même fonctionnalité.

En utilisant les informations obtenues à partir de Riff-box, nous pouvons trouver la position des données cryptées, c'est-à-dire le salt. Voici les règles -

  • Recherchez la chaîne associée "lockscreen.password_salt".

  • L'octet représente la largeur réelle du sel, qui est son length.

  • Il s'agit de la longueur réellement recherchée pour obtenir le mot de passe / la broche stockés des smartphones.

Cet ensemble de règles aide à obtenir les données de sel appropriées.