📜  Linux中的Python取证

📅  最后修改于: 2020-11-06 05:32:38             🧑  作者: Mango


数字调查的主要关注点是采用加密或其他任何格式来保护重要的证据或数据。基本示例是存储密码。因此,有必要了解用于数字取证实施的Linux操作系统的使用,以保护这些有价值的数据。

所有本地用户的信息大部分存储在以下两个文件中-

  • / etc / passwd
  • 等/阴影

第一个是强制性的,它存储所有密码。第二个文件是可选的,它存储有关本地用户的信息,包括哈希密码。

出现与将密码信息存储在文件中的安全性问题有关的问题,每个用户均可读取。因此,哈希密码存储在/ etc / passwd中,其中的内容由特殊值“ x ”替换。

必须在/ etc / shadow中查找相应的哈希值。 / etc / passwd中的设置可能会覆盖/ etc / shadow中的详细信息。

Linux中的两个文本文件每行都包含一个条目,并且该条目由多个字段组成,并用冒号分隔。

/ etc / passwd的格式如下-

Sr.No. Field Name & Description
1

Username

This field consists of the attributes of human-readable format

2

Password hash

It consists of the password in an encoded form according to the Posix crypt function

如果哈希密码另存为empty ,则相应的用户将不需要任何密码即可登录系统。如果此字段包含哈希算法无法生成的值(例如,感叹号),则用户无法使用密码登录。

密码锁定的用户仍然可以使用其他身份验证机制(例如SSH密钥)登录。如前所述,特殊值“ x ”表示必须在影子文件中找到密码哈希。

密码哈希包括以下内容-

  • 加密盐加密盐有助于维护屏幕锁定,密码和密码。

  • 数字用户ID-此字段表示用户的ID。 Linux内核将此用户ID分配给系统。

  • 数字组ID-该字段指的是用户的主要组。

  • 主目录-新进程以该目录的引用开始。

  • 命令外壳程序-此可选字段表示成功登录系统后将启动的默认外壳程序。

数字取证包括收集与跟踪证据有关的信息。因此,用户ID在维护记录时很有用。

使用Python可以自动分析所有这些信息以获取分析指标,从而重建最近的系统活动。借助Linux Shell的实现,跟踪既简单又容易。

使用Linux进行Python编程

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中,如以下屏幕截图所示。文本文件将被保存,以供在计算取证中进一步使用。

Linux输出中的Python取证