【取证学习】Linux系统的证据收集和分析 解决dd备份磁盘爆掉

目录

一、实验目的

二、实验内容

三.实验仪器及器材

四、实验步骤


一、实验目的

掌握 Linux 系统下使用 dd 进行磁盘镜像备份与恢复的核心技术

熟悉取证分析中文件删除后的数据恢复流程

理解 ext2 文件系统中 inode 与数据块的关联机制。

二、实验内容

磁盘镜像构建与备份

dd 创建 100MB 虚拟磁盘镜像,格式化为 ext2 文件系统,写入测试文件 hello.txt 并记录其 inode 号。

通过 dd 整盘备份并实时压缩,验证压缩率;解压后恢复镜像。

取证场景模拟

删除测试文件 hello.txt ,制造"已删除文件"取证场景。

数据恢复验证

使用 debugfs 分析镜像,定位已删除文件的 inode (如 12 号记录),导出数据块(如 block 265 ),成功恢复 hello.txt

. 实验仪器及器材

VMware Ubuntu 20.04

四、实验步骤

首先要明确压缩、解压文件需要空间,我的虚拟机数据是放在D盘,我首先查看D盘还剩多少空间,还剩一百多个G

接着打开ubuntu 的终端,查看磁盘整体使用情况

bash 复制代码
 df -h
  • 根分区 / 只用了 5%,还有 196G 可用;

  • /home 几乎为空(113M / 265G);

  • 只有 /boot 用了 83%,但 44M 剩余也足够。

查看磁盘

bash 复制代码
lsblk
  • 只有一块物理盘 /dev/sda 500 G

  • 分区情况

    • /dev/sda1 220.6 G → 系统根分区 /

    • /dev/sda2 286 M → /boot

    • /dev/sda3 9 G → 交换分区

    • /dev/sda4 270.1 G → /home(几乎空,仅 113 M 已用)

备份 /dev/sda4/home),但因为实际物理机我只剩一百多个G,所以我根本到时候压缩这个盘之后解压没有那么多空间可以放。所以进行以下方案:
创建工作目录

mkdir -p ~/dd-lab && cd ~/dd-lab

造 100 M 空盘
dd if=/dev/zero of=disk-100M.img bs=1M count=100

2. 格式化成「最简 ext2」并指定 1 KiB 块大小(方便小 block 号)
bash 复制代码
sudo mkfs.ext2 -b 1024 -O ^extent,^dir_index,^sparse_super,^resize_inode disk-100M.img
只写一次文件 → 立即只读卸载
bash 复制代码
sudo mount -o loop disk-100M.img /mnt
echo "Hello DD+GZIP+DebugFS" | sudo tee /mnt/hello.txt
sudo umount /mnt           # 关键:卸载后内核不会再动数据
用 debugfs 内部删除(不触内核回收)
bash 复制代码
sudo debugfs -w disk-100M.img
debugfs:  rm /hello.txt
debugfs:  quit
立刻 dd + gzip 备份(不再挂载!)
bash 复制代码
dd if=disk-100M.img bs=1M status=progress | gzip > disk.gz
解压成恢复镜像
bash 复制代码
gunzip -c disk.gz > disk-restored.img
找回 inode & block 号
bash 复制代码
sudo debugfs disk-restored.img
debugfs:  lsdel

我这里是12

按 q退出,继续在debugfs界面下输入:注意有空格

bash 复制代码
debugfs:  stat <12>

记下 BLOCKS

我这里是265,记得替换成你们的

输入q退出debugfs界面,回到终端

导出真实数据(开始恢复文件)
bash 复制代码
sudo dd if=disk-restored.img of=recovered.txt bs=1024 count=1 skip=XXX

skip后面的xxx为实际的上一步的BLOCKS,比如我的就是265

查看回复的文件内容

bash 复制代码
head -c 22 recovered.txt

确实没错

清理(可选)
bash 复制代码
cd ~ && rm -rf ~/dd-lab

完整实验截图:

恭喜完成!

相关推荐
xexpertS11 小时前
CI/CD 熔断机制:如何通过编排级熔断器提升开发者效率
java·linux·运维
泰勒朗斯11 小时前
Helicopter FBI-405尾电机版本设置
学习
带娃的IT创业者11 小时前
突破内存瓶颈:利用 Nvidia GPU 显存作为 Linux Swap 空间的深度实践
linux·运维·服务器·nvidia·swap·gpu显存
zy happy12 小时前
VMware虚拟机添加新的硬盘
java·linux·jvm·docker
LCG元12 小时前
嵌入式开发踩坑排查实战:从 STM32 外设初始化到 Linux SPI 驱动的 15 类硬件疑难故障深度复盘
linux·stm32·单片机
FoldWinCard12 小时前
云原生 --- lvs
运维·服务器·lvs
代码AC不AC12 小时前
【Linux】Socket编程TCP
linux·tcp·socket编程
扛枪的书生12 小时前
SeaweedFS 学习总结
linux
minglie112 小时前
香橙派zero3配个iic屏显示ip
linux·学习
MXsoft61812 小时前
成熟的自动化运维平台是什么样的?
运维·数据库·自动化