首页/安全/取证与溯源速查/文件归属与发行版来源判定
Linux 取证135 条

文件归属与发行版来源判定

用包管理器反查文件属于哪个软件包,可区分系统自带、第三方安装与手工投放,是给可疑文件定性的基础步骤。

取证与溯源速查安全更新于 2026-10-13

文件归属与来源判定

Linux 上的绝大多数二进制与配置文件来自软件包,包管理器保存了文件与包之间的对应关系。用 rpm -qf 或 dpkg -S 反查某个文件的归属,可以把文件分成三类:发行版自带、第三方仓库安装、以及不在包数据库中的手工投放文件。第三类最关键,因为手工投放往往意味着有人直接把文件写进了文件系统。rpm -Vf 与 debsums 还能进一步校验已安装包的文件是否被改动过。

基本信息

Debian 系dpkg -S <文件>,debsums 校验包内文件
RHEL 系rpm -qf <文件>,rpm -Vf <文件> 校验
无归属目录/usr/local、/opt、/tmp 通常不属于发行版包
注意包数据库本身被篡改时会给出错误答案

典型使用场景

  • 给可疑二进制定性:系统自带还是手工投放
  • 核查系统二进制是否被替换,校验摘要是否变化
  • 排查 /etc/cron.d 下新增任务文件的来源
  • 确认某个 agent 是随包安装还是临时放上去的
  • 为基线比对提供依据:哪些目录天然不由包管理覆盖

反查与校验

反查与校验
rpm -qf /usr/local/bin/agent 2>/dev/null || dpkg -S /usr/local/bin/agent 2>/dev/null   # 反查归属
rpm -Vf $(command -v curl) 2>/dev/null | head        # 校验包内文件是否被改动
dpkg -S /bin/ls 2>/dev/null                          # Debian 系反查示例
rpm -qf /etc/cron.d/backup 2>/dev/null || echo 'no owner'   # 无归属即为手工投放线索
rpm -Va 2>/dev/null | head -20                       # 全量校验,改动项排在前面

rpm -V 输出读法

标记含义判读要点
S文件大小变化二进制被替换的常见信号
M权限或文件类型变化提权类改动会体现在此
5内容摘要变化最能说明文件内容被改过
T修改时间变化与其他标记结合判断处置时间
/usr/local 与 /opt 下的文件通常不属于发行版包,反查会返回空结果,这属于正常现象;判断时要用部署记录与变更单解释来源,而不是直接判为异常。
容器镜像内往往没有包数据库,docker exec 进去执行反查会直接失败,此时改用镜像层的构建记录来确认文件来源。
若包数据库自身被篡改,rpm -qf 与 dpkg -S 都会给出被操纵的答案,涉及结论性判断时应与安装介质或官方仓库的哈希交叉验证。

易错点

  • 把 /usr/local 下的正常部署文件直接判为异常
  • 只反查归属不做内容校验,被替换的包内文件被漏掉
  • 在容器内做反查却按宿主机结论下判断
  • 忽略包数据库可信性,结论建立在被篡改的数据上

数据来源与参考

  • rpm 手册(rpm(8) -qf/-Vf)
  • dpkg 手册(dpkg -S)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌