应检查/etc/cron.*目录下隐藏文件、异常命名、伪造时间戳及非法权限的恶意任务,逐行分析内容中的可疑命令,并直读/var/spool/cron/等磁盘文件绕过rootkit劫持,结合进程树、日志和网络连接进行运行时验证。

检查 /etc/cron.d/ 等目录下被隐藏的恶意任务文件
直接用 ls -la 看不到全部——攻击者常给文件加点(.)前缀、用空格或不可见字符命名,甚至伪造时间戳来规避常规排查。重点不是“有没有文件”,而是“哪些文件不该存在”。
-
ls -la /etc/cron.d/ /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/:必须加-a,否则漏掉以.开头的隐藏任务 - 注意文件名是否异常:比如
.X11-unix、cron.123(末尾带空格)、$'\t'evil(含制表符),这些在ls中可能显示为乱码或截断 - 用
find /etc/cron* -type f -printf '%T@ %p\n' | sort -n按 change time 排序,新创建的陌生文件会浮到最上面(ctime难伪造) - 检查文件属主和权限:
stat /etc/cron.d/malware,合法任务文件应属root:root且权限为600或644;若属主是nobody或权限是777,基本可判定异常
识别 cron 任务内容里藏的后门命令
光看文件名没用,很多后门脚本会把恶意逻辑藏在一行命令里,比如下载并执行远程 payload、调用 /dev/shm 下的临时二进制、或用 base64 绕过检测。
- 逐个
cat或less查看任务内容,特别注意是否有:wget http、curl -s、sh -c "base64 -d、/dev/shm/、/tmp/.x、nohup /proc/self/fd/这类可疑片段 - 用
grep -r 'http\|ftp\|base64\|/dev/shm\|/tmp/\. ' /etc/cron.* 2>/dev/null快速筛出高危关键词(注意2>/dev/null屏蔽权限错误) - 警惕“看似正常”的任务:比如
0 2 * * * root /usr/bin/python3 /tmp/.logrotate.py——/tmp/下的脚本根本不在/etc/cron.*目录里,但任务本身是合法路径,只是执行目标不可信
绕过被 rootkit 替换的 crontab 命令查真实任务
如果系统已被文件级 rootkit 感染,crontab -l 或 crond 自带的检查可能被劫持,返回的是伪造结果。必须绕过命令行工具,直读磁盘数据。
- 普通用户任务存于
/var/spool/cron/(CentOS/RHEL)或/var/spool/cron/crontabs/(Debian/Ubuntu),用ls -la /var/spool/cron*查所有用户 crontab 文件,包括root和低权限账号(攻击者常混用) - 用
strings /var/spool/cron/root | grep -E 'http|/tmp|/dev/shm'提取可读字符串,避免被混淆编码干扰 - 检查
crond进程是否被替换:ls -l /usr/sbin/crond对比 md5sum(如已部署 aide/tripwire);若无基线,可用readelf -d /usr/sbin/crond | grep NEEDED看动态依赖是否异常(例如多出libhook.so)
确认 cron 任务是否正在执行恶意行为
静态扫描只能发现“写死”的后门,但有些任务会动态生成子进程、fork 内存马,或只在特定条件触发。得结合运行时痕迹交叉验证。
- 用
ps auxf | grep -E '(cron|CRON)' | grep -v grep看当前活跃的 cron 进程树,再顺着 PID 查它的子进程:ps --ppid - 检查 cron 日志:
grep CRON /var/log/syslog(Debian/Ubuntu)或grep CRON /var/log/messages(RHEL/CentOS),看最近是否有异常执行记录,比如失败重试、超长运行时间、非预期输出重定向 - 临时停掉 cron(
systemctl stop crond)后,用lsof -i :80,443或ss -tunp | grep ':80\|:443'查有没有残留的外连连接——某些后门会在 cron 执行完后,让子进程继续反连 C2
真正难搞的是那些不落盘、只在内存中解密执行的 cron 后门,或者利用 @reboot + /etc/rc.local 组合绕过 cron 目录检查的情况。这时候单靠扫 /etc/cron.* 就会漏掉关键入口。











