Python 取证 - Linux 中的 Python 取证

  • 简述

    数字调查的主要关注点是通过加密或任何其他格式保护重要的证据或数据。基本示例是存储密码。因此,有必要了解 Linux 操作系统在数字取证实施中的使用,以保护这些有价值的数据。
    所有本地用户的信息主要存储在以下两个文件中 -
    • /etc/passwd
    • 等/阴影
    第一个是强制性的,它存储所有密码。第二个文件是可选的,它存储有关本地用户的信息,包括散列密码。
    将密码信息存储在每个用户都可以读取的文件中的安全问题出现了问题。因此,哈希密码存储在/etc/passwd, 其中内容被一个特殊值替换"x”。
    必须在其中查找相应的哈希值/etc/shadow. 中的设置/etc/passwd可能会覆盖中的详细信息/etc/shadow.
    Linux 中的两个文本文件每行都包含一个条目,并且该条目由多个字段组成,以冒号分隔。
    的格式/etc/passwd如下 -
    序号 字段名称和描述
    1
    Username
    该字段由人类可读格式的属性组成
    2
    Password hash
    它由根据 Posix crypt 函数的编码形式的密码组成
    如果哈希密码保存为empty,则相应用户无需任何密码即可登录系统。如果此字段包含一个无法由哈希算法生成的值,例如感叹号,则用户无法使用密码登录。
    具有锁定密码的用户仍然可以使用其他身份验证机制登录,例如 SSH 密钥。如前所述,特殊值“x" 表示必须在影子文件中找到密码哈希。
    password hash包括以下内容 -
    • Encrypted salt- 的encrypted salt帮助维护屏幕锁定、密码和密码。
    • Numerical user ID− 该字段表示用户的ID。Linux 内核将此用户 ID 分配给系统。
    • Numerical group ID− 该字段是指用户的主要组。
    • Home directory− 新进程使用此目录的引用启动。
    • Command shell− 该可选字段表示成功登录系统后要启动的默认shell。
    数字取证包括收集与跟踪证据相关的信息。因此,用户 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 取证