Python Forensics 简明教程

Python Forensics in Linux

数字调查的主要目的是使用加密或任何其他格式保护重要证据或数据。一个基本的例子是存储密码。因此有必要了解使用 Linux 操作系统进行数字取证实施以保护这些有价值数据。

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

  1. /etc/passwd

  2. etc/shadow

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

出现关于在文件中存储密码信息的安全性问题,该文件可供每个用户读取。因此,哈希密码存储在 /etc/passwd 中,其中内容被替换为特殊值 " x "。

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

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

/etc/passwd 的格式如下 −

Sr.No.

Field Name & Description

1

Username 此字段包含人类可读格式的属性

2

Password hash 根据 Posix 加密函数,它以编码形式包含密码

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

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

password hash 包括以下内容 −

  1. Encrypted saltencrypted salt 有助于维护屏幕锁、pin 和密码。

  2. Numerical user ID − 此字段表示用户 ID。Linux 内核将此用户 ID 分配给系统。

  3. Numerical group ID − 此字段引用用户的初级组。

  4. Home directory − 使用此目录的引用启动新进程。

  5. Command shell − 这个可选字段表示在成功登录系统后要启动的默认外壳。

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

使用 Python,所有这些信息都可以针对分析指标自动进行分析,重建最近的系统活动。通过实施 Linux Shell,追踪简单且容易。

Python Programming with Linux

Example

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

Output

密码以十六进制格式存储在 pass_db.txt 中,如下面的屏幕截图所示。文本文件已保存,以便在计算取证中进一步使用。

python forensics linux output