首页/安全/取证与溯源速查/计划任务文件时间与一致性核对
Linux 取证135 条

计划任务文件时间与一致性核对

对 crontab 与 cron.d 文件做时间戳盘点,可快速缩小“何时被加入”的窗口,并与 auth 日志、文件监视记录交叉定位改写者。

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

用时间戳缩小植入窗口

计划任务文件本身不带「谁在什么时候写的」这类信息,但它的修改时间可以快速把范围缩小:把 /etc/cron.d/、/etc/cron.daily/ 以及用户 crontab 目录下所有文件的 mtime 排一次序,落在事件窗口内的那几个文件就是重点,再与认证日志、文件监视记录交叉,就能定位到改写者。

先排除自动化来源

crontab 文件被改写未必意味着入侵:配置管理工具、软件包升级、部署脚本都会周期性重写它们。判定前先确认该主机是否处于自动化管理之下,把这类写入排除掉;剩下的改动才需要用审计记录去追。

基本信息

适用平台Linux(cron、anacron 的实现)
关键路径/etc/crontab、/etc/cron.d/、/etc/cron.daily 等、/var/spool/cron/crontabs/
命令stat、find -newermt、ls -lt --time-style=long-iso
辅助手段auditd 对 crontab 路径设置监视规则
注意mtime 只表示写入时刻,不等于任务开始运行的时刻

典型使用场景

  • 发现可疑定时任务:先按 mtime 判断它是什么时候被加进来的
  • 缩小调查范围:把多主机上的 cron 文件时间汇总排序,找共同时间点
  • 验证处置效果:清除恶意任务后确认文件时间不再变化
  • 比对部署节奏:区分配置管理写入与人工写入
  • 建立基线:正常环境下记录各文件的期望时间,异常时一眼可见

盘点时间戳

盘点时间戳
# 列出所有计划任务文件的时间戳
stat -c '%n | mtime=%y | ctime=%z' /var/spool/cron/crontabs/* /etc/cron.d/* 2>/dev/null

# 找出事件窗口内被修改过的文件
find /etc/cron.d /etc/cron.daily /var/spool/cron -newermt '2026-01-01' -type f 2>/dev/null

# 按时间排序,最新的排在最前
ls -lt --time-style=long-iso /etc/cron.d/ /var/spool/cron/crontabs/ 2>/dev/null | head -20

# 有审计子系统时直接查谁改过这些路径
ausearch -f /etc/cron.d -ts recent 2>/dev/null | tail -20

时间字段读法

字段含义分析用法
mtime内容最后修改时刻判断任务被加入的大致时间
ctimeinode 属性变更时刻权限或属主调整也会更新它
atime最后访问时刻受挂载选项影响,参考价值有限
文件属主文件归属账号异常属主本身即线索
权限位可执行与可读范围过宽的权限便于植入
auditd 对 crontab 路径设置 -w 监视后,可直接得到写入者账号、进程与精确时间;前提是监视规则在事件发生前就已生效。
不同发行版存放用户 crontab 的路径不同(Debian 系 /var/spool/cron/crontabs,RHEL 系 /var/spool/cron),排查时两个路径都要看。

易错点

  • 只看 /etc/crontab:用户级与 cron.d 里的任务同样重要,容易漏掉
  • 把自动化写入当入侵:未排除配置管理工具会造成误判
  • 用 mtime 推断任务运行时刻:写入时间与执行时间是两件事
  • 分析前用会改写时间的工具打开文件:atime 变化,甚至被编辑器改写内容
  • 忽略权限与属主:异常的属主与过宽权限本身就是植入线索

数据来源与参考

  • man 1 stat(GNU coreutils)
  • man 1 find(GNU findutils)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌