数字调查的主要问题是通过加密或任何其他格式保护重要证据或数据.基本示例是存储密码.因此,有必要了解用于数字取证实施的Linux操作系统的使用,以保护这些有价值的数据.
所有本地用户的信息大多存储在以下两个文件中 :
/etc/passwd
etc/shadow
第一个是必需的,它存储所有密码.第二个文件是可选的,它存储有关本地用户的信息,包括散列密码.
关于将密码信息存储在文件中的安全问题出现的问题,每个用户都可以读取.因此,散列密码存储在/etc/passwd 中,其中内容被特殊值" x "替换.
必须在/etc/shadow 中查找相应的哈希值. /etc/passwd 中的设置可能会覆盖/etc/shadow 中的详细信息.
Linux中的两个文本文件都包含一个每行的条目和条目由多个字段组成,以冒号分隔.
/etc/passwd 的格式如下 :
Sr.No. | 字段名称&描述 |
---|---|
1 | 用户名 此字段包含人类可读格式的属性 |
2 | 密码哈希 它包含根据Posix加密函数的编码形式的密码 |
如果哈希密码保存为空,那么相应的用户将不需要任何密码来记录进入系统.如果此字段包含无法通过哈希算法生成的值(例如感叹号),则用户无法使用密码登录.
密码锁定的用户仍然可以使用其他身份验证机制(例如,SSH密钥)登录.如前所述,特殊值" x "表示必须在影子文件中找到密码哈希.
密码哈希包括以下 :
加密盐 : 加密盐有助于维护屏幕锁,图钉和密码.
数字用户ID : 号;该字段表示用户的ID. Linux内核将此用户ID分配给系统.
数字组ID : 此字段指的是用户的主要组.
主目录 : 新进程以此目录的引用开始.
命令shell : 此可选字段表示成功登录系统后要启动的默认shell.
数字取证包括收集信息跟踪证据有关.因此,用户id在维护记录时非常有用.
使用Python,可以自动分析所有这些信息以获取分析指标,重建最近的系统活动.通过Linux Shell的实现,跟踪简单易行.
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 中的rmat,如以下屏幕截图所示.保存文本文件以便在计算取证中进一步使用.