Python Forensics sous Linux

La principale préoccupation des enquêtes numériques est de sécuriser les preuves ou données importantes par cryptage ou tout autre format. L'exemple de base est le stockage des mots de passe. Il est donc nécessaire de comprendre l'utilisation du système d'exploitation Linux pour la mise en œuvre de la criminalistique numérique afin de sécuriser ces précieuses données.

Les informations pour tous les utilisateurs locaux sont principalement stockées dans les deux fichiers suivants -

  • /etc/passwd
  • etc/shadow

Le premier est obligatoire, qui stocke tous les mots de passe. Le deuxième fichier est facultatif et stocke des informations sur les utilisateurs locaux, y compris les mots de passe hachés.

Des problèmes se posent concernant le problème de sécurité du stockage des informations de mot de passe dans un fichier, qui est lisible par chaque utilisateur. Par conséquent, les mots de passe hachés sont stockés dans/etc/passwd, où le contenu est remplacé par une valeur spéciale "x".

Les hachages correspondants doivent être recherchés dans /etc/shadow. Les paramètres dans/etc/passwd peut remplacer les détails dans /etc/shadow.

Les fichiers texte sous Linux incluent une entrée par ligne et l'entrée se compose de plusieurs champs, séparés par des deux-points.

Le format de /etc/passwd est comme suit -

N ° Sr. Nom et description du champ
1

Username

Ce champ comprend les attributs du format lisible par l'homme

2

Password hash

Il se compose du mot de passe sous une forme codée selon la fonction de cryptage Posix

Si le mot de passe de hachage est enregistré sous empty, l'utilisateur correspondant n'aura pas besoin de mot de passe pour se connecter au système. Si ce champ contient une valeur qui ne peut pas être générée par l'algorithme de hachage, comme un point d'exclamation, l'utilisateur ne peut pas se connecter à l'aide d'un mot de passe.

Un utilisateur avec un mot de passe verrouillé peut toujours se connecter à l'aide d'autres mécanismes d'authentification, par exemple, des clés SSH. Comme mentionné précédemment, la valeur spéciale "x"signifie que le hachage du mot de passe doit être trouvé dans le fichier shadow.

le password hash comprend les éléments suivants -

  • Encrypted salt - Le encrypted salt aide à maintenir les verrous d'écran, les broches et les mots de passe.

  • Numerical user ID- Ce champ indique l'ID de l'utilisateur. Le noyau Linux attribue cet ID utilisateur au système.

  • Numerical group ID - Ce champ fait référence au groupe principal de l'utilisateur.

  • Home directory - Les nouveaux processus sont lancés avec une référence de ce répertoire.

  • Command shell - Ce champ facultatif indique le shell par défaut qui doit être démarré après une connexion réussie au système.

La criminalistique numérique comprend la collecte des informations pertinentes pour le suivi d'une preuve. Par conséquent, les identifiants utilisateur sont utiles pour conserver les enregistrements.

En utilisant Python, toutes ces informations peuvent être automatiquement analysées pour les indicateurs d'analyse, reconstruisant l'activité récente du système. Le suivi est simple et facile avec la mise en œuvre de Linux Shell.

Programmation Python avec Linux

Exemple

import sys
import hashlib
import getpass

def main(argv):
   print '\nUser & Password Storage Program in Linux for forensic detection v.01\n' 
  
   if raw_input('The file ' + sys.argv[1] + ' will be erased or overwrite if 
         it exists .\nDo you wish to continue (Y/n): ') not in ('Y','y') : 
   sys.exit('\nChanges were not recorded\n') 
  
   user_name = raw_input('Please Enter a User Name: ')
   password = hashlib.sha224(getpass.getpass('Please Enter a Password:')).hexdigest()
   
   # Passwords which are hashed  
   try: 
      file_conn = open(sys.argv[1],'w') 
      file_conn.write(user_name + '\n') 
      file_conn.write(password + '\n') 
      file_conn.close() 
   except: 
      sys.exit('There was a problem writing the passwords to file!')
      
if __name__ == "__main__": 
   main(sys.argv[1:])

Production

Le mot de passe est stocké au format hexadécimal dans pass_db.txtcomme indiqué dans la capture d'écran suivante. Les fichiers texte sont enregistrés pour une utilisation ultérieure en criminalistique informatique.