排查/etc/cron.d/可疑定时任务,需检查文件名异常(如随机字符串、.hidden)、属主非root、权限非644、内容含curl/wget/base64/sh -c等高危命令,并验证其执行日志与关联进程。

排查 /etc/cron.d/ 目录下被植入的非标准定时任务,关键在于识别“不该存在”的文件或内容——这类任务常由攻击者利用提权漏洞写入,绕过用户级 crontab,隐蔽性强、权限高。
确认 cron.d 目录中是否存在可疑文件
/etc/cron.d/ 下的每个文件都会被系统级 cron 读取,无需用户干预。攻击者常在此处丢入命名伪装的文件(如 apache2、sysupdate、.hidden 或带随机字符串的文件),而非官方发行版自带的 0hourly(CentOS)或 anacron(Ubuntu)等。
- 列出所有文件并按修改时间排序:
ls -lt /etc/cron.d/,重点关注最近新增、名称异常、无扩展名或以点开头的文件 - 比对已知合法文件:RHEL/CentOS 通常只有
0hourly;Ubuntu/Debian 常见anacron、php(若装了 php-fpm);其他均为高风险项 - 检查文件属主和权限:
ls -l /etc/cron.d/—— 正常应为root:root且权限为644;若属主是普通用户或权限为666/755,极可能被篡改
逐个分析文件内容与执行逻辑
cron.d 文件格式比用户 crontab 多一列「用户名」,完整格式为:分 时 日 月 周 用户名 命令。攻击者常利用该机制以 root 权限静默执行恶意载荷。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 用
sudo cat /etc/cron.d/可疑文件名查看内容,注意是否包含:base64 编码命令、curl/wget 下载远程脚本、调用/tmp或/dev/shm中的可执行文件、执行sh -c "xxx"类动态构造命令 - 检查命令路径是否为绝对路径 —— 非绝对路径(如
python backup.py)在 cron.d 中会因环境缺失直接失败,若它却“能运行”,说明可能已预置了环境或用了 shell 注入技巧 - 留意注释行是否异常:攻击者有时在真实任务前后插入大量
#行混淆视听,但真正的任务行不会被注释(#必须独占一行才有效)
验证任务是否实际触发及行为痕迹
即使文件存在,也要确认它是否已被执行、执行后留下了什么线索。
- 查 cron 系统日志:运行
sudo journalctl -u crond --since "2 days ago" | grep -E "(CMD|/etc/cron.d)",看是否有对应文件中命令的执行记录(如CROND[12345]: (root) CMD (/path/to/mal.sh)) - 检查命令所调用的脚本或下载目标是否存在:
ls -la /tmp/*.sh /dev/shm/* 2>/dev/null;用file和strings初步判断可疑二进制是否含恶意特征 - 搜索关联进程和网络连接:
ps aux | grep -E "(mal|back|update)",再结合netstat -tunap | grep $(pgrep -f mal)看是否连出异常 IP
检查权限控制与加载机制是否被绕过
cron.d 的加载受系统级白名单/黑名单约束,攻击者可能先篡改这些控制文件来“合法化”恶意任务。
- 确认
/etc/cron.allow是否存在:若存在,只有其中列出的用户才能使用 cron(包括写 cron.d);若为空或不存在,则看/etc/cron.deny—— 若该文件包含root,反而会导致系统级任务失效,属于异常配置 - 检查 SELinux/AppArmor 状态:
sestatus或aa-status;若启用但策略被降级(如临时设为 permissive),可能为攻击者规避审计留下的痕迹 - 查看是否禁用了 cron.d 加载:某些加固脚本会注释掉
/etc/crontab中run-parts /etc/cron.d行,若该行被删或屏蔽,而又有文件出现在 cron.d 目录,则说明攻击者已恢复加载逻辑










