第一部分 基本概念第1章 计算机取证宗旨 3
1.1 引言 3
1.2 突显异常活动 4
1.3 易失性顺序 5
1.4 层与假象 7
1.5 信息的可信度 8
1.6 被删除信息的固化 10
1.7 数字考古学与地质学 11
第2章 时间机器 15
2.1 引言 15
2.2 故障的第一个特征 15
2.3 MAC时间介绍 16
2.4 MAC时间的局限性 18
2.5 Argus:情况变得更为复杂 19
2.6 淘金:在隐蔽的地方寻找时间信息 23
2.7 DNS和时间 25
2.8 日志文件系统和MAC时间 28
2.9 时间的缺陷 31
2.10 结论 32
第二部分 探讨系统抽象第3章 文件系统基础 35
3.1 引言 35
3.2 文件系统的字母表 35
3.3 UNIX文件组织结构 36
3.4 UNIX文件名 39
3.5 UNIX路径名 40
3.6 UNIX文件类型 41
3.6.1 普通文件 41
3.6.2 目录 41
3.6.3 符号链接 42
3.6.4 IPC(进程间通信)端点 42
3.6.5 设备文件 42
3.7 首次揭密——文件系统内部情况 43
3.8 UNIX文件系统布局 49
3.9 揭开秘密——深入探索文件系统 49
3.10 模糊区——隐藏在文件系统接口之下的威胁 51
3.11 结论 52
第4章 文件系统分析 53
4.1 引言 53
4.2 初次接触 53
4.3 准备分析被入侵的文件系统 54
4.4 捕获被入侵的文件系统信息 55
4.5 通过网络发送磁盘镜像 56
4.6 在分析的机器上挂载磁盘镜像 59
4.7 现存文件的MAC时间信息 61
4.8 现存文件的详细分析 63
4.9 掩盖现存文件分析 65
4.10 插曲:当一个文件被删除时,将会发生什么? 66
4.10.1 父目录项 67
4.10.2 父目录属性 68
4.10.3 索引节点块 68
4.10.4 数据块 68
4.11 被删除文件的MAC时间信息 69
4.12 被删除文件的详细分析 69
4.13 利用索引节点号发现异常文件 71
4.14 追踪一个被删除文件的原始位置 72
4.15 通过被删除文件的索引节点号来追踪被删除的文件 73
4.16 回到入侵的另外一个分支 74
4.17 丧失无辜 74
4.18 结论 76
第5章 系统与破坏 77
5.1 引言 77
5.2 标准计算机系统结构 78
5.3 UNIX系统从启动到关闭的生命周期 79
5.4 案例研究:系统启动的复杂性 80
5.5 内核配置机制 81
5.6 使用内核安全等级来保护计算机取证信息 83
5.7 典型的进程和系统状态工具 84
5.8 进程和系统状态工具是如何工作的 87
5.9 进程和系统状态工具的局限性 87
5.10 用rootkit软件进行破坏 89
5.11 命令级破坏 89
5.12 命令级的隐蔽和检测 90
5.13 库级破坏 93
5.14 内核级破坏 94
5.15 内核rootkit的安装 94
5.16 内核rootkit的操作 95
5.17 内核rootkit的检测与隐藏 97
5.18 结论 101
第6章 恶意攻击软件分析基础 103
6.1 引言 103
6.2 动态程序分析的危险 104
6.3 硬件虚拟机的程序限制 104
6.4 软件虚拟机的程序限制 105
6.5 软件虚拟机限制的危险性 106
6.6 Jails和chroot()的程序限制 107
6.7 系统调用监控程序的动态分析 109
6.8 系统调用审查程序的限制 111
6.9 系统调用哄骗程序的限制 114
6.10 系统调用限制的危险 116
6.11 库调用监控的动态分析 117
6.12 库调用程序的限制 117
6.13 库调用限制的危险 120
6.14 机器指令级的动态分析 120
6.15 静态分析与逆向工程 120
6.16 小程序存在许多问题 124
6.17 恶意攻击软件分析对策 124
6.18 结论 125
第三部分 超越抽象第7章 被删除文件信息的持久性 129
7.1 引言 129
7.2 被删除信息持久性举例 130
7.3 测量被删除文件内容的持久性 131
7.4 测量被删除文件MAC时间的持久性 132
7.5 被删除文件MAC时间的强力持久性 133
7.6 被删除文件MAC时间信息的长期持久性 136
7.7 用户活动对被删除文件的MAC时间信息的影响 138
7.8 被删除文件信息的可信度 139
7.9 为什么被删除文件信息能够保持不变 140
7.10 结论 142
第8章 超越进程 145
8.1 引言 145
8.2 虚拟内存的基础知识 146
8.3 内存页的基础知识 147
8.4 文件和内存页 148
8.5 匿名内存页 149
8.6 捕获内存 149
8.7 savecore命令 150
8.7.1 内存设备文件:/dev/mem和/dev/kmem 151
8.7.2 交换分区 152
8.7.3 其他存储单元 153
8.8 静态分析:从文件中识别内存 154
8.9 在无密钥的情况下恢复加密文件的内容 155
8.9.1 创建一个加密文件 155
8.9.2 从主存中恢复加密文件 155
8.10 文件系统块VS.内存分页技术 156
8.11 识别内存中的文件 158
8.12 动态分析:内存数据的持久性 159
8.13 内存中文件的持久性 161
8.14 非文件或匿名数据的持久性 163
8.15 交换分区的持久性 164
8.16 引导进程内存的持久性 164
8.17 内存数据的可信度和坚韧性 165
8.18 结论 167
附录A Coroner's工具包及其相关软件 169
附录B 数据收集和易失性顺序 175
参考文献 181