Учебники

Python Forensics в Linux

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

Информация для всех локальных пользователей в основном хранится в следующих двух файлах —

  • / И т.д. / пароль
  • и т.д. / тень

Первый является обязательным, в котором хранятся все пароли. Второй файл является необязательным и хранит информацию о локальных пользователях, включая хешированные пароли.

Возникают проблемы, связанные с безопасностью хранения информации о пароле в файле, который может прочитать каждый пользователь. Поэтому хешированные пароли хранятся в / etc / passwd , где содержимое заменяется специальным значением « x ».

Соответствующие хеши нужно искать в / etc / shadow . Настройки в / etc / passwd могут переопределять детали в / etc / shadow .

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

Формат / etc / passwd следующий —

Sr.No. Имя поля и описание
1

имя пользователя

Это поле состоит из атрибутов удобочитаемого формата

2

Хэш пароля

Он состоит из пароля в зашифрованном виде в соответствии с функцией шифрования Posix

имя пользователя

Это поле состоит из атрибутов удобочитаемого формата

Хэш пароля

Он состоит из пароля в зашифрованном виде в соответствии с функцией шифрования Posix

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

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

Хэш пароля включает в себя следующее:

  • Зашифрованная сольЗашифрованная соль помогает поддерживать блокировки экрана, булавки и пароли.

  • Числовой идентификатор пользователя — это поле обозначает идентификатор пользователя. Ядро Linux назначает этот идентификатор пользователя системе.

  • Числовой идентификатор группы — это поле относится к основной группе пользователя.

  • Домашний каталог — новые процессы запускаются со ссылкой на этот каталог.

  • Командная оболочка — это необязательное поле обозначает оболочку по умолчанию, которая должна запускаться после успешного входа в систему.

Зашифрованная сольЗашифрованная соль помогает поддерживать блокировки экрана, булавки и пароли.

Числовой идентификатор пользователя — это поле обозначает идентификатор пользователя. Ядро Linux назначает этот идентификатор пользователя системе.

Числовой идентификатор группы — это поле относится к основной группе пользователя.

Домашний каталог — новые процессы запускаются со ссылкой на этот каталог.

Командная оболочка — это необязательное поле обозначает оболочку по умолчанию, которая должна запускаться после успешного входа в систему.

Цифровая криминалистика включает сбор информации, которая имеет отношение к отслеживанию улик. Следовательно, идентификаторы пользователя полезны для ведения записей.

Используя Python, вся эта информация может быть автоматически проанализирована для индикаторов анализа, воссоздающих недавнюю активность системы. Отслеживание просто и легко с внедрением Linux Shell.

Программирование на Python с Linux

пример

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

Выход

Пароль хранится в шестнадцатеричном формате в файле pass_db.txt, как показано на следующем снимке экрана. Текстовые файлы сохраняются для дальнейшего использования в компьютерной экспертизе.