Python Forensics en Linux

La principal preocupación de las investigaciones digitales es asegurar evidencias o datos importantes con cifrado o cualquier otro formato. El ejemplo básico es almacenar las contraseñas. Por lo tanto, es necesario comprender el uso del sistema operativo Linux para la implementación forense digital para proteger estos valiosos datos.

La información para todos los usuarios locales se almacena principalmente en los dos archivos siguientes:

  • /etc/passwd
  • etc/shadow

El primero es obligatorio, que almacena todas las contraseñas. El segundo archivo es opcional y almacena información sobre los usuarios locales, incluidas las contraseñas hash.

Surgen problemas con respecto a la cuestión de seguridad de almacenar la información de la contraseña en un archivo, que es legible por todos los usuarios. Por lo tanto, las contraseñas hash se almacenan en/etc/passwd, donde el contenido se reemplaza por un valor especial "x".

Los hashes correspondientes deben buscarse en /etc/shadow. La configuración en/etc/passwd puede anular los detalles en /etc/shadow.

Ambos archivos de texto en Linux incluyen una entrada por línea y la entrada consta de varios campos, separados por dos puntos.

El formato de /etc/passwd es como sigue -

No Señor. Nombre de campo y descripción
1

Username

Este campo consta de los atributos de formato legible por humanos

2

Password hash

Consiste en la contraseña en forma codificada de acuerdo con la función de cripta Posix

Si la contraseña hash se guarda como empty, el usuario correspondiente no requerirá ninguna contraseña para iniciar sesión en el sistema. Si este campo contiene un valor que no puede generar el algoritmo hash, como un signo de exclamación, el usuario no puede iniciar sesión con una contraseña.

Un usuario con una contraseña bloqueada aún puede iniciar sesión utilizando otros mecanismos de autenticación, por ejemplo, claves SSH. Como se mencionó anteriormente, el valor especial "x"significa que el hash de la contraseña debe encontrarse en el archivo de sombra.

los password hash incluye lo siguiente:

  • Encrypted salt - el encrypted salt ayuda a mantener los bloqueos de pantalla, los pines y las contraseñas.

  • Numerical user ID- Este campo denota el ID del usuario. El kernel de Linux asigna este ID de usuario al sistema.

  • Numerical group ID - Este campo se refiere al grupo principal del usuario.

  • Home directory - Los nuevos procesos se inician con una referencia de este directorio.

  • Command shell - Este campo opcional denota el shell predeterminado que se iniciará después de un inicio de sesión exitoso en el sistema.

El análisis forense digital incluye la recopilación de la información que es relevante para rastrear una evidencia. Por lo tanto, los identificadores de usuario son útiles para mantener los registros.

Con Python, toda esta información se puede analizar automáticamente para los Indicadores de análisis, reconstruyendo la actividad reciente del sistema. El seguimiento es simple y fácil con la implementación de Linux Shell.

Programación de Python con Linux

Ejemplo

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:])

Salida

La contraseña se almacena en formato hexadecimal en pass_db.txtcomo se muestra en la siguiente captura de pantalla. Los archivos de texto se guardan para su uso posterior en informática forense.