- Python 取证教程
- 家
- 介绍
- Python的安装
- Python概述
- 基本法医应用
- 哈希函数
- 破解加密
- 虚拟化
- 网络取证
- Python 模块
- Dshell 和 Scapy
- 搜寻中
- 索引
- Python 图像库
- 移动取证
- 网络时间协议
- 多处理支持
- 记忆与取证
- Linux 中的取证
- 妥协指标
- 云实施
- Python 取证有用资源
- Python 取证 - 快速指南
- Python 取证 - 有用的资源
- Python 取证 - 讨论
Linux 中的 Python 取证
数字调查的主要关注点是通过加密或任何其他格式保护重要证据或数据。基本示例是存储密码。因此,有必要了解 Linux 操作系统在数字取证实施中的使用,以保护这些有价值的数据。
所有本地用户的信息主要存储在以下两个文件中 -
- /etc/密码
- 等/阴影
第一个是强制性的,它存储所有密码。第二个文件是可选的,它存储有关本地用户的信息,包括哈希密码。
将密码信息存储在每个用户都可读的文件中的安全问题会出现问题。因此,散列密码存储在/etc/passwd中,其中内容被特殊值“ x ”替换。
必须在/etc/shadow中查找相应的哈希值。/etc/passwd中的设置可能会覆盖/etc/shadow中的详细信息。
Linux 中的两个文本文件每行都包含一个条目,并且该条目由多个字段组成,并用冒号分隔。
/etc/passwd的格式如下 -
先生。 | 字段名称和描述 |
---|---|
1 | 用户名 该字段由人类可读格式的属性组成 |
2 | 密码哈希 它由根据 Posix crypt 函数编码形式的密码组成 |
如果哈希密码保存为空,则相应的用户将不需要任何密码即可登录系统。如果该字段包含哈希算法无法生成的值(例如感叹号),则用户无法使用密码登录。
密码锁定的用户仍然可以使用其他身份验证机制(例如 SSH 密钥)登录。如前所述,特殊值“ x ”意味着必须在影子文件中找到密码散列。
密码哈希包括以下内容 -
加密盐-加密盐有助于维护屏幕锁、PIN 码和密码。
数字用户 ID - 该字段表示用户的 ID。Linux 内核将此用户 ID 分配给系统。
数字组 ID - 此字段指用户的主要组。
主目录- 新进程通过引用该目录启动。
命令 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中,如下图所示。保存文本文件以供计算取证进一步使用。