【取证学习】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

完整实验截图:

恭喜完成!

相关推荐
JiMoKuangXiangQu7 小时前
Linux 内存 domain 管理
linux·内存管理·domain
●VON7 小时前
使用 OpenAgents 搭建基于智谱 GLM 的本地智能体(Agent)
学习·安全·制造·智能体·von
丝斯20117 小时前
AI学习笔记整理(45)——大模型数据读取技术与模型部署
人工智能·笔记·学习
warton887 小时前
ubuntu24下操作配置mysql8相关目录到指定地址
linux·运维·mysql
小亮亮虫7 小时前
linux-交叉编译链安装
linux
学Linux的语莫7 小时前
本地部署ollama
linux·服务器·langchain
mpHH7 小时前
postgresql 执行器中readme的翻译
数据库·学习·postgresql
`林中水滴`7 小时前
Linux系列:Linux 安装 MySQL 5.7.27 教程
linux·mysql
风送雨7 小时前
FastAPI 学习教程 · 第2部分
学习·fastapi
石像鬼₧魂石7 小时前
3306 端口(MySQL 数据库)渗透测试全流程学习总结
数据库·学习·mysql