简介:EnCase 4.20 是一款专业的法证镜像与电子证据分析工具,主要面向司法鉴定、应急响应、安全合规审计等场景,帮助分析人员从各类操作系统的磁盘镜像中快速提取数据,并自动生成结构化取证报告,报告支持以 RTF 或 HTML 格式导出,便于归档、查阅和法庭举证。该工具内置多格式图片查看器,可浏览 ATR、BMP、GIF、JPG、PNG、TIFF 等图片证据;扩展时间标签能够记录文件的创建时间、最近访问时间与修改时间,从而构建完整的时间线,还原用户的可疑操作行为。文件系统兼容性突出,覆盖 Windows 平台的 FAT16/32 与 NTFS,苹果的 HFS/HFS+,Solaris 的 UFS,Linux 的 EXT2/3,以及 ReiserFS、BSD FFS、Palm、TiVo、AIX JFS、CDFS、Joliet、DVD、UDF、ISO 9660 等常见类型,并支持 RAID 磁盘阵列,可以从复杂存储环境中完整提取证据链。资源以 RAR 压缩包形式提供,大小约 18.64MB,轻量易用;目前已有 793 人学习下载。对于需要钻研镜像获取、时间戳分析和多文件系统解析的中高级安全从业者,这套资源具有很高的实用与学习价值。
1. EnCase 4.20 是取证工作台,不是“备份软件”
如果同事把一块刚拆下来的硬盘塞给你,让你“做个备份”,别用 Ghost 那套物理复制。改变访问时间还算小事,遇到带自毁逻辑的勒索组件时,一次错误挂载就能让镜像变成一堆死数据。EnCase 4.20 的核心不是拷贝磁盘,而是把磁盘封装成 E01 证据文件:每个块带 CRC 校验,整体带 SHA-1,后续所有分析都在这份闭合镜像上进行,原始盘可以当场封存。4.20 是很老的版本,但它奠定的 E01 结构和取证流程,今天仍被 libewf、sleuthkit 等工具兼容。理解它的封装和检索套路,等于看懂现代取证软件一半的底座。这篇文章写给事件响应、数据恢复和合规审计这三类人,也顺手填一下“老镜像在新系统上跑不动”的坑。
2. E01 证据文件格式与 EnCase 4.20 的部署前提
E01 是 EnCase 的产品格式,并不是一个透明扇区流。它把磁盘按固定块大小分片,在分片边界写入 CRC 值,并在文件头记录设备、取证人员、时间等信息。4.20 的 E01 与后来的 5.x、6.x 在文件头上略有差别,但核心的块校验逻辑一致,这也是为什么新工具在解析老镜像时仍然不看文件系统,只关注沿途的校准数据。下面先从格式的角度回答“为什么 E01 能当证据”。
2.1 为什么 E01 是“证据”而不是普通镜像
DD 镜像的问题在于缺少自我描述。你把一个 DD 镜像拷到另一个盘,再用 md5sum 比对,能证明拷贝一致,但无法证明当前镜像一定来自那块原始盘。E01 在压缩块之外,还会记录原始设备序列号、接口类型、采集软件名称和版本、采集时间,以及每块数据的 CRC32。取证人员拿到 E01 后,不必依赖外部数据库,就能核对该文件本身有没有碎片或改动。
2.1.1 镜像格式完整性能力对比
| 格式 | 扇区级拷贝 | 压缩 | 块级校验 | 设备信息 | 法律认可 |
|---|---|---|---|---|---|
| DD/Raw | 是 | 否 | 无 | 无 | 常见 |
| E01 | 是 | 有(可选) | CRC32 | 有 | 取证标准 |
| AFF | 是 | 有 | 多种 | 有 | 部分场景 |
从表里能看出来,DD 适合技术开发人员快速做数据恢复,但进入取证流程后,E01 仍然更稳妥。EnCase 4.20 默认生成 E01,而不是 DD,如果你在参数里选择了 Compression=0,它也是一个带完整头部和校验的 E01,只是没有压缩内容。
2.1.2 分卷与末尾校验的关系
在 4.20 时代,FAT32 是常见分区,单个文件超过 2 GB 会出问题,所以镜像会按 2 GB 或 1.5 GB 分卷。EnCase 4.20 在分段时,每个分卷自己携带一个头信息,分卷末尾还有总的哈希记录。即使中间某个分卷丢失,重新采集该分卷也可以继续后续的校验,而不是整个镜像作废。见到.E01、.E02这种命名,不要只读第一个文件,单独档的文件在逻辑上是连续的,完整校验入口是.E01。
2.2 在 Windows 10/11 上运行 EnCase 4.20 的兼容性处理
4.20 的安装包默认支持的是 Windows NT/2000/XP 时代,放到 Win10/11 上最常见的两个问题是“程序启动后白屏”和“无法加载设备访问驱动”。我一般先把主程序右键属性设为“Windows XP SP3”兼容模式,并勾选“以管理员身份运行”。如果安装目录在C:\Program Files下,还要注意 UAC 对虚拟化的干扰,建议把安装目录改到D:\EnCase4,减少权限路由。
2.2.1 软件只读脚本
物理磁盘接入后,Windows 会自动写入卷信息。对证据盘而言,这是可被质疑的改动。在需要临时固定证据的环境下,可以用 PowerShell 把整块物理盘标记为只读,然后再让 EnCase 4.20 进入预览:
# 将物理磁盘 2 设为只读(管理员权限运行) Get-Disk -Number 2 | Set-Disk -IsReadOnly $true # 输出确认结果 Get-Disk -Number 2 | Select-Object Number, IsReadOnly这段代码先通过Get-Disk获取当前机器的物理磁盘对象,管道传给Set-Disk -IsReadOnly,把磁盘的只读标志写进驱动。Get-Disk看到的Number是物理盘编号,不是分区盘符,需要与磁盘管理里的顺序对应,避免把系统盘弄成只读。Select-Object只是回显结果,用于确认设置成功。注意,这只保护操作系统层面,不保证所有写操作都失效——如果嫌疑固件本身存在自动写机制,写拦截器仍然必要。
2.2.2 设备驱动和旧版驱动签名校验
在部分 Win10 机器上,EnCase 4.20 会提示无法打开设备。常见原因是 4.20 自带的虚拟磁盘驱动没有通过 Windows 签名校验。两个绕过办法:一是安装兼容的驱动补丁,二是配置 EnCase 以Preview方式连接原始磁盘,而不是以Acquire方式直接打开。Preview方式不会创建卷句柄,和软件只读脚本配合,可以避开大部分权限问题。
2.3 硬件写拦截:证据固定不是“可选项”
无论使用什么软件,硬件写拦截器都是取证流程的首选。常见的取证底座驱动器会拦截 ATA 和 USB 总线上的写命令,让 EnCase 4.20 只能读,不能写。接法通常是:嫌疑盘 → 写拦截器 → 工作站;工作站上的 EnCase 4.20 看到的设备是只读的。没有硬件拦截器时,我一般只做一次试镜像,把结果记为“状态不可完全固定”,并明确标注“未使用硬件写保护”。这个细节在复核时容易被忽略,却在质询中非常致命。
3. 使用 EnCase 4.20 获取磁盘镜像的参数取舍
镜像参数直接影响后续所有分析,因为 E01 里记录的元数据和压缩方式是在采集时决定的,不是事后可改的。下面给出一个我常用的最小可靠流程,从 Case 目录、参数表、交叉验证三个角度展开。
3.1 会话创建与设备预检
3.1.1 创建 Case 目录树
EnCase 4.20 的 Case 是目录,不是单个数据库文件。我在采集前会用命令行把目录结构建好:
mkdir -p /srv/evidence/Case-20240501/{Data,Temp,Reports}在 Windows 主机上则是:
New-Item -ItemType Directory -Path D:\Case-20240501\Data,D:\Case-20240501\Temp,D:\Case-20240501\Reports这样做的原因是,EnCase 4.20 在某些精简安装里不会自动创建完整子目录,手动建好后能让路径更可控。Data放镜像,Temp放临时文件和缓存,Reports放导出结果。目录名里不要带中文和空格,旧版本在写报告时对长路径和中文路径支持不佳。
3.1.2 设备预览验证
打开 EnCase 4.20,新建 Case,填入案件编号后进入设备选择。先在预览窗口把物理盘和卷的映射记录下来,核对容量和序列号。关键点是:不要直接双击分区,而是先选择物理设备,再点预览,因为物理盘才包含未分配空间和删除文件的痕迹。如果界面上看不到设备,说明写拦截器未被识别,或者驱动层没有权限,回到上一节的兼容性处理。
3.2 镜像参数速查表
下面这张表是我在做同类镜像时使用的默认值,适合 SATA 机械盘和 SATA SSD。SSD 的话,不建议在 4.20 里做固件级安全擦除相关操作,直接做物理镜像即可。
| 参数 | 含义 | 推荐值 | 说明 |
|---|---|---|---|
| Evidence Number | 证据编号 | 如 20240501-001 | 会写入 E01 文件头 |
| Compression | 压缩级别 | 5 | 0 表示不压缩,7 压缩率最高,但 CPU 占用明显 |
| Split Size | 单卷大小 | 1.5 GB | 兼容 FAT32 与旧式文件系统 |
| Hash | 哈希算法 | SHA-1 | 4.20 也支持 MD5,但现代复核更常用 SHA-1 |
| Verify after write | 写入后验证 | 开启 | 自动把原始盘与镜像恢复后比较 |
| Linear | 线性读取 | 未选 | 关闭后按文件系统顺序读,速度快,但物理镜像建议勾选 |
参数里最值得解释的是Compression。EnCase 4.20 的压缩是基于块的,压缩后同样带有 CRC 校验,不会因为压缩而失去完整性。Split Size设为 1.5 GB 不是为了规避 NTFS 限制,而是为了配合传统 FAT32 存储。如果确定目标目录是 NTFS,并且不需要复制到网络存储,也可以设为 0,也就是不切分。Hash选 SHA-1 的同时,E01 内部仍会对每个块写 CRC32,所以最终结果是双层校验,这比单纯依赖文件系统日志可靠。
3.3 用外部命令行工具验证 E01
镜像完成后,我通常会用 libewf 套件在 Linux 工作站上再做一次交叉验证。EnCase 4.20 写出的 E01 可能在 Windows 上显示成功,但存储链路如果有一段经过网络,就需要独立的读取路径来复核。
# 读取 E01 文件头信息,确认分区数和校验状态 ewfinfo /srv/evidence/Case-20240501/evidence.E01 # 逐块验证 E01 内部 CRC,并根据需要计算 SHA-1 ewfverify /srv/evidence/Case-20240501/evidence.E01ewfinfo输出会列出文件版本、每卷字节数、块大小以及 CRC32 的状态;ewfverify则把 E01 当作虚拟设备重新读一遍,和内部存储的 CRC 对比,最后打印一个 0 或非零退出码。非零代表至少一个块校验失败,这时需要检查是采集端磁盘坏道还是网络传输错误。ewfverify不改变 E01 文件,只读访问,适合用来做第三方复核。
4. EnCase 4.20 的检索引擎与文件签名识别:三个能立刻用的技巧
拿到镜像后,EnCase 4.20 真正拉开差距的是检索效率。这里讲三个平时用得最多的能力基础:哈希集、关键字模板、文件签名。这些能力都不依赖外部分析软件,但我会在最后加一个和 The Sleuth Kit 联动的验证思路。
4.1 哈希集导入:NSRL 使用方法
NSRL 是美国国家软件参考库,里面带有大量操作系统和应用软件文件的哈希。EnCase 4.20 里可以在Hash Set Manager中导入 NSRL 数据集,分析时就能把“已知干净文件”和“未知文件”分开。导入后,我通常不勾选 Ignore Known,而是让这些文件都显示出来,但单独标记为已知文件。原因是补丁、配置和系统封装差异会让同版本系统文件哈希不一致,贸然忽略会产生误报。
需要注意的是,4.20 使用的哈希集文件可能和现代 NSRL 版本不完全兼容。如果导入失败,先把 NSRL 文件转为 EnCase 支持的.hash格式,再逐条导入。哈希集是用于筛选的,不负责证明文件类型,真正的类型判断要看文件签名。
4.2 关键字搜索:中文、十六进制与正则
EnCase 4.20 允许同时建立多个关键字条件,支持文本和十六进制两种形态。中文内容在不同编码下搜索结果差异很大。常见做法是建三个独立的搜索组:UTF-16 LE、UTF-16 BE、UTF-8。如果业务系统以 GB18030 编码存储,还要补一组内码搜索。很多人在这一步找不到结果,不是关键字写错,而是编码没选对。
| 搜索类型 | 示例值 | 用途 |
|---|---|---|
| Text | password123 | 明文密码 |
| Text + regex | [Pp]ass(word|wd)?[0-9]{0,4} | 变体口令 |
| Hex | 89 50 4E 47 | PNG 文件头 |
| Hex wildcard | FF D8 FF ?? ?? 00 10 | JPEG 文件头模糊匹配 |
正则搜索里,EnCase 4.20 对管道符和量词的支持比现代工具弱,建议把复杂正则拆成多个简单条件,否则搜索耗时成倍增加。十六进制搜索适合直接定位文件头,比如在未分配空间里找到一段可恢复的 JPEG 文件时,用FF D8 FF就能迅速圈定起点。
4.3 文件签名识别:不靠扩展名判断类型
扩展名可以被任意修改,文件签名则看头部字节。EnCase 4.20 内置的文件签名库会扫描每一个扇区,把已知类型的签名和扇区内容比对,对不匹配的文件标记为未知。由于 4.20 自带的签名库偏老,覆盖率有限,我会进一步把 E01 导出后用 The Sleuth Kit 做二次确认。
# 用 fls 列出 E01 中的目录结构,参数 -r 表示递归 fls -r -o 2048 /srv/evidence/Case-20240501/evidence.E01 # 提取指定 inode 对应文件到本地并交给 file 命令 icat -o 2048 /srv/evidence/Case-20240501/evidence.E01 2048 > /tmp/suspect.bin file /tmp/suspect.bin这里的-o 2048指定分区偏移量,单位是扇区,需要根据 E01 头里的分区偏移调整。fls -r列出的每个条目会带一个 inode 编号,icat通过这个编号直接读取文件内容。管道出来的数据交给file命令,file会读取文件头并识别真实类型。用这个流程,能发现“.jpg”实际是可执行程序的改名文件,也能找到被安全软件隔离的 PE 文件。文件头可以被伪造,也可能多签名重叠,所以这种双重签名识别的结果需要人工复核。
5. EnCase 4.20 报告生成与证据链完整性验证的细节操作
镜像、检索都做完后,最后一步是把结论固化成报告,并再次校验 E01。这里讲三个收尾动作:输出 CSV、处理双哈希不一致、处理 L01 与 E01 混用时的时区问题。
5.1 用 EnScript 输出最小化报告
EnCase 4.20 的 EnScript 环境可以遍历当前 Case 的证据文件,并生成 CSV 报告。以下是一个最小化的脚本片段,语法以 4.20 为准:
void Main() { foreach (Entry e in Selection) { String line = e.Filename + "," + e.FileSystem + "," + e.ModifiedTime; Output(line); } }这个脚本遍历所有选中的文件,把文件名、文件系统和修改时间用逗号拼成一行,再输出到屏幕或报告。Selection是 EnCase 当前选中的证据目录;ModifiedTime在不同时区下显示为系统本地时间,因此报告里要额外记录时区设置。如果只需要哈希值,改成e.SHA1Hash即可。EnScript 变量名区分大小写,写完直接在 EnScript 对话框里运行。
5.2 双哈希校验:CRC 与 SHA-1 不一致时怎么办
E01 的块级 CRC32 和整体 SHA-1 分别验证两个层面:块级 CRC 保证每个区块在读取中没有被改,SHA-1 保证整个镜像的摘要一致。如果ewfverify返回非零,而 SHA-1 却正确,基本上说明镜像内部的 CRC 表在写入时就已经损坏,原始盘可能不稳定。这时不要重新镜像,而是先让 EnCase 4.20 做一次写入后校验,把错误精确到卷和块偏移。若损坏集中在同一片区域,优先用硬件级镜像工具做坏道重读,再重新生成 E01。不要直接在原 E01 上打补丁,因为任何修改都会破坏总体哈希,导致证据链断开。
5.3 L01 与 E01 混用时的时区陷阱
L01 是 EnCase 的逻辑证据文件,只保存文件,不保存未分配空间。分析时经常把 L01 挂在 E01 的 Case 里,这时两条时间线可能相差 8 小时。原因在于 4.20 的ModifiedTime字段是文件系统记录的时间,不同卷时区不经过规范化就进入报告。解决方法是把原始机器地区和实际时区记录为元数据字段,并统一用 UTC 写报告。某些文件系统中 FILETIME 和 DOS 时间之间还存在日期窗口问题,这也只能在报告中通过时间偏移修正。这个细节很少写在操作手册里,但在做时间线分析时,它比任何搜索技巧都更能避免结论偏差。
本文还有配套的精品资源,点击获取