fls 与 bodyfile 的关系
fls 是 Sleuth Kit 里的文件系统目录列表工具,能遍历镜像中的目录项并输出文件名、inode 号与时间戳;加上 -m 参数后输出 bodyfile 兼容格式,交给 mactime 就能渲染成可读的文件系统时间线。它适合回答「某个目录下有哪些文件、各自是什么时候出现的」,是超级时间线之外最轻量的一条文件级线索来源。
基本信息
| 适用平台 | Linux/macOS 分析机(Sleuth Kit 套件) |
|---|---|
| 关键参数 | -r 递归、-m 挂载点前缀、-z 时区、-o 分区偏移(单位扇区) |
| 偏移换算 | 分区起始扇区 × 512 字节 = 字节偏移,用 mmls 查看起始扇区 |
| 产物 | bodyfile.txt(中间格式)与 mactime 渲染出的 CSV |
| 权限要求 | 只读打开镜像即可,不需要 root |
典型使用场景
- 从整盘快速筛出某目录下新增的可疑文件(Web 目录、/tmp、启动项)
- 补充日志缺口:日志被清理时,文件系统元数据仍可能留存
- 确认文件落地时间,与登录日志做先后关系判断
- 批量排查多个镜像里的同名文件或扩展名异常文件
- 为 mactime 或第三方时间线工具准备标准输入
生成与渲染
生成与渲染
# 先确认分区起始扇区,-o 用的是扇区数不是字节
mmls /evidence/disk.dd
# 递归列出并输出 bodyfile 格式,挂载点前缀写 /,时区用 UTC
fls -o 2048 -r -m "/" -z UTC /evidence/disk.dd > bodyfile.txt
wc -l bodyfile.txt # 行数即目录项数量
# 只列已被删除但仍可恢复的条目(-d),用于排查清理痕迹
fls -o 2048 -r -d -m "/" -z UTC /evidence/disk.dd | head -50
# 渲染时间线,-d 输出按日期分组的可读形式
mactime -b bodyfile.txt -z UTC -d > timeline.csvbodyfile 逐列读法
| 列 | 含义 | 判读要点 |
|---|---|---|
| MD5|name|inode|mode | 哈希占位、路径、inode、权限位 | fls 不计算哈希,该字段常为 0;权限位可看出是否可执行 |
| uid/gid/size | 属主、属组、文件大小 | uid 0 与系统账号外的属主值得单独列出 |
| atime/mtime/ctime/crtime | 访问、修改、元数据变更、创建时间 | 四个时间全为 0 常是文件系统不支持或条目为删除项 |
| (mactime 输出)Type | 该行对应哪类时间(macb) | 同一文件会出现多行,按类型分别读 |
-o 偏移写错会解析到分区表或空白区域,输出看起来「文件很少」。遇到结果异常先回头核对 mmls 的分区起始扇区,再重跑。
镜像为 E01 等封装格式时,先用 ewfmount 挂载出原始镜像再对 raw 文件操作;直接对封装文件用 fls 会失败。规则集与不同版本 Sleuth Kit 的参数支持略有差异,以 man 手册为准。