为什么要只读挂载
对采集好的磁盘镜像做环回挂载时,必须固定只读选项,否则分析过程中系统可能自动更新访问时间、写入日志或修改超级块,证据完整性就毁了。做法是用 losetup -r 建立只读环回设备,再用 -o ro,noatime 挂载;镜像内通常是分区镜像,需要把分区起始扇区换算成字节偏移(起始扇区 × 512)。挂载后的第一件事是确认挂载选项确实包含 ro,再开始浏览。
基本信息
| 适用平台 | Linux 分析环境(util-linux 的 losetup/mount) |
|---|---|
| 建立设备 | losetup -r -f --show /evidence/disk.dd 输出只读环回设备名 |
| 挂载选项 | -o ro,noatime,有分区时追加 offset=起始扇区*512 |
| 偏移获取 | fdisk -l 或 mmls 查看分区起始扇区 |
| 收尾动作 | 先 umount 再 losetup -d,避免设备残留 |
典型使用场景
- 浏览镜像内文件系统内容,导出需要进一步分析的文件
- 在镜像上运行取证工具做文件系统级解析
- 核对文件是否存在、目录结构是否与访谈相符
- 为后续提取配置文件与日志提供便利,避免反复解包镜像
- 确认镜像中的分区布局,作为进一步分卷分析的依据
只读挂载流程
只读挂载流程
# 0) 先看分区布局,拿到起始扇区(示例:2048)
mmls /evidence/disk.dd | head
# 1) 建立只读环回设备
sudo losetup -r -f --show /evidence/disk.dd
# 2) 按偏移挂载,务必带上 ro 与 noatime
sudo mount -o ro,noatime,offset=$((2048*512)) /dev/loop0 /mnt/img
# 3) 验证挂载选项(必须能看到 ro)
mount | grep /mnt/img
# 4) 浏览与导出需要的文件
ls /mnt/img; cp /mnt/img/etc/hosts /case/out/
# 5) 收尾:先卸载再释放设备
sudo umount /mnt/img && sudo losetup -d /dev/loop0步骤与要点
| 步骤 | 命令 | 要点 |
|---|---|---|
| 查看分区 | mmls / fdisk -l | 记录起始扇区,避免偏移算错挂错分区 |
| 建立设备 | losetup -r -f --show | -r 表示只读,缺了它后续挂载仍可能写回 |
| 挂载 | mount -o ro,noatime,offset=… | noatime 防止读取动作更新访问时间 |
| 验证 | mount | grep 挂载点 | 确认 ro 生效,发现异常立即卸载重来 |
| 卸载 | umount + losetup -d | 顺序不能反,残留设备会干扰后续挂载 |
用 mount -o loop,offset=…,ro 一步挂载也可以,核心是 ro 与偏移正确;但分两步的好处是能明确看到设备是否为只读,便于排查。
不要在挂载点内执行包管理器、索引或任何批量改写操作。凡是要在原盘结构上写入的分析,都应改为先把文件导出到工作目录再处理。